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 메커니즘이 있음

image

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)

image

  • 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