일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 브루트포스
- 정적 리소스
- HttpMessageConverters
- AuthenticationPrincipal
- @Profile
- @ConfigurationProperties
- Application Runner
- EnableAutoConfiguration
- webjar
- 스프링 부트
- 백기선
- 리소스핸들러
- rest api
- 알고리즘
- WebApplication Type
- application.properties
- Application Argument
- 리소스 서버
- Spring Security
- 스프링부트
- HATEOAS
- JPA
- JsonSerializer
- Application Event
- cors
- 외부설정
- 백트래킹
- 다익스트라
- 백준
- OAuth2
- Today
- Total
아카이브
스케줄링 알고리즘 본문
CPU 스케줄링 : 메모리에 있는 Ready상태의 프로세스 중 하나를 선택해 CPU 자원을 할당하는 것.
결정 시점 : Running -> Waiting
Running -> Ready
Waiting -> Ready
Running -> Terminated
<비선점형 vs 선점형>
- 비선점형 스케줄링(Non-preemptive Scheduling)
- 프로세스가 CPU를 할당 받으면 종료되거나 입출력 요청으로 자발적으로 중지될 때까지 계속 실행되도록 보장한다.
- 순서대로 처리되는 공정성이 있고, 스케줄러 호출 빈도가 낮고, 문맥 교환에 의한 오버헤드가 적다.
- 일괄 처리에 적합
- 처리 시간이 긴 프로세스가 실행 중일때, 처리 시간이 짧은 프로세스들을 오랫동안 대기시킬 수 있으므로, 처리율이 떨어질 수 있다는 단점이 존재.
(Convoy Effect)
- 알고리즘
1. FCFS
- 구현이 간단하고, 처리 순서가 명확
- Convoy Effect 발생
2. SJF (Shortest Job First)
- 처리 시간이 짧은 프로세스부터 할당받는다.
- Shortest Remaining Time First ? 할당시 짧은 프로세스 먼저 할당받지만,
- if (작업 중 들어온 프로세스의 burst < 실행중인 프로세스의 burst)
- 선점시킨다 (평균 대기시간 감소)
- 최소의 평균 대기시간 실현
- Starvaion 발생 : 우선순위가 작거나, 처리 시간이 긴 프로세스가 계속 자원을 할당받지 못하는 상태
(긴 프로세스는 후순위라 오랫동안 대기했음에도 불구하고 계속 자원을 할당받지 못하는 문제가 생긴다)
- Aging으로 해결 : 대기 큐에 있는 프로세스에 age를 부여
처리 시간이 긴 프로세스라도 age가 크다면 ? 할당
3. HRRN (Highest Response Ratio Next)
- SJF의 단점을 보완.
- 처리 시간(Burst) + 대기 시간(Waiting Time) / Busrt
- 처리 시간에 비해 대기 시간이 크다면 우선순위가 크다.
- 선점형 스케줄링(Preemptive Scheduling)
- 프로세스가 CPU를 할당받아 실행 중에 있어도 다른 프로세스가 실행 중인 프로세스를 중지하고 CPU를 강제로 점유할 수 있다.
- 빠른 응답시간을 요하는 대화식 시분할 시스템에 적합, 긴급한 프로세서를 제어할 수 있다.
- 알고리즘
1. RR
2. SRTF
3. MLQ(Multi Level Queue)
- 여러개의 대기 큐로 구분
- 일반적으로 시스템, 대화형, 편집, 일괄 처리형, 학생 작업 순서대로 구분하여 우선순위를 부여
- 상위 대기 큐에 작업이 들어오면 하위 대기 큐의 작업이 수행중이더라도 선점한다.
4. MFQ(Multi-level Feedback Queue)
- MLQ에서 발생할 수 있는 Starvation을 보완.
- MLQ에서 우선순위가 작은것은 뒤로 밀려난다. (SJF에서 처리 시간이 긴 프로세스가 밀려나는 것과 같은 맥락)
- 중요도 별로 여러 대기 큐를 두고, 각 대기 큐마다 할당 시간을 부여해
- 대기 큐를 비선점형으로 운용하는 알고리즘
출처 및 참고
http://jwprogramming.tistory.com/17
'운영체제' 카테고리의 다른 글
데드락, 교착상태 (0) | 2018.06.02 |
---|---|
Cache 정리 (0) | 2018.05.29 |
동시성(Concurrency)과 병렬성(Parallelism) (0) | 2018.05.29 |
문맥 교환(Context Switch) (0) | 2018.05.29 |
프로세스 vs 스레드 (0) | 2018.05.29 |