7회차
이찬우
CPU 스케줄링
스케줄링 단계
고수준
- 시스템 내의 전체 작업 갯수 조절
중간 수준
- 중지와 활성화로 활성화된 프로세스 갯수 조절, 과부하 방지
- 고수준과 저수준의 완충 역할
저수준
- 프로세스별 CPU 할당 및 상태 결정
- 짧은 시간동안 처리, 단기 스케줄링이라고도 불림
스케줄링 방식
선점형
- CPU 사용권 빼앗을 수 있음
- 인터럽트, 대화형 시스템, 시분할 시스템
비선점형
- CPU 사용권 뺏을 수 없음
- 일괄 작업 시스템
생각한 점들
스레드의 우선순위
- 프로세스는 OS의 CPU 스케줄러가 우선순위를 관리함
- 그러면 프로세스 안의 스레드는 우선순위가 어떻게 관리될까
자바
- 우선순위 스케줄링, 라운드 로빈 두 가지 방식 사용
- 사용자는 우선순위 스케줄링 영역만 조절 가능
1
2
3
4
thread.setPriority(1~10);
thread.setPriority(Thread.MIN_PRIORITY);
thread.setPriority(Thread.NORM_PRIORITY);
thread.setPriority(Thread.MAX_PRIORITY);
C#
- UI 스레드와 작업 스레드가 별도로 존재
- UI 스레드에는 다른 스레드가 접근 불가, Dispatcher.invoke 등의 함수를 통해 큐에 삽입, 작업 요청
안드로이드
- UI 스레드, 바인더 스레드, 워커 스레드 등 존재
- UI 스레드는 C#과 비슷한 속성을 가짐, 메인스레드 만이 UI 조작 가능, 싱글 스레드
- 바인더 스레드는 IPC, 워커 스레드는 긴 기간의 작업 처리
김남영
스케줄링의 개요
- CPU 스케줄러는 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정하는 일을 한다.
- 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정한다.
스케줄링의 단계
고수준 스케줄링
- 가장 큰 틀에서 이루어지는 CPU 스케줄링
- 시스템 내의 전체 작업 수를 조절
- 작업이란 여러 개의 프로세스.
저수준 스케줄링
- 가장 작은 단위의 스케줄링
- 디테일한 일을 함.
- 어떤 프로세스에 CPU 할당할지, 대기 상태로 보낼지 등등..
중간 수준 스케줄링
- 중간 단계에서 일어나는 스케줄링
- 중지와 활성화로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막는다.
- 스케줄링의 단계
스케줄링의 목적
- 공평성
- 효율성
- 안정성
- 확장성
- 반응 시간 보장
- 무한 연기 방지
스케줄링 고려 사항
선점형 스케줄링
- 어떤 프로세스가 CPU를 할당 받아 실행 중이더라도 OS가 CPU를 강제로 빼앗을 수 없는 방식
비선점형 스케줄링
- 어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 방식
프로세스 우선순위
- 우선순위를 따진다는 것은 프로세스의 중요도가 다르다는 의미이다.
- 우선순위가 높은 것은 더 빨리 자주 실행된다.
CPU 집중 프로세스와 입출력 중심 프로세스
CPU 집중 프로세스
- 수학 연산과 같이 CPU를 많이 사용하는 프로세스
- CPU 버스트가 많은 프로세스
- CPU 버스트 :
CPU를 할당받아 실행하는 작업
입출력 집중 프로세스
- 저장장치에서 데이터를 복사하는 일과 같이 입출력을 많이 사용하는 프로세스
- 입출력 버스트가 많은 프로세스
- 입출력 버스트 :
입출력 작업
- 입출력 집중 프로세스를 먼저 실행상태로 옮기는 것이 효율적
- 대기 상태로 옮겨지므로 다른 프로세스가 CPU 사용 가능하기 때문이다.
- CPU 집중 프로세서보다 먼저 실행 상태에 들어가는 것을 사이클 훔치기라고 한다.
다중 큐
준비 상태 다중 큐
- 우선순위에 따라 나눠진 여러 개의 큐
- 준비 큐를 몇 개로 나눌지는 스케줄링 알고리즘에 따라 달라진다.
고정 우선 순위 방식
- OS가 프로세스에 우선순위를 부여하면 프로세스가 끝날 때까지 바뀌지 않는 방식
- 시스템의 변화에 대응이 어렵고 작업 효율이 떨어짐.
변동 우선순위 방식
- 프로세스 생성 시 부여받은 우선순위가 프로세스 작업 중간에 변하는 방식
- 시스템의 효율성을 높힘.
- 프로세스의 우선순위를 바꾸는 것을 반전 우선순위 라고 한다.
대기 상태 다중 큐
- 입출력이 완료되기를 기다리는 프로세스가 모여있는 다중 큐
- 같은 입출력을 요구한 프로세스끼리 모아 놓았다.
- 준비 상태 큐와 달리 PCB를 동시에 꺼내어 준비 상태로 옮긴다.
- 이 상황은 여러 개의 인터럽트가 필요한데, 인터럽트 자료 구조를 사용한다.
프로세스의 상태와 다중 큐
읽으면서 관심, 흥미로웠던 부분과 생각
원하는 프로세스의 우선순위를 높히는 것이 가능하다
- 특정 작업에 집중하고 싶을 때 직접 프로세스 우선순위를 높혀주면 될 것 같다.
- 영상 시청 버퍼링이 심할 경우 적용해봐도 좋을 것 같다.
- 하지만 요새 너무 사양들이 다 좋아서 그렇게 적용할 일은 없을듯.
우선순위가 높은 큐일 수록 프로세스 개수가 적은지
- 스케줄링 알고리즘을 공부하며 알아갈 수 있을 것 같다.
This post is licensed under CC BY 4.0 by the author.




