일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- React
- classList
- scope
- css#cascading#display#block#inline
- javascript
- CSS
- relative
- package.json
- Grid
- variables
- confirm()
- grid-column-end
- collapsing-margins
- prompt()
- box-shadow
- grid-template-areas
- createElement
- foreach()
- react-hook-form
- grid-column-start
- python #qqplot #qq-plot #code
- grid-row-start
- mongodb
- localStorage
- javascipt
- className
- border-style
- var
- valuable
- gird-row-end
- Today
- Total
data life
[운영체제] 스케쥴링 알고리즘 본문
스케쥴링 알고리즘
❓누가 프로세스 실행을 관리하는가?
: 스케쥴러 (일의 진행 순서를 결정하는 일)
❓어느 순서대로 프로세스를 실행시킬건가?
- 시분할 시스템 : 프로세스 응답 시간을 가능한 짧게
- 멀티 프로그래밍 : CPU 활용도를 높여서 프로세스를 빨리 실행
💡 위의 작업을 위해서는 스케쥴링 알고리즘을 알아두어야 한다!
FIFO (First In First Out) 스케쥴러
>> 프로세스가 처음~끝까지 CPU를 사용한다.
>> 가장 간단한 스케쥴러 (배치 처리 시스템)
>> FCFS (First Come First Served) 스케쥴러라고도 한다.
최단 작업 우선(SJF) 스케쥴러
>> Shortest Job First로 가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행하는 알고리즘
우선순위 기반 (Priority-Based) 스케쥴러
- 정적 우선순위 : 프로세스마다 미리 우선순위를 지정
- 동적 우선순위 : 스케쥴러가 상황에 따라 동적으로 변경
🔸 용어 정리
RealTime OS(RTOS)
: 응용 프로그램 실시간 성능 보장을 목표로 하는 OS
: 프로그램의 시작과 완료 시간을 보장해준다
General Purpose OS(GPOS)
: 프로세스 실행시간에 민감하지 않고 일반적인 목적으로 사용되는 OS
>> 윈도우, 리눅스 등
Round Robin 스케쥴러
>> 시분할 시스템을 위해 설계된 선점형 스케쥴링 중 하나로 프로세스들 사이에 우선순위를 두지 않고 순서대로 시간단위로 CPU를 할당하는 방식의 CPU 스케줄링 알고리즘
>> 각 프로세스에 일정시간을 할당하고, 할당된 시간이 지나면 그 프로세스는 잠시 보류한 뒤 다른 프로세스에게 기회를 주고, 또 그 다음 프로세스에게 하는 식으로, 돌아가며 기회를 부여하는 운영방식
프로세스 상태 기반 스케쥴러
1. 프로세스 생성(new) - 프로세스 생성 중
2. 실행 가능(ready) - CPU에서 실행 가능 상태, 실행 대기 상태
3. 실행중(running) - 현재 CPU에서 실행 중
4. 대기(blocking) - 특정 이벤트 발생 대기 상태, 보류 상태, waiting 상태 ex>저장매체 파일 읽기 중
5. 종료(exit) - 프로세스 종료 상태 (짧은 시점)