프로세스와 스레드
프로세스(Process)란
컴퓨터에서 연속적으로 실행되고있는 컴퓨터 프로그램.
어떤 프로그램이 실행되면 운영체제가 해당 프로그램에게 메모리를 할당해주며 프로그램이 실행된다.
이 때 메모리에 올라와 실행되고있는 프로그램의 인스턴스를 프로세스라고 한다.
운영체제로부터 시스템 자원을 할당받는 작업의 단위이다.
프로세스는 데이터, 컴퓨터자원(시스템자원), 스레드로 구성된다.
스레드가 한 개인 프로세스를 싱글 스레드 프로세스, 여러개인 프로세스를 멀티 스레드 프로세스라고 한다.
스레드(Thread)란
스레드는 프로세스 내에서 프로그램이 할당받은 자원과 데이터를 통해 코드를 실행하는 하나의 작업흐름이다.
하나의 프로세스가 멀티스레드를 지원하면 동시에 여러 작업을 할 수 있다.
프로세스와 스레드의 차이
프로세스는 다른 프로세스와 각각 독립된 메모리 영역을 할당받기 때문에 서로 다른 프로세스의 변수나 자료에 접근할 수 없다.
그러나 스레드는 메모리를 공유할 수 있다.
여러 프로세스를 동시에 실행하는 멀티 태스킹과 여러 스레드를 동시에 실행하는 멀티 스레드를 비교해보면
앞에서 얘기한 메모리 공유차이로 인해
멀티 스레드는 메모리자원을 더 아낄 수 있고 응답시간이 더 빠르다는 장점이 있지만
메모리를 공유하기 때문에 다른 스레드와 동기화 문제가 발생하여 충돌이 일어나면
모든 프로세스가 종료될 수 있는 단점도 있다.
'공부 일지 > CS공부' 카테고리의 다른 글
웹소켓과 SSE (0) | 2023.02.11 |
---|---|
TDD 방법론(Test-Driven-Development) (0) | 2023.01.31 |
TCP/IP 4계층 모델 (0) | 2022.12.24 |
네트워크 기초 (0) | 2022.12.20 |
프로그래밍 패러다임 (0) | 2022.12.19 |