CPU 스케줄링
: 한정된 CPU 로 여러 프로세스를 실행한다.
우선순위에 따른 프로세스 유형
: I/O bound process(입출력 : IO burst), CPU bound process(CPU : CPU burst)
: i/o bound process > cpu bound process i/o가우선순위가 높다
스케쥴링 큐
준비큐(ReadyQueue) : cpu 이용을 기다리는 큐
대기큐(Run Queue) : 대기 상태 프로세스들이 기다리는 큐
선점형 스케쥴링
: 현재 실행중인 프로세스의 자원을 뺴앗아 실행
-> 문맥교환 과정에 오버헤드 발생
- SJF 스케쥴링
: 짧은 프로세스 먼저 실행
- 라운드 로빈
: 선입 선처리 스케줄링 + 타임 슬라이스만큼 실행
- 최소 잔여 시간 우선 스케줄링(SRT)
: SJF + 라운드 로빈
- 우선순위
: 프로세스마다 우선순위 부여, 우선순위가 높은 순으로 스케줄링
- 단점 : 아사(starvation : 우선순위가 낮은 프로세스 실행이 연기되는 현상)
* aging
: 아사 현상을 예방하는 방식으로 대기시간이 길어지면 우선순위를 높이는 방법
- 다단계 큐
: 우선순위별로 준비큐를 여러개 사용하는 스케쥴링
: cpu 바운드, i/o 바운드, 백그라운드, 포그라운드 별로 큐로 묶어놈
- 단점 : 큐 간의 우선순위가 옮겨지지 않는다 -> 아사현상 발생
- 다단계 피드백 큐
: 다단계 큐 아사현상을 방지하기 위해 프로세스가 큐 간의 이동이 가능(*aging사용)
비선점형 스케쥴링
: 현재 실행중인 프로세스의 종료를 기다린 후 실행
- FIFO 스케쥴링
: 선입선출 스케쥴링
리눅스 스케줄링 정책
: 프로세스에 따라 각기 다른 우선순위를 사용할 수 있음
실시간 정책 스케줄링(우선순위가 높음)
- SCHED_FIFO
- SCHED_RR
일반 정책 스케줄링(우선순위가 낮음)
- CFS(Completely Fair Scheduler)
: 비실시간 프로세스를 대상으로 스케줄링 방식
* vruntime(virtual runtime : 가상 실행 시간)
: 리눅스 운영체제는 가상 실행 시간이 작은 프로세스를 다음 실행 프로세스로 삼는다
: RB tree
* 타임 슬라이스
: nice 값에 비례해 가중치 할당
: nice 명령어
새 프로세스를 실행할 때, 해당 프로세스의 우선순위 부여
nice - n [우선순위] [실행할 프로그램]
실행중인 프로세스 우선순위를 변경할때,
renice [우선순위] [실행중인 프로세스 아이디]
'FastCampus UpStage AI > 운영체제' 카테고리의 다른 글
리눅스 실습 (0) | 2024.10.23 |
---|---|
운영체제 - 페이징과 페이지 테이블 (0) | 2024.10.22 |
운영체제 - 프로세스 동기화 (0) | 2024.10.21 |
운영체제 - 리눅스 + 프로세스/스레드 (1) | 2024.10.21 |