4장
2. 프로세스 관리
2.1 프로세스
프로세스
메인 메모리에 적재되어 실행 중인 프로그램 (메인 메모리에 올라올때 사용:text + data + stack) , pc, sp, registers
프로세스 상태
- NEW: 메인 메모리에 적재
- Ready: 준비 끝
- Running: CPU 가 실제 실행하는 프로그램
- Ready: I/O 명령을 만날때 잠깐 기달리는 것
PCB(Process Control Block)
- 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영 체제 커널의 자료 구조
- TCB(Task Control Block) 라고도 불림
- 프로세스마다 한개의 TCB 를 가짐
- 포함정보
- Process ID
- Process state
- PC
- register
- PC (Program Counter): 이 프로세스가 다음에 실행할 명령어의 주소를 가리킨다. → CPU가 다른 프로그램을 실행시키고 돌아왔을 때를 위해 기록
- CPU 스케줄링 정보: 우선순위, 최종실행시각, 점유시간
- 메모리 관리 정보
- 프로세스 계정 정보
- 입출력 상태 정보
프로세스 대기열
- Job Queue
- 어떤 프로그램을 먼저 실행시킬지…
- Long-term scheduler: 하드 디스크에서 메모리로 프로세스를 load 하는 역할
- Ready Queue
- 무엇을 다음 서비스로 할것인가
- CPU scheduler
- Short-term scheduler: 메모리에 있는 프로레스 중에서 프로세스가 CPU 점유권을 가질때 어떤 프로세스가 선택되는지를 결정하는 스케줄러
- Device Queue
- Medium-term scheduler
- alseep 상태에서 ready 상태로 넘어가지 못하거나 ready 상태에서 running 상태로 넘어가지 못하는 상황 → 이 경우 메모리만 차지하고 비효율적인 상황이 발생
- 메모리에 load 되어있는 running 상태로 넘어가지 않는 프로세스를 하드디스크로 쫒아냄 (Swap out)
- 나중에 필요에 의해 다시 메모리에 들어올 수 있다. (Swap-in)
용어
- Context switching
- Scheduler: 큐에 있는 프로세스 중에 어떤 프로세스 실행시킬지 결정
- Dispatcher
- Context switching overhead
2.2 CPU 스케줄링
CPU Scheduling
- Preemptive: I/O 요청이 있는 것도 아니고 아직 작업이 끝나지 않았는데 기존작업을 멈추고 새로운 작업을 실행
- Non-Preemptive: 일반적인 경우에 한 작업이 끝난후 다음 작업을 진행
Scheduling criteria
- CPU Utilization: CPU 가 얼마나 일하는가?
- Throughput: 단위시간당 몇개의 작업을 진행하는가?
- Turnaround time: 작업 총 걸린 시간 (나간시간 - 들어온시간)
- Waiting time: CPU 서비스를 받기 위해 기달린시간
- Response time: 처음 응답 온 동안의 시간
2.3 FCFS: First-Come, First-Served Scheduling
- 먼저 들어온 작업을 먼저 작업
- 단점
- Convy Effect (호위효과): CPU 작업시간이 긴 작업이 앞에 잇는 경우 뒷 작업들이 오래 기달리면서 호위하는 느낌
- Nonpreemptive scheduling
-
예시
0~24: P1, 24~27: P2, 27~30: P3
AWT: (0 + 24 + 27)/3 = 17msec
2.4 SJF: Shortest-Job-First Scheduling
- 가장 짧은 작업을 먼저 진행
- 대기시간을 줄이는 측면에서 가장 좋은 방법
- 단점
- 비현실적임 → CPU 시간을 예측한다는 것이 어려움 , 예측을 하기 위해선 과거 실행조건을 기억해야함 = 오버헤드가 큼
- Preemptive or Nonpreemptive
-
예시
0~3: P4, 3~7: P1, 7~15: P3, 15~23:P2
AWT: (3+16+9+0)/4 = 7
AWT(FCFS) = 10
2.5 Prioiry Scheduling
- 우선순위가 높은 순서대로
- I/O 가 길고 CPU 시간이 짧은 경우에 사용하기 좋음, 시간 제한이 있는 경우
- 단점
- Stravation(기아): 외부에서 계속 새로운 작업이 들어옴으로써 우선순위가 낮은 프로세스가 실행되지 않을 수 있음
- 해결 방법: 오래 기다릴 수록 우선순위를 높여주는 방법 → aging
-
예시(0초에 모든 프로세스가 도착했다는 가정)
0~1: P2, 1~6: P5, 6~16: P1, 16~18: P3, 18~19: P4
AWT = (6+0+16+18+1) /5 = 8.2
2.6 RR: Round-Robin Scheduling
- 주어진 시간만큼 프로세스를 쪼개서 실행함
- Time-Sharing system 에 자주 사용됨
- Time quantum = time slice (기본 10~100msec) = 델타라고도함
- Preemptive scheduling
-
예시
time quantum = 4 msec
0~4:P1, 4~7: P2, 7~10:P3, 10~30: P1
AWT = (6 + 4 + 7)/3 = 5.66 mesc
ATT (Average Turnaround Time): 변환시간
- performance depends on the size of the time quantum
- time quantum 이 무한대인 경우 FCFS 와 비슷함, 해당 프로세스가 끝날대까지 실행하기 때문
- time quantum 이 0인 경우 context switching 오버헤드가 큼, 빠르게 전환되기 때문에 프로세스가 동시에 동작하는 것처럼 보여짐
2.7 Multilevel Queue Scheduling
- 여러개 큐를 프로세스 요청에 따라 큐를 다르게 사용
- 각각의 Queue에 절대적인 우선순위가 존재
- CPU time 을 각 Queue 에 차등 배분
- 각 Queue 는 독립된 scheduling 정책을 가짐
- Process group
- system process
- interactive process
- interactive editing process
- batch process
2.8 Multilevel Feedback Queue Scheduling
- 복수개의 Queue 가 존재함
- 다른 Queue 로의 점진적인 이동
- 모든 프로세스는 하나의 입구로 진입하고
- 만약 시간이 지났는데도 작업이 안끝나면 다른 Queue 로 이동
- 기아 상태 우려시 우선순위 높은 Queue 로 이동
2.9 프로세스 생성과 종료
- 부모 프로세스
- 자식 프로세스
- 프로세스 트리
- process identifier (PID): 프로세스 식별자
프로세스 생성
- fork() system call → 부모 프로세스 복사
- exec() : 실행파일을 메모리로 가져옴
프로세스 종료
- exit() system call
- 해당 프로세스가 가졌던 모든 자원을 O/S 에게 반환 → 회수한 자원은 O/S 가 필요한 프로세스에 다시 넘겨줌