어흥
[운영체제] Thread v.s Process 본문
728x90
반응형
1. Process
- 정의: 실행중인 프로그램
- 각각 독립된 메모리 영역을 할당 받는다 (Code, Data, Heap, Stack)
- 타 프로세스와 통신하기 위해선 프로세스간 통신(IPC: Inter Process Communication)이 필요하다
Message Passing |
Shared Memory |
커널이 중재, 데이터 저장 및 읽는다 | 공유 메모리를 두고 같이 사용 |
동기화 필요 없다 | 성능이 좋다 |
성능이 떨어진다 | 동기화 필요 - 동시에 메모리 접근 - 메모리 저장 전에 읽으려는 경우 |
- 최소 1개의 Thread를 가진다
- 고유한 프로세스 블록 PCB(Process Control Block)을 가진다
2. Thread
- 프로세스의(일) 실행 단위
- 각각의 스레드는 서로 다른일을 수행 → 고유의 Stack + Code, Data, Heap은 공유!
- Thread: Thread Id, 프로그램 카운터(PC), 레지스터 집합, 스택으로 구성
3. 멀티 프로세스 v.s 멀티 스레드
Multi Process | Multi Thread |
1개의 프로그램 → N개의 프로세스가 처리 각 프로세스는 각각의 일을 처리 |
1개의 프로그램 → N개의 쓰레드로 구성 각 스레드가 각각의 일을 처리 |
한 프로세스가 잘못되어도 다른 프로세스에 영향을 끼치지 않는다 |
메모리 공간 + 시스템 자원 소모 감소 - Thread간 공유 변수 공유(Heap, 전역 변수) - Context Switching이 빠르다 |
Context Switching이 느리다 : 독립된 메모리 영역으로 인해 초기화 요구되기 때문 |
자원 공유의 문제 발생 한 프로세스가 잘못되면 프로그램이 잘못된다 |
4. (면접 단골 질문) 크롬의 탭은 프로세스일까? 쓰레드일까?
- 탭은 고유의 프로세스 아이디를 가지고 있다
- 각각의 탭은 서로에게 영향을 끼치지 않는다
→ 탭은 프로세스다
728x90
반응형
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 스케줄러 (Scheduler) (2) | 2021.03.23 |
---|---|
[CS] 운영체제 - 인터럽트 (0) | 2020.10.16 |
Comments