320x100
320x100

스레드

프로세스와 스레드의 차이

- 프로세스 

 : 각 독립된 메모리 영역 (code, data, stack, heap)를 할당 받음

 : 각 프로세스는 별도의 주소 공간에서 실행되며, 다른 프로세스의 변수나 자료구조에 접근 불가

 : 다른 프로세스와 메모리 공간을 공유하지 않음

   => 다른 프로세스의 자원에 접근하기 위해서는 파이프, 파일, 소켓 등을 이용한 프로세스 간 통신(IPC)를 이용

출처 : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

 

- 스레드

 : 프로세스 내에서 Stack만 따로 할당 받고 code, data, heap 영역을 다른 스레드와 공유

   => 한 프로세스 내의 스레드 끼리 메모리 공유

 : 각 스레드는 별도의 레지스터와 스택을 갖고 있으나, heap 메모리는 서로 읽고 쓸 수 있음

 : 한 스레드의 자원 변경시, 다른 스레드가 변경 결과를 볼 수 있음

출처 : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

 

 

 

멀티 프로세싱 (Multi-Processing)

- 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업(task)를 처리하는 것

 

- 장점

 : 여러개의 자식 프로세스 중 하나에 문제 발생시 작업에 대한 영향이 적음 

   => 자식 프로세스만 종료되기 때문

- 단점

 : 문맥교환의 오버헤드 발생

 : IPC를 이용한 복잡한 변수공유

 

 

 

 

멀티 스레딩 (Multi-Threading)

- 하나의 프로그램을 여러개의 스레드로 구성하여 각 스레드로 하나의 작업(task)를 처리하는 것

 => 윈도우, 리눅스 등 많은 운영체제에서 멀티 스레딩을 기본으로 멀티 프로세싱을 지원

 => 대표적인 예 : 웹 서버

 

- 장점

 : 시스템 자원 효율성 증대

   => 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들기 때문

 : 시스템 처리량 증가

   => 프로세스 보다 데이터 교환이 간단하기 때문 (스레드에서는 문맥교환에서 Stack영역만 필요)

 : 통신의 간편함

   => 프로세스 내의 Stack영역을 제외한 모든 메모리를 공유하기 때문

 

- 단점

 : 하나의 스레드에 문제 발생시 전체 프로세스에 영향

   => 메모리 공간을 공유하기 때문

 

출처 : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

 

300x250
728x90

'Computer Science > OS' 카테고리의 다른 글

CPU의 구조와 명령어 수행 과정  (0) 2021.02.05
프로세스와 운영체제  (0) 2021.02.03
프로세스와 메모리  (0) 2021.02.03
프로세스와 CPU  (0) 2021.02.03
프로세스  (0) 2021.01.19