# 선점형 스케쥴링 방식
- 기본 원리 : 하나의 프로세스가 다른 프로세스 대신 CPU 를 차지할 수 있다
> 즉, 미처 프로세스가 끝나기도 전에, 다른 프로세스로 전환될 수 있다
- 주로, 타임퀀텀을 기준으로 context switching 이 발생한다.
> 타임 퀀텀이 끝나서, 다음 프로세스를 결정해야 할 때 여러가지 기준으로
다음 프로세스를 선정한다
- 종류 :
1) round robin :
- 가장 자연스러운 방식.
- 어떤 타임퀀텀이 끝났을때, 해당 프로세스가 덜 끝났을 경우,
남은 시간만큼의 프로세스를 ready 큐 뒤에 넣는다.
# 비선점형 스케쥴링 방식
- 기본 원리 : 하나의 프로세스가 끝나지 않으면, 다른 프로세스는 CPU 를 차지할 수 없다
- 종류
1) FIFO : 먼저 들어오면 먼저 나간다 (큐 기본 방식)
2) SJF : 소요시간이 짧은 것부터 할당. 단, 끝나고 나서야 다른 프로세스 실행됨
# 스케쥴링의 시점
1) 선점형 스케쥴링
- interrupt 발생 시 : 외부 IO 발생 (IO request)
- time-out 발생 시 : time slicing (시분할) 에 의해, 주어진 타임 퀀텀이 끝났을 경우
- wake-up 발생 시 : 대기 큐에 있는 프로세스들을 준비 큐에 옮길때
- terminate 발생 시 : 실행하던 프로세스가 끝났을 경우
2) 비선점형 스케쥴링
- interrupt 발생 시 : 외부 IO 발생 (IO request)
- terminate 발생 시 : 실행하던 프로세스가 끝났을 경우
# 비선점형 스케쥴링 방식일떄, 인터럽트 발생한다면
- execution flow :
1) 현재의 프로세스를 멈추고, 인터럽트 서비스 루틴으로 넘어감
2) 인터럽트 서비스 루틴에 의해, OS 스케쥴링 루틴으로 넘어가게 된다
3) 현재 레지스터, 포인터 주소 등을 PCB 에 저장한다
4) 현재 진행중인 프로세스를 ready 큐에 저장 (running->ready 상태 전환)
5) 프로세스가 끝났으면, PCB 에서 새로운 프로세스에 대응되는 상태, 레지스터를 꺼낸다
6) 새로운 프로세스를 그대로 진행한다
'운영체제' 카테고리의 다른 글
커널별 인터럽트 처리 (0) | 2020.04.26 |
---|---|
커널 종류 (0) | 2020.04.26 |
DMA 와 메모리 (0) | 2020.04.26 |
인터럽트 (0) | 2020.04.26 |