2021-10-3 운영체제 (4주차)
프로세스와 관련된 시스템 콜
wait() 시스템콜
- 프로세스 A가 wait() 시스텀 콜을 호출하면
- 커널은 child가 종료될 때까지 프로세스 A를 sleep 상태로 만든다
- Child process가 종료되면 커널은 프로세스 A를 깨운다.
exit() 시스템콜
프로세스의 종료
- 자발적 종료
- 마지막 statement 수행 후 exit() 시스템 콜을 통해
- 프로그램에 명시적으로 적어주지 않아도 main 함수가 리턴되는 위치에 컴파일러가 넣어줌
- 비자발적 종료
- 부모 프로세스가 자식 프로세스를 강제 종료시킴
- 자식 푸로세스가 한계치를 넘어서는 자원 요청
- 자식에게 할당된 태스크가 더 이상 필요하지 않음
- 키보드로 kill, break 등을 친 경우
- 부모가 종료하는 경우
- 부모 프로세스가 종료하기 전에 자식들이 먼저 종료됨
- 부모 프로세스가 자식 프로세스를 강제 종료시킴
프로세스 간 협력
- 독립적 프로세스 (independent process)
- 프로세스는 각자의 주소 공간을 가지고 수행되므로 원칙적으로 하나의 프로세스는 다른 프로세스의 수행에 영향을 미치지 못함
- 협력 프로세스(Cooperating process)
- 프로세스 혐력 메커니즘을 통해 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있음
- 프로세스 간 협력 메커니즘(IPC: Interprocess Communication)
- 메시지를 전달하는 방법
- message passing: 커널을 통해 메시지 전달
- 주소 공간을 공유하는 방법
- shared memory: 서로 다른 프로세스 간에도 일부 조소 공간을 공유하게 하는 shared memory 메커니즘이 있음
- 메시지를 전달하는 방법
CPU 스케줄링
여러 종류의 job(process)이 섞여있기 때문에 CPU 스케줄링이 필요하다
프로세스는 그 특성에 따라 다음 두 가지로 나눔
- I/O-bound process
- CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 jo
- (many short CPU bursts)
- CPU-bound process
- 계산 위주의 job
- (few very long CPU bursts)
CPU Scheduler
- Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다
Dispatcher
- CPU의 제어권을 CPU scheduler에 의해 선택된 프로세스에게 넘긴다
- 이 과정을 context switch 라고 한다.
CPU 스케줄링이 필요한 경우는 프로세스에게 다음과 같은 상태 변화가 있는 경우이다.
- Runnung → Blocked
- Running → Ready
- Blocked → Ready
- Terminate
Scheduling Criteria - 성능척도
- CPU utilization (이용률) - 놀지않고 일한 시간 - 높을수록 좋음
- Throughput(처리량)
- Turnaround time(소요시간, 반환시간)
- Waiting time(대기 시간)
- Response time(응답시간) - CPU를 쓰려고 들어와서 최초로 CPU를 얻기까지 걸린 시간
FCFS (First-Come First-Served)
- Waiting time for P1 = 0; P2 = 24; P3 = 27 - 평균 = 17
- 도착 순서 P2 - P3 - P1일때 - 기다리는 시간 평균 = 3
SJF (Shortest-Job-First)
- Nonpreemptive
- 일단 CPU를 잡으면 이번 CPU burst 가 완료될때까지 CPU를 선점당하지 않음
- Preemptive
- 현재 수행중인 프로세스의 남은 burst time 보다 더 짧은 CPU burst time 을 가지는 새로운 프로세스가 도착하면 CPU를 빼앗김
- CPU burst time - 추정만 가능하다
Priority Scheduling
- highest priority를 가진 프로세스에게 CPU 할당
- Preemptive , nonpreemptive
- 문제점 : Starvation
- 해결책 : Aging - 시간이 지날수록 priority를 증가
Round Robin(RR)
- 각 프로세스는 동일한 크기의 할당 시간(time quantum)을 가짐
- 일반적으로 SJF 보다 average turnaround time이 길지만 response time은 더 짧다.
Multilevel Queue
- Ready queue를 여러 개로 분할
- foreground(interactive) - RR
- background(batch - no human interaction) - FCFS
- 각 큐는 독립적인 스케줄링 알고리즘을 가짐
- 각 큐에 CPU time을 적절함 비율로 할당
Multilevel Feedback Queue
- 프로세스가 다른 큐로 이동가능
- 에이징을 이와 같은 방식으로 구현할 수 있다
Written on October 3, 2021