프로세스 관리, CPU 스케쥴링 알고리즘, 프로세스 생성과 종료

hwakyungChoi·2020년 10월 23일
0

프로세스 관리

프로세스

● 프로그램 vs 프로세스 (program vs process)
– process, task, job …
– program in execution(프로세스는 실행중에 있는 프로그램): text + data + stack, pc(program counter), sp, registers, …
– 무덤 속 프로그램(아무 일도 안함), 살아 움직이는 프로세스
● 프로세스 상태
– new(메인 메모리에 올라온 상태), ready(모든 초기화를 끝나고 실행될 준비가 된 상태), running(실제 실행 상태가 됨), waiting(CPU가 그 다음 프로세스로 넘어감), terminated(프로그램이 끝난 상태) (그림)
– 프로세스 상태 천이도 (process state transition diagram) – 상태 천이는 언제 발생?

  • time sharing 시스템은 일정 시간이 되면 자동적으로 ready가 됨

PCB

● Process Control Block (PCB)
– Task Control Block (TCB) – 프로세스에 대한 모든 정보

  • process, task는 비슷한 의미임
  • 블락안에는 테스크에 대한 모든 정보가 들어 있음
    process state(상태정보) (running, ready, waiting, …), PC, registers,MMU info (base, limit), CPU time (얼마나 사용했는지), process id(프로세스마다 번호를 붙이는 것), list of open files(어떤 파일을 사용하고 있는지), …
    – 사람과 비유? : 개인의 정보를 다 가지고 있는 정부와 비슷

Queues

● Job Queue( 하드 디스크의 수 많은 잡들이 메인 메모리에 올라가기 위해서는 기달려야 함.)
– Job scheduler (어느 잡을 먼저 올려줄 것 인가) – Long-term scheduler (스케줄러 시간이 김)
● Ready Queue
– CPU scheduler(줄서서 기다리는 서비스 중에 어느 서비스를 잡아서 실행해줄 것인가) – Short-term scheduler (스위치가 빨리 돌아감)
● Device Queue
– Device scheduler(어느 디스크를 잡아서 먼저 해줄 것인가)

Multiprogramming

  • 메인 메모리 여러 프로세스를 올린 것
    ● Degree of multiprogramming
    - 메인 메모리에 프로세스가 몇 개 올라가져 있는가
    ● i/o-bound(주로 i/o와 관련된 것) vs CPU-bound process(주로 CPU와 관련된 것, 슈퍼 컴퓨터-일기예보)
    ● Medium-term scheduler : 하나의 서버의 컴퓨터에 여러 사용자가 있고 각각 메모리가 할당되어 있음 => 한 사용자가 사용하고 있지 않을 때, 할당된 메모리는 아무 것도 안하게 됨=> 효율성이 떨어져 메모리에서 디스크로 이동됨(Swap) => 비어있는 메모리에 다른 것을 할당함
    – Swapping
    ● Context switching (문맥전환)
    – Scheduler(어느 프로세스를 선택) – Dispatcher(상태나 레지스터상태를 바꿔주는 것,새로운 컨텐츠를 스위칭해주는 것) – Context switching overhead(할 때 마다 부담하기 때문에 자주할수록 overhead 횟수가 많아짐)

CPU 스케쥴링

CPU Scheduling

  • 다음에 어떤 프로세스를 설정해서 실행해야 하는 걸까?
    ● Preemptive vs Non-preemptive
    – 선점 (先占) : 비선점(非先占)
  • 선점(미리 점유) = 서비스를 실행하고 있는데 강제로 쫓아내고 점유할 수 있는 것
  • 비선점 = 프로세스가 점유하고 있으면 I/O 끝나기 전까지는 끝나지 않는 것(병원)
    ● Scheduling criteria (비교/척도)
    – CPU Utilization (CPU 이용률:CPU가 놀지 않고 부지런히 일하는 가) – Throughput (처리율:시간 당 몇 개의 작업을 처리할 수 있는가) – Turnaround time (반환시간:들어오는 시간 부터 작업이 끝나고 나올 때까지 걸리는 시간, 짧을 수록 좋음 단위: sec 등,) – Waiting time (대기시간:얼마나 기달려야 하는 가) – Response time (응답시간:인터렉티브 시스템에서 필요) – …

CPU Scheduling Algorithms

● First-Come, First-Served (FCFS)
● Shortest-Job-First (SJF) : 작업 시간 짧은 것을 먼저
– Shortest-Remaining-Time-First
● Priority
● Round-Robin (RR)
● Multilevel Queue : 큐를 여러 개
● Multilevel Feedback Queue

First-Come, First-Served (선착순)

  • 병원, 은행 예제
    ● Simple & Fair => 꼭 좋은 성능을 나타내는 것은 아님
    ● Example: Find Average Waiting Time(평균 대기 시간, 척도)
    – AWT = (0+24+27)/3 = 17 msec cf.(6+3+0)/3 = 3 msec!
    ● Gantt Chart
    ● Convoy Effect (호위효과) : 앞에 일이 있다면 기다리면서 뒤에서 따라 다녀야 함
    ● Nonpreemptive scheduling (비선점)

