프로세스의 개념
Process State 프로세스의 상태 (1)
Running
= CPU를 잡고 instruction을 수행중인 상태
PC, register가 process A의 context 로 채워짐
Ready
= CPU를 기다리는 상태
memory 등 다른 조건은 모두 만족
Blocked = Wait = Sleep
Process 자신이 요청한 event가 즉시 만족되지 않아 이를 기다리는 상태 (I/O)
Suspended(Stopped)
.
New
= Process가 생성 중인 상태
Terminated
= 수행(execution)이 끝나고 정리할게 남아있는 상태
Queue라는 것은 OS kernal data 영역에 자료구조로 queue를 만들어두고,
process의 상태를 바꿔가면서 ready 상태에 있는 process에게 CPU를 주는 것으로 운영
프로세스 상태도 (1)
PCB (Process Control Block)
PCB
(1) OS가 관리상 사용하는 정보
(2) CPU 수행 관련 HW 값
(3) 메모리 관련
(4) 파일 관련
Context Switch 문맥 교환
Context Switch = CPU를 한 process 에서 다른 process로 넘겨주는 과정
1. CPU를 내어주는 process의 상태를 process PCB에 저장
2. CPU를 새롭게 얻는 process의 상태를 PCB에서 읽어옴
Cache memory flush = context switch시, cache memory 전부 지워야 한다
프로세스를 스케줄링하기 위한 큐
프로세스들은 각 큐를 오가며 수행된다
Job queue
= 현재 system 내에 있는 모든 process의 집합 (리스트)
Ready queue
= 현재 memory 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 process의 집합
device queue
= I/O device 처리를 기다리는 process의 집합
Scheduler 스케줄러
Long-term scheduler = job scheduler = 장기 스케줄러
Short-term scheduler = CPU scheduler = 단기 스케줄러
Medium-term scheduler = Swapper = 중기 스케줄러
Process State 프로세스의 상태 (2)
Blocked : 자신이 요청한 event가 만족되면 -> Ready
Suspended : 외부에서 resume 해주어야 -> Active
프로세스 상태도 (2)
Thread
Process 내부에 CPU 수행단위가 여러 개 있는 경우
Thread 의 구성
task = hread 가 동료 Thread와 공유하는 부분
Benefits of Threads
Responsiveness 응답성, 반응성
eg) multi-threaded Web
Resource Sharing 자원 공유
process의 binary code, data, resource를 공유
Economy 경제성
새로운 process를 만드는 것보다, thread를 만드는 것이 비용이 훨씬 적게 든다
overhead도 적다
Ultilization of MP artitectures
GPU, parallel 병렬성을 높일 수 있다
Implemetation of Threads
Kernal Threads
: Kernal이 process가 multi-threads 인 것을 안다
thread switch (like context switch)를 지원
User Threads
: library를 통해서 구현
user program이 thread를 스스로 관리 kernal은 process가 1개의 thread라고 알고 있다
Real-time threads