- CPU 활용도를 극대화하기 위해 process scheduling을 한다.
- process scheduling 대기열 관리
1. Job queue : 시스템 전체의 process들을 저장하는 queue
2. Ready queue : Main Memory에 저장되어 CPU에 실행되기 위해 기다리는 queue
3. Device queue : I/O process를 저장하기 위한 queue
- Queueing diagram ppt 3쪽
Scheduler 종류
1. Long-term scheduler (or Job Scheduler)
- 수행해야 할 잡 풀(job pool)로부터 프로세스를 선별하고 실행하기 위해 메모리에 적재한다.
- job queue에서 ready queue에 적재하는 스케줄러이다. 이때 I/O bound 프로세스와 CPU bound 프로세스의 비율을 적절히 올려야 한다.
- 멀티프로그램의 성능을 좌우하는 스케쥴러
ex) 수행해야할 job이 10갠데 메모리에 6개밖에 올릴 수 없다면 long-term scheduler가 선별해서 올려야 한다.
2. Short-term scheduler (or CPU scheduler)
- ready queue에 올라온 (실행이 준비된) 여러 프로세스들 중 CPU가 수행할 프로세스(1개)를 고르는 스케쥴러.
- 실제 CPU가 수행할 프로세스를 스케줄링해주기 때문에 CPU Scheduler이라고도 한다.
- 최소 매 100ms마다 수행되므로 짧은 텀으로 수행된다. (그래서 CPU가 놀지 않음)
3. Medium-term scheduler (or Swapper)
- CPU에서 번갈아가며 처리하는 프로세스들이 너무 많을 때 내보내야 할 프로세스를 고르는 스케쥴러.
- 우선순위가 가장 낮거나 오랜 시간 활성화되지 않은 프로세스들을 내린다.
ex) short-term scheduler에 의해 6개의 process들이 CPU에 번갈아 처리되고 있을 때, 프로세스가 너무 많아 처리가 느려지면 2개를 medium-term scheduler로 골라 내보내 나머지를 더 빠르게 처리한다.
Context Switch
- CPU가 프로세스를 바꿀 때 old process의 상태를 PCB에 저장하고, new process 상태를 가져오는 시간.
- context switch time이 길어질수록 CPU의 idle상태가 길어진다. (CPU 효율 낮아짐)
- context switch time을 줄이는 방법
1. main memory 보다 빠른 레지스터 공간 사용
2. context switch가 발생하는 횟수 줄이기 (최적화(scheduling))
Process Creation
- 부모 프로세스는 자식 프로세스를 생성하고... process tree를 형성한다
1. Resource sharing mode
- 부모와 자식 프로세스가 모든 자원을 공유
- 부모 프로세스가 자식 프로세스와 일부 자원을 공유
- 부모와 자식 프로세스가 아무 자원도 공유하지 않음을 극대화하기 위해 process scheduling을 한다.
2. Execution mode
- 부모와 자식이 동시에 실행
- 자식의 실행이 끝나고 부모 프로세스 실행
3. Address space mode
- 자식이 부모의 복제본
- 자식이 새 프로그램을 가지는 경우
UNIX example
1. fork() : system call이 새 프로세스를 생성한다
2. exec() : fork() 이후 메모리 공간을 새 프로그램으로 채움
Process Termination
1. 정상종료인 경우 : 마지막 statement를 실행 후 O/S에 delete 할 것인지 물어본다 (exit())
- 자식의 output data; wait()
- 자식 프로세스의 자원 회수 (deallocate)
2. 비정상 종료의 경우 : 부모가 자식 프로세스의 실행을 종료한다 (abort())
- 자식이 할당 자원을 초과 사용할 경우
- 자식 task가 더 이상 필요하지 않은 경우
- 부모 프로세스가 삭제되면 부모가 없는 자식 프로세스들은 연쇄 삭제됨.
+) 부모는 자식 프로세스가 종료될 때까지 wait() system call을 하고 기다린다.
- zombie process : 기다리는 부모 process가 없으면 (wait()가 없으면)
- orphan process : 부모 process가 wait()을 하지 않고 삭제되면
+) Multiprocess Architecture - Chrome Browser (ppt 12)
'운영체제' 카테고리의 다른 글
[Linux] 리눅스 부팅 과정, 리눅스 런 레벨(Runlevel) (0) | 2022.09.26 |
---|---|
5-1 CPU Scheduling (Concepts) (0) | 2021.04.09 |
4 Thread (0) | 2021.04.09 |
3-3 IPC (0) | 2021.04.09 |
Ubuntu root권한 얻기 (0) | 2021.03.27 |