Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 참조변수
- 이노베이션아카데미
- generics
- jdk
- Compiler
- SRP
- 라피신
- 도커네트워크
- pg_hba.conf
- java
- JIT
- JVM
- 42seoul
- 바이트코드
- StackArea
- 제네릭스
- 상속관계
- 운영체제
- 포함관계
- RDD
- javac
- la-piscine
- classloader
- MethodArea
- Operating System
- LSP
- abstract
- 자바컴파일러
- HeapArea
- 42서울
Archives
- Today
- Total
while(1) 작심삼일();
4. CPU 스케줄링 본문
스케줄링의 목적 : 모든 프로세스가 공평하고 안정적으로 작업하도록 하는 것
- 공평성 : 모든 프로세스가 자원을 공평하게 받음
- 효율성 : 자원이 유휴시간없이 스케줄링되고, 유휴 자원을 사용하려는 프로세스에게 우선권을 줌
- 안정성 : 우선순위를 통해 중요 프로세스가 먼저 작동하도록 배정(ex. 운영체제 프로세스) → 자원을 점유, 파괴하려는 프로세스로부터 보호
- 확장성 : 프로세스 / 자원이 증가해도 안정적으로 작동
- 반응시간보장 : 시스템은 적절한 시간 안에 프로세스의 요구에 반응해야 함
- 무한연기방지 : 특정 프로세스의 작업이 무기한 연기되면 안됨(starvation)
스케줄링의 단계 : 현대의 CPU 스케줄러는 대부분 저 수준 ~ 중간 수준 스케줄링으로 구성됨
- 고수준 스케줄링 : 전체 시스템의 부하를 고려하여 작업의 실행여부를 결정함. 전체 프로세스의 수 == 멀티프로그래밍 정도 결정
- 중간 수준 스케줄링 : 전체 시스템의 활성화된 프로세스로 인해 과부화가 걸린 경우 일부를 보류 상태로 보냄.
- 저수준 스케줄링 : 어떤 프로세스를 CPU에 할당할 지 결정함. 준비 → 실행 → 대기 → 준비 등과 같은 작업을 함.
비선점형 스케줄링 : CPU를 할당받아 프로세스가 실행중이면 다른 프로세스가 빼앗을 수 없는 방식. 컨텍스트스위칭이 적게 일어나지만 CPU 사용 시간이 짧은 프로세스들이 오래 기다리게되어 전체 성능이 저하됨.
- FCFS(First Come First Served) : 들어온 순서대로 실행. 공평하지만 긴 프로세스가 들어오면 다른 프로세스들이 기다려 전체 성능 저하를 일으키는 콘보이 효과(컨베이어 벨트)가 발생하고 작업중인 프로세스가 입출력 작업을 요청하면 CPU가 놀게 됨.
- SJF(Shortest Job First) - 우선순위 스케줄링(작업시간 빠른 순) : 빠르게 끝나는 작업이 먼저 실행. 프로세스의 종료시간 혹은 입출력이 발생해도 응답시간을 알 수 없고, starvation이 발생함
- HRN(Highest Response Ratio Next) - 우선순위 스케줄링(계산식에 따른) : SJF에서 starvation을 개선함(우선순위 = (CPU 사용시간 + 대기 시간) / CPU 사용시간) 그럼에도 짧은 프로세스가 우선순위가 높아 공평성이 위배 됨
선점형 스케줄링 : CPU를 할당받아 프로세스가 실행중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 방식. 빠른 응답을 요구하는 시분할 시스템에 적합하고, 컨텍스트스위칭이 자주 일어나지만 대부분의 저수준 스케줄러에 사용됨.
- RR(Round Robin) : 할당받은 타임슬라이스만큼 작업을 하다가 완료하지 못하면 준비 큐의 맨 뒤로 들어감. 문맥교환이 더 일어나기 때문에 타임슬라이스 크기를 적절히 선택해야 함.
- SRT(Shortest Remaining Time) - 우선순위 스케줄링(남은 작업시간 적은 순) : SJF + RR 방식. 기본적으로 RR로 사용하지만 CPU를 할당받을 프로세스를 선택할 때 남은 작업시간이 가장 적은 프로세스를 선택. 프로세스들의 남은 시간을 주기적으로 확인해야하고, SJF에 비해 컨텍스트스위칭도 발생되며, 프로세스 종료시간 확인도 어렵고, starvation이 발생됨
- 다단계 큐 : 우선순위마다 준비 큐 형성. 항상 가장 높은 우선순위 큐의 프로세스에 CPU를 할당 (우선순위가 낮은 큐에서 작업 실행 중이더라도 상위 단계의 큐에 프로세스가 도착하면 CPU를 빼앗음. 각 큐는 라운드 로빈이나 FCFS 등 독자적 스케줄링 사용 가능. starvation 발생
- 다단계 피드백 큐 : 다단계 큐와 동일 하지만, CPU를 사용한 프로세스는 원래의 큐가 아닌 우선순위가 하나 낮은 큐의 맨뒤로 들어감. 또한 우선순위가 낮은 큐 일수록 타임 슬라이스가 커져서 어렵게 CPU를 얻은만큼 좀 더 오래 사용할 수 있게 함. 가장 우선순위가 낮은 큐의 경우 무한대의 타임 슬라이스를 얻게 됨. 이러한 이유가 유닉스 운영체제에서 타임슬라이스를 유동적으로 사용할 수 있게한 이유임
준비 상태의 다중 큐 : 매번 우선순위가 높은 PCB를 찾아야 하는 문제 개선 → 스케줄링 알고리즘에 따라 여러개의 우선순위 준비 큐를 만듦
대기 상태의 다중 큐 : 인터럽트가 발생했을 때, 어떤 프로세스였는 지 찾아야 하는 문제 개선 → 같은 입출력끼리 묶음(HDD, CD-ROM, LAN 등) 준비에서 찾아서 실행상태로 옮기는건 1개씩 해야하지만 대기 → 준비로 옮기는건 동시에 처리된 것들을 한번에 보내도 되기 때문에 인터럽트 벡터라는 자료구조를 이용하여 모두 준비로 옮김
스케줄링 알고리즘의 선택기준 : 높은 CPU 사용률, 높은 처리량, 적은 대기시간, 적은 응답시간, 적은 반환시간 (앞 2개는 계산이 어려움)을 통해 평균 대기 시간을 계산 (모든 프로세스의 대기 시간의 합 / 프로세스의 수)
- 대기 시간 : 생성되고 대기 → 실행 전까지 시간
- 응답 시간 : 생성되고 첫 번째 출력까지의 시간
- 실행 시간 : 실행 → 종료까지의 시간
- 반환 시간 : 대기 시간 + 실행 시간
'CS > operation system' 카테고리의 다른 글
6. 데드락 (0) | 2021.10.06 |
---|---|
5. 프로세스 동기화 (0) | 2021.10.05 |
3. 프로세스와 스레드 (0) | 2021.10.05 |
2. 컴퓨터의 구조 (0) | 2021.10.04 |
1. 운영체제의 개요 (0) | 2021.10.04 |
Comments