프로세스
프로세스 개념
컴퓨터에서 실행중인 프로그램을 말하고 OS로부터 시스템 자원을 할당 받는 작업의 단위입니다.
시스템 자원
- CPU 시간
- 독립된 메모리 영역
- code
- data
- heap
- stack
프로세스 상태
Running
- cpu를 잡고 instruction을 수행중인 상태
Ready
- cpu를 기다리는 상태(메모리 등 다른 조건을 모두 만족하고 언제든 cpu를 받으면 Running 할 수 있는 상태)
Blocked
- cpu를 주어도 당장 instruction을 수행할 수 없는 상태
- 프로세스 자신이 요청한 이벤트(예: I/O)가 즉시 만족되지 않아 이를 기다리는 상태
- ex) 디스크에서 file을 읽어와야 하는 경우
(추가)
New
- 프로세스가 수행중인 상태
Terminated
- 수행이 끝난 상태(종료중인 상태)
프로세스 제어 블록(PCB)
운영체제가 각 프로세스를 리하기 위해 프로세스당 유지하는 정보
스레드
스레드 개념
프로세스 내에서 실행되는 여러 흐름의 단위로 프로세스 내의 자원을 공유하고 고유한 stack만을 각자 할당 받습니다.
스레드의 구조
- program counter
- register set
- stack space
멀티 프로세스 VS 멀티 스레드
공유하는 자원의 유무에 따라서 차이가 생깁니다.
멀티 프로세스는 프로세스마다 공유하는 자원이 없기 때문에 서로 독립적이라 동기화 문제가 없다는 장점이 있지만, context switch에 많은 비용이 든다는 단점이 있습니다.
멀티 쓰레드는 stack을 제외하고 프로세스의 자원을 공유하기 때문에 context switch에 적은 비용이 들지만, 공유하는 자원 때문에 동기화 문제가 생길 수 있다는 단점이 있습니다.
Context Switch
개념
cpu를 한 프로세스에서 다른 프로세스로 넘겨주는 과정에서
현재 진행중인 Task(프로세스, 스레드)의 상태를 PCB에 저장하고
다음에 진행할 Task의 상태값을 읽어 적용하는 과정
과정
- cpu를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장한다.
- cpu를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어온다.
'Computer Science > Operating System' 카테고리의 다른 글
데드락 (0) | 2024.04.16 |
---|---|
세마포어, 뮤텍스 (0) | 2024.04.16 |
race condition, critical section (0) | 2024.04.16 |
CPU 스케쥴링 (1) | 2024.04.16 |
커널과 쉘 (0) | 2024.04.16 |