구현전에 알고 넘어가야되는 운영체제 개념
스케줄링?
- 프로세스가 작업을 수행하려면 스케줄러로부터 cpu를 할당 받아야 함
할당을 받는 건 순서에 의해 받을 수 있고, 처리하게 되는 시간을 배정을 받음
*선점과 *비선점 방식 존재
즉 단위시간당 할 수 있는 처리량을 최대화 하려는거(성능 향상 목적)
선점 스케줄링?
- 한 프로세스가 cpu를 할당받아서 실행하고 있을 때 다른 프로세스가
cpu를 사용하고 있는 프로세스를 중지시키고 cpu를 차지함
즉 우선순위가 높은 프로세스를 먼저 수행함
장점 - 응답이 빠름(실시간 응답환경)
문제점 - 우선순위 높은 프로세스가 계속 들어오면 *오버헤드 초래
오버헤드? - 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간
ex) Round-Robin Scheduling
추가) Pintos 초기 스케줄링은 선점 스케줄링인 *Round-Robin형식임
각 프로세스에 일정시간을 할당하고, 할당된 시간이 지나면 그 프로세스는 잠시 보류
다른 프로세스에게 기회를 주고, 또 그 다음 프로세스에게 기회
즉 돌아가며 기회를 부여하는 운영방식 -> 모든 프로세스가 조금씩 일할수있음
비선점 스케줄링?
- 이미 사용되는 cpu를 점유 못하고 반환까지 기다림
할당 받은 cpu는 끝날 때 까지 사용함
즉 모든 프로세스에 요구에 대해 공정함
장점 - 처리시간 편차가 적은 특정 프로세스 환경에 용이함
문제점 - 중요도가 높은 작업이 낮은 작업을 기다리는 경우가 발생할 수 있음(콘베이 현상)
ex) Priority Scheduling
추가) Round-Robin 방식에서 *우선순위 스케줄링 방식으로 바꿔야함
각 프로세스 별로 우선순위가 주어지고, 우선순위에 따라 CPU를 할당함
우선 순위가 같을 경우 FIFO(선입선출)
설정, 자원 상황 등에 따른 우선순위를 선정해 주요/긴급 프로세스에 대한 우선처리가 가능
PintOS 1주차에서 내가 가져갈 것
프로세스, 스레드에 대한 개념
busy-wait -> sleep-awake 구현을 통해 더 효율적인 구조로 개선함으로써
OS 동기화(synchronization)에 대한 개념, 필요성에 대한 이해
Round-Robin -> Priority Scheduling 구현을 통해
OS 스케줄링에 대한 개념, 이해
구현 후 추가 궁금증
Q. 왜 RR이 선점 스케줄링인가? 우선순위를 따로 두지않고 시간에 맞춰 CPU점유가 되는 방식 아닌가?
A. Round-Robin은 정해진 시간 할당량에 의해 CPU를 선점함
시간 할당량 안에 완료되지 못한 프로세스는
CPU점유를 다음 프로세스에게 반환해야함
즉 선점과 비선점의 차이는 실행하고있는 프로세스를
중단시키냐 마냐의 차이라고 이해
추가) 선점 우선순위 스케줄링와 비선점 우선순위 스케줄링 존재
Q. Round-Robin과 우선순위 스케줄링의 장단점 왜 바꾼거?
A.
Round-Robin
- 문맥 전환의 오버헤드가 큰 반면, 응답시간이 짧아지는 장점이 있어 실시간 시스템에 유리함
Priority Scheduling
- 일반적인 연산 위주 프로세스보다 입출력 위주 프로세스에게 높은 우선순위를 부여하여 대화성을 증진시킨다.
Q. 선점 우선순위 스케줄링은 Priority Inversion Problem만 해결하면 장땡일까? 비교적 낮은 우선순위를 가진 프로세스는 계속해서 비교적 높은 우선순위를 가진 프로세스가 들어오면 어떻게 CPU를 선점함?
A. 기아 상태(Starvation)가 유발될 수 있음. 우선순위가 높은 작업이 계속적으로 들어올 경우 우선순위가 낮은 작업이 준비 상태에서 보장없이 머물 수 있는데 이러한 기아 상태는 시스템에 머무는 시간이 증가하면 우선순위를 높여주는 에이징(Aging)기법으로 해결할 수 있음. 아무리 우선순위가 낮았던 프로세스라도 시간이 지나면서 우선순위가 높아져 결국은 CPU를 할당받음
선점 비선점 알고리즘 추가 공부자료 링크 - https://eun-jeong.tistory.com/17
'OS' 카테고리의 다른 글
크래프톤 정글 2기 2 PintOS Virtual Memory 중간진행 (0) | 2023.06.18 |
---|---|
크래프톤 정글 2기 2 PintOS Virtual Memory 메모리 용어정리 (0) | 2023.06.17 |
크래프톤 정글 2기 2 PintOS SystemCall (0) | 2023.06.12 |
크래프톤 정글 2기 1-2 PintOS Command Line Parsing (0) | 2023.06.03 |
크래프톤 정글 PintOS Project 1 프로세스/스레드 (0) | 2023.05.26 |