어흥

[운영체제] Thread v.s Process 본문

CS/운영체제

[운영체제] Thread v.s Process

라이언납시오 2021. 3. 23. 19:15
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