Shortest-Job-First (1)

● Example: AWT = (3+16+9+0)/4 = 7 msec
– cf. 10.25 msec (FCFS)
● Provably optimal
● Not realistic; prediction may be needed: 가장 큰 문제는 비현실적임, 사실상 CPU 시간을 얼마나 사용할지 잘 모름. 컨텍스트 스위칭이 자주 일어나기 때문.

Process Burst Time (msec)
P1 6
P2 8
P3 7
P4 3

Shortest-Job-First (2)

  • 도착 시간까지 고려
    ● Preemptive or Nonpreemtive
    – cf. Shortest-Remaining-Time-First (최소잔여시간 우선)
  • 남아 있는 시간이 얼마나 되는지에 다름
    ● Example
    – Preemptive: AWT = (9+0+15+2)/4 = 26/4 = 6.5 msec
    – Nonpreemptive: 7.75 msec
    Process Arrival Time Burst Time
    (msec)
    P1 0 8
    P2 1 4
    P3 2 9
    P4 3 5

Priority Scheduling (1)

● Priority (우선순위): typically an integer number (일반적으로 정수값)
– Low number represents high priority in general (Unix/Linux) (숫자값이 낮은 것이 우선순위 임)
● Example
– AWT = 8.2 msec

Priority Scheduling (2)

● Priority (우선 순위 정하는 방법)
– Internal: time limit(짧은 시간), memory requirement(메모리 차지 용량), i/o to CPU burst(i/o 시간 또는 CPU 시간이 짧은 것), …
– External: amount of funds being paid, political factors(정치적 요소) , …
● Preemptive or Nonpreemptive
● Problem
– Indefinite blocking: starvation (기아/우선순위가 높은 프로세스가 자꾸 들어오면 자기 차례가 안 올수도 있음 - 실행될 수 없음) – Solution: againg (오래 머물고 있다면 우선순위를 조금씩 올려줌)

Round-Robin (1)

  • 수건 돌리기처럼 돌면서 스케쥴링
    ● Time-sharing system (시분할/시공유 시스템)
    ● Time quantum 시간양자 = time slice (10 ~ 100msec) / 1초동안 10~100번 정도 스위칭
  • 타임 퀀텀의 사이즈에 따라 시간의 결과가 다르게 나옴
    ● Preemptive scheduling
    ● Example
    – Time Quantum = 4msec
    – AWT = 17/3 = 5.66 msec

Round-Robin (2)

● Performance depends on the size of the time quantum

  • 퀀텀을 어떻게 설정하느냐에 따라 성능이 완전히 달라짐
    – ∆ → ∞ FCFS
    – ∆ → 0 Processor sharing (* context switching overhead)
    ● Example: Average turnaround time (ATT)
  • 반응 시간(turnaround time) : 들어가서 끝날 때가지 시간
    – ATT = 11.0 msec (∆ = 1), 12.25 msec (∆ = 5)
  • 델타, 타임 퀀텀을 값을 결정하여 최적의 시간을 잡는 것이 중요함

Multilevel Queue Scheduling


● Process groups
– System processes (가장 긴급하게 처리해야 함)
– Interactive processes (게임, 대화하는 프로세스 / 대조적으로 반대의 예는 컴파일러)
– Interactive editing processes (예. 워드 프로세스)
– Batch processes (비대화형)
– Student processes
● Single ready queue → Several separate queues
– 각각의 Queue 에 절대적 우선순위 존재
– 또는 CPU time 을 각 Queue 에 차등배분
– 각 Queue 는 독립된 scheduling 정책 (round-robin, priority)

Multilevel Feedback Queue Scheduling

● 복수 개의 Queue
● 다른 Queue 로의 점진적 이동
– 모든 프로세스는 하나의 입구로 진입
– 너무 많은 CPU time 사용 시 다른 Queue 로
– 기아 상태 우려 시 우선순위 높은 Queue 로

프로세스 생성과 종료

Process Creation

● 프로세스는 프로세스에 의해 만들어진다! – 부모 프로세스 (Parent process) – 자식 프로세스 (Child process)

  • 예. init 프로세스가 여러 다른 프로세스를 만들어냄 => 그 자식 프로세스가 또 다른 자식 프로세스를 만들어냄
    ● cf. Sibling processes
    – 프로세스 트리 (process tree)
    ● Process Identifier (PID)
  • 맨 처음 만들어지는 것은 0
  • process ID가 중복되지 않음
    – Typically an integer number
    – cf. PPID
    ● 프로세스 생성
    – fork() system call – 부모 프로세스 복사
    – exec() – 실행파일을 메모리로 가져오기

예제: Windows 7 프로세스 나열

예제: Ubuntu Linux 프로세스 나열

  • ps(process status)

Process Termination

● 프로세스 종료

– exit() system call(종료를 하게 됨) – 해당 프로세스가 가졌던 모든 자원은 O/S 에게 반환
(메모리, 파일, 입출력장치 등)

0개의 댓글