스레드
프로세스와 스레드의 차이
- 프로세스
: 각 독립된 메모리 영역 (code, data, stack, heap)를 할당 받음
: 각 프로세스는 별도의 주소 공간에서 실행되며, 다른 프로세스의 변수나 자료구조에 접근 불가
: 다른 프로세스와 메모리 공간을 공유하지 않음
=> 다른 프로세스의 자원에 접근하기 위해서는 파이프, 파일, 소켓 등을 이용한 프로세스 간 통신(IPC)를 이용
- 스레드
: 프로세스 내에서 Stack만 따로 할당 받고 code, data, heap 영역을 다른 스레드와 공유
=> 한 프로세스 내의 스레드 끼리 메모리 공유
: 각 스레드는 별도의 레지스터와 스택을 갖고 있으나, heap 메모리는 서로 읽고 쓸 수 있음
: 한 스레드의 자원 변경시, 다른 스레드가 변경 결과를 볼 수 있음
멀티 프로세싱 (Multi-Processing)
- 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업(task)를 처리하는 것
- 장점
: 여러개의 자식 프로세스 중 하나에 문제 발생시 작업에 대한 영향이 적음
=> 자식 프로세스만 종료되기 때문
- 단점
: 문맥교환의 오버헤드 발생
: IPC를 이용한 복잡한 변수공유
멀티 스레딩 (Multi-Threading)
- 하나의 프로그램을 여러개의 스레드로 구성하여 각 스레드로 하나의 작업(task)를 처리하는 것
=> 윈도우, 리눅스 등 많은 운영체제에서 멀티 스레딩을 기본으로 멀티 프로세싱을 지원
=> 대표적인 예 : 웹 서버
- 장점
: 시스템 자원 효율성 증대
=> 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들기 때문
: 시스템 처리량 증가
=> 프로세스 보다 데이터 교환이 간단하기 때문 (스레드에서는 문맥교환에서 Stack영역만 필요)
: 통신의 간편함
=> 프로세스 내의 Stack영역을 제외한 모든 메모리를 공유하기 때문
- 단점
: 하나의 스레드에 문제 발생시 전체 프로세스에 영향
=> 메모리 공간을 공유하기 때문
'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 |