반응형
1. cpu 스케줄링 개요
- 프로그램을 실행시키면 메모리에 프로세스가 생성되고 각 프로세스에는 1개 이상의 스레드가 있음
- cpu 스케줄링 : 운영체제가 프로세스에게 cpu를 할당, 해제하는 것
- 고려사항
- 어떤 프로세스에게 cpu 리소스를 줘야하는가
- cpu를 할당받은 프로세스가 얼마의 시간동안 cpu를 사용해야하는가 (시분할 처리 방식으로 여러프로세스에게 짧은 시간 동안 돌아가며 할당)
- 고려사항
- cpu벌스트 : cpu를 할당받아 실행하는 작업
- io벌스트 : 입출력 작업
2. 다중큐
- 생성 > 준비 > (스케줄러에 의해) 실행 > (cpu할당시간이 다 됐으면 다시) 준비 > (io요청이 있다면) 대기 > 작업 끝 완료
- 준비상태, 대기상태 > Queue 자료구조로 관리
- 실행에서 준비로 돌아갈때 > 운영체제가 프로세스의 우선순위를 보고 맞는 준비큐에 넣음
- 준비상태의 다중큐에서 적당한 프로세스 선택하여 실행상태로 전환
i.o요청시
- 하드디스크 작업은 > HDD큐로 들어가고 작업 완료 후 인터럽트 발생시 > HDD 큐를 꺼냄
- 큐에 프로세스의 정보를 가지고 있는 PCB가 들어감
3. 스케줄링 목표
- 리소스 사용률
- cpu 사용률을 높이는 것 목표 or io디바이스의 사용률 높이기
- 오버헤드 최소화
- 컨텍스트 스위칭을 너무 자주하면 안됨
- 공평성
- 모든 프로세스에게 공평하게 cpu가 할당
- (시스템에 따라 다름)
- 처리량
- 같은 시간 내에 더 많은 처리를 할 수 있는 방법을 목표
- 대기 시간
- 작업을 요청하고 실제 작업이 이루어지기전까지 대기하는 시간이 짧은 것이 목표
- 응답 시간
- 사용자의 요청이 얼마나 빨리 반응하는지가 중요하기 때문에 응답시간이 짧은 것 목표
- 처리량과 응답시간의 목표를 같이 달성할 순 없음
4. FIFO
- cpu 스케줄링 알고리즘
- 먼저들어온 프로세스가 완전히 끝나야만 다음 프로세스가 실행됨 (brust time이 짧은게 먼저 실행 > 대기시간이 짧아짐)
- 장점 : 단순, 직관
- 단점 : 먼저들어온 프로세스가 완전히 끝나야만 다음 프로세스가 실행되기 때문에 실행시간이 짧고 늦게 도착한 프로세스가 실행기간이 길고 기다려야됨
- io작업이 있다고 하면 io작업을 기다려하기 때문에 cpu 사용률이 떨어짐
- 스케줄링의 성능은 평균 대기시간으로 평가됨
5. SJF (shortes job first)
- fifo에서 버스트타임이 짧은 순서대로 실행시 평균 대기 시간이 짧아 지기 때문에 짧은 작업 먼저 실행하는 알고리즘
- 장 : 이론적으로 fifo보다 성능이 좋긴함
- 단
- 어떤 프로세스가 얼마나 실행될지 예측하기 불가능
- 버스트타임이 짧은게 먼저 실행되기 때문에 시간이 긴 프러세스는 오랫동안 실행을 못할 수 있음
- sjf는 사용되지 않음
6. RR (Round Robin)
- 라운드 로빈 알고리즘 > 일정 시간이 지나면 강제로 다른 프로세스에게 일정 시간만큼 cpu 할당
- 프로세스에게 할당하는 일정시간 > 타임 슬라이스 또는 타임 컨텀
- 평균대기시간이 비슷하다면 rr알고리즘이 더 비효율적인 방식
- rr알고리즘은 컨텍스트 스위칭이 잇기 때문에 컨텍스트 스위칭 시간이 더 추가되기 때문
- 타임슬라이스에 따라 상황이 다름
- 큰 > 먼저 들어온 프로세스의 작업이 종료될때까지 실행하니 fifo처럼 됨
- 작은 > 동시에 동작하는 것처럼 느껴짐, 컨텍스트 스위칭 자주 일어남 > 오버헤드가 너무 큼
- 최적 > 사용자가 동시에 실행되는 것처럼 느끼고, 오버체드가 많이 안일어나도록 느껴지게(20ms-100ms 사이)
6. MLFQ (Multi-level Feedback Queue)
- 가장 일반적으로 쓰임
- rr의 업그레이드된 알고리즘
해당 글은 [인프런 - 그림으로 쉽게 배우는 운영체제] 강의를 듣고 정리한 글 입니다.
'🔥 🔥' 카테고리의 다른 글
[강의] 그림으로 쉽게 배우는 운영체제 - 4. 데드락 (0) | 2024.05.23 |
---|---|
[강의] 그림으로 쉽게 배우는 운영체제 - 3. 프로세스 동기화 (0) | 2024.05.23 |
[강의] 그림으로 쉽게 배우는 운영체제 - 1. 프로세스와 쓰레드 (0) | 2024.05.13 |
[강의] 그림으로 쉽게 배우는 운영체제 - 0. 운영체제 들어가기 (0) | 2024.05.13 |
yarn berry (0) | 2021.12.05 |