728x90
반응형
SMALL
Process와 Thread에 대한 정리(+멀티프로세스, 멀티스레드)
Process
운영체제로 부터 시스템 자원을 할당받는 작업의 단위
* 시스템 자원 : 독립된 메모리 영역(Code, Data, Stack, Heap)

- 기본적으로 1개의 스레드 보유
- 각 프로세스는 별도의 주소공간에서 실행되고 프로세스간 변수, 자료구조에 접근할 수 없음
- 다른 프로세스의 자원에 접근하려면 프로세스간 통신필요
Thread
프로세스가 할당받은 자원을 이용하는 실행의 단위

- 스레드는 프로세스내에서 각각 Stack만 따로 할당 받고, 나머지 자원 공유
- 각각의 스레드는 레지스터, 힙을 별도로 보유하고 힙 메모리를 서로 읽고 쓸 수 있음
컨텍스트 스위칭(Context Switching)
CPU에서 여러 프로세스를 돌아가며 작업을 처리하는 과정
- CPU가 하나인 시스템에서 둘 이상의 프로세스를 실행할때, 프로세스들은 CPU의 할당 시간을 매우 작은 단위로 쪼개 씀
- 메인 메모리에 하나의 프로세스를 올리고 다른 프로세스를 올리고 내리는 과정에서 컨텍스트 스위칭이 이루어짐
멀티 프로세스(Multi Process)
하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업(task)을 처리하게 하는것
- 하나의 프로세스가 잘못되어도 프로그램이 동작함
- Context Switching 비용 발생
멀티 스레드(Multi Thread)
프로그램을 여러개의 스레드로 구성하고 각 스레드가 작업을 처리하는것
- 시스템 자원 소모 감소(프로세스를 생성하고 자원을 할당하는 시스템 콜 줄어듬)
- 처리 비용 감소(실행 속도 향상)
- Stack 제외 모든 메모리를 공유하므로 통신부담 줄어듬
- 디버깅이 어렵고, 동기화 이슈 발생
- 하나의 스레드 오류로 전체 프로세스 오류 발생
728x90
반응형
LIST
'OS > All' 카테고리의 다른 글
[OS] 뮤텍스(Mutex) & 세마포어(Semaphore) (0) | 2023.09.16 |
---|---|
[OS] 메모리 구조(stack, heap) (0) | 2023.09.08 |
[OS] 빅 엔디안 & 리틀 엔디안 (0) | 2023.09.05 |
[ETC] CRLF / LF /CR (0) | 2023.07.21 |