프로그램: 컴파일 되어 나온 실행 파일
프로세스
new: 프로세스가 완전히 만들어지기 전 단계
ready: 만들어진 단계, cpu에 올리기만 하면 프로그램 실행 가능한 상태, 아직 올리진 않음
running : cpu에 올린 상태, 독점 막기 위해 time slice 존재
waiting : sleep(), read()등의 호출로 동작 대기, running 빠져나옴
작업 완료하면 ready상태로 / running상태의 프로세스의 time slice 보장하려고
terminate : 좀비 상태의 프로세스를 청소해주는 작업 필요함
ready, waiting
공 : cpu에서 돌아가지 않는 상태
차 : ready는 cpu에 올리면 실행됨 but waiting은 no
def: 프로세스 정보를 담아두는 구조체
program counter: 다음 실행할 명령어의 주소를 가리킴
def1 Multiprogramming : cpu의 성능 극대화, 여러 프로그램 실행하겟다는 것
def2 Time-sharing
p0(time slice), p1,2( I/O ) p3(cpu bound) 가 있음
p0는 time expired 되면 ready q로 들어감 (cpu 독점 막기위함)
p0, p1 있음, p0 실행 중에 interrupt, scheduler, wait system call등의 이유로 wait상태가 되어 p0->p1으로 running switching이 일어날 경우,
1. 먼저 save state of p0
2. reload state of p1 = 프로세스 running
def: 어떤 프로세스를 다음에 실행할 것인지 고르고 cpu에 할당함.
일반적으로 short-term scheduler( = process scheduler)
실행 중인 p0 -> p1으로 context switch 될 때
1. Processor의 register 부분의 정보들이 메모리의 해당 프로세스의 PCB안에 저장됨
2. p1의 pcb의 정보가 processor register에 로드됨
def: 부모 프로세스가 자식 프로세스를 생성하는 것을 말함
각 ps는 pid를 갖고 잇음
p0(Sched)
fork하면 부모의 fd와 메모리를 그대로 받음. 이때 복제가 아닌 공유하는 방식
그러나 서로가 변경한 데이터는 볼수 없음. 각 프로세스가 따로 관리함
------------------ 3/17 ------------------(프로세스 스케쥴링_상)
목적: 멀티프로그래밍을 가능하게 하여 cpu의 utilization을 극대화하는 것
프로세스 실행의 구성
Process Scheduler: ready 상태의 프로세스들 중 실행할 프로세스를 선택
-경우
dispatcher : cpu에 올림
Scheduling Criteria
CPU utilization : 기준 시간에 대해 cpu에 동작하는 시간
Turnaround time : 프로세스 실행 시간
Waiting time : ready상태에서 running되기 전에 기다리고 있는 시간
Response time : event를 받아서 event의 결과를 출력할 떄까지 걸리는 시간
이상적인 스케쥴링 알고리즘
Max cpu util
Max throughput
min turnaround time
min waiting time
min response time
스케쥴링 알고리즘
ready queue에 존재하는 프로세스들 중 하나를 선택해 cpu에 올리는 정책
first-come first-served(FIFO)
non-preemptive
그림에서 사격형(p1,p4)는 pcb임
Shortest-Job-First(SJF)
non-preemptive
cpu burst가 가장 작은 프로세스를 우선적으로 실행하는 방법
이론적으로만 가능한 방법, 왜냐면 burst타임을 실행전에 예측할수 없기 때문에
priority Scheduling
문제점 : low priority process는 실행되지 못할 수도 있음. (starvation)
->해결은 aging, cpu를 오래동안 사용하지 못한 ps의 우선순위를 증가시킴
round_robin_Scheduling
대부분의 OS가 사용하는 방식, 이방법이 있어야 사용자는 여러개의 프로세스가 동시에 실행되
는 것처럼 느끼고 각 프로세스가 cpu를 독점적으로 사용하는 것처럼 느끼게 해줌
FIFO에서 확장된 것, 추가로 time quantum or time slice가 추가됨
이 스케쥴은 모든 프로세스가 동일한 priority를 갖는다고 가정.
프로세스가 cpu에 올라가면 동작하다가 time quantum만큼 소유하면 다시 ready queue의 맨뒤로 inser됨
타임 퀀텀 만큼 실행되면 강제적으로 ready queue로 들어가는 것 떄문에 preEmptive방식임
대부분 현재의 os에서 qunatum 은 10~100msec , context switching overheadsms <10 microsec으로 잡고 있음
multilevel queue scheduling
ready 큐를 여러개 두는 것. 각 큐마다 서로 다른 스케쥴링 알고리즘을 적용함.
priority-based multilevel queue scheduling
starvation의 문제가 잇음 realTimeOs는 이걸 감안하고 이 방식으로 운영함.
multilevel feedback-queue scheduling
windows xp scheduling