OS ch4

4장

2. 프로세스 관리

2.1 프로세스

프로세스

메인 메모리에 적재되어 실행 중인 프로그램 (메인 메모리에 올라올때 사용:text + data + stack) , pc, sp, registers

프로세스 상태

4/Untitled.png

  • 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 스케줄링 정보: 우선순위, 최종실행시각, 점유시간
    • 메모리 관리 정보
    • 프로세스 계정 정보
    • 입출력 상태 정보

프로세스 대기열

  1. Job Queue
    • 어떤 프로그램을 먼저 실행시킬지…
    • Long-term scheduler: 하드 디스크에서 메모리로 프로세스를 load 하는 역할
  2. Ready Queue
    • 무엇을 다음 서비스로 할것인가
    • CPU scheduler
    • Short-term scheduler: 메모리에 있는 프로레스 중에서 프로세스가 CPU 점유권을 가질때 어떤 프로세스가 선택되는지를 결정하는 스케줄러
  3. Device Queue
  4. Medium-term scheduler

4/Untitled%201.png

  • alseep 상태에서 ready 상태로 넘어가지 못하거나 ready 상태에서 running 상태로 넘어가지 못하는 상황 → 이 경우 메모리만 차지하고 비효율적인 상황이 발생
  • 메모리에 load 되어있는 running 상태로 넘어가지 않는 프로세스를 하드디스크로 쫒아냄 (Swap out)
  • 나중에 필요에 의해 다시 메모리에 들어올 수 있다. (Swap-in)

용어

  • Context switching
  • Scheduler: 큐에 있는 프로세스 중에 어떤 프로세스 실행시킬지 결정
  • Dispatcher
  • Context switching overhead

2.2 CPU 스케줄링

CPU Scheduling

  1. Preemptive: I/O 요청이 있는 것도 아니고 아직 작업이 끝나지 않았는데 기존작업을 멈추고 새로운 작업을 실행
  2. 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
  • 예시

    4/Untitled%202.png

    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
  • 예시

    4/Untitled%203.png

    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초에 모든 프로세스가 도착했다는 가정)

    4/Untitled%204.png

    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
  • 예시

    4/Untitled%205.png

    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 가 필요한 프로세스에 다시 넘겨줌