-
[운영체제] 05. 스케쥴링CS/OS 2023. 5. 16. 00:07
05 .스케링 문제
- 작업 스케쥴링 : 대기중인 배치 작업 중 메모리에 적재할 작업
- cpu 스케쥴링 : 프로세스/ 스레드 중 하나를 선택하여 cpu 할당 (오늘날은 스레드)
- 디스크 스케쥴링 : 디스크 장치 내에서 입출력 요청 처리 순서
- 프린터 스케쥴링, 네트워크 스케쥴링, 서버에서의 요청 처리 등
다중프로그래밍 도입 목적 : 여러 프로세스가 하나의 cpu돌아가며 사용
-> 어떤 순서로 돌아갈지? 스케쥴링 필요 !
이걸 잘하면 cpu의 유휴(대기)시간 줄고, cpu 활용률 향상
다중프로그래밍의 2가지 스케쥴링
1. 작업 스케쥴링 : 디스크장치로 부터 메모리에 올릴 작업 선택하기
2. cpu 스케쥴링 : 메모리에 적재된 작업 중 cpu에 실행 시킬 프로세스 선택하기
스케쥴링 level ~ 발생 빈도 및 할당 자원에 따라
1. 고수준 스케쥴링 (Job Scheduling)
시스템 내의 전체 작업수 조절하는 것, 시스템 내에서 동시에 실행 가능한 프로세스의 갯수 결정 (다중프로그래밍의 정도 결정)(장기 스케쥴링)
2. 중간수준 스케쥴링 (Swapping)
중지와 활성화로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하 방지 (일부 프로세스를 중지상태로 옮겨서)
3. 저수준 스케쥴링 (Processor/CPU scheduling)
어떤 프로세스에 cpu 할당할지, 어떤 프로세스 대기 상태로 보낼지 경정 (아주 짧은 시간 일어남 ! 단기 스케쥴링)
cpu 할당 시간
cpu brust > i/o brust (but 우선순위, 빨리 끝내려고)
기본 목표 !! cpu활용률 극대화 -> 컴퓨터 시스템 처리율 향상
타임슬라이스(=타임퀀텀, 타임슬롯)
= 스케줄된 스레드에 한번 할당하는 cpu 시간
= 커널이 스케줄 단행하는 주기 시간
스케줄링 기준
1. cpu활용률
2. 처리율 (단위시간당 처리하는 프로세스의 개수)
3. 공평성 (기아 스레드 없도록)
4. 응답시간
5. 대기시간 (준비 큐)
6. 소요시간 (시작 - 완료까지)
5,6 알고리즘 평가 기준
cpu 스케쥴링이 실행되는 상황 (1,2 : 시스템 호출 서비스 루틴 3,4 : 인터럽트 서비스 루틴)
1. 스레드가 시스템 호출 끝에 I/O요청하여 블록될때, 블록만들고 스케쥴링 (CPU활용률 향상 목적)
2. 스레드가 자발적으로 CPU 반환할 때 , 커널은 현재 스레드 준비큐에 넣고 새로운 스레드 선택 (CPU 자발적 양보)
3. 스레드의 타임슬라이스가 소진되어 타이머 인터럽트 발생 (균등한 CPU분배 )
4. 더 높은 순위의 스레드가 요청한 입출력 작업완료, 인터럽트 발생 (우선순위)
스케쥴러
스케쥴러 타이머가 주기적으로 인터럽트 발생시킴
인터럽트 코드는 현재 실행중인 프로세스 실행시간 업데이트
스케쥴링해야하는 경우(위 4가지 상황) 스케쥴링 플래그 비트가 스케쥴링 타이머 인터럽트에 설정됨
인터럽트 종료
커널은 인터럽트의 리턴에 스케쥴링 플래그 비트가 설정되었는지 여부 판별, 되어있으면 디스패쳐
디스패쳐
Context switching을 실행하는 커널 코드
스케쥴러에 의해 선택된 스레드 CPU가 실행하도록 작업
실행중인 스레드의 강제 중단 여부에 따른 cpu 스케쥴링 타입 (운영체제 주도권 문제)
- 비선점 스케쥴링 : 현재 실행 중인 스레드 강제 중단 X (블록상태, sleep, yeild, 실행중 종료=시스템호출서비스 루틴)
장 : 스케쥴러 작업량과 문맥교환 오버헤드 적음
단 : 기다리는 프로세스 많아서 처리율 낮음
- 선점 스케쥴링 : 현재 실행 중인 스레드 강제중단 시키고 다른 스레드 선택, cpu할당 (타임슬라이스 소진, 우선순위높은 스레드 준비상태 =인터럽트 서비스 루틴)
장 : 프로세스 cpu 독점 x, 대화형이나 시분할 시스템 적합(응답성)
단 : 문맥교환 오버헤드 큼
오늘날 ! 선점 스케쥴링
우선순위
정적 스케쥴링 : 운영체제가 프로세스에 우선순위 부여하면 프로세스 끝날때 까지 변화 X ( 구현 쉽지만, 작업효율 떨어짐)
동적 스케쥴링 : 프로세스 생성시 부여받은 우선순위 작업 중간에 변화 ( 구현 어렵지만, 시스템 효율성 향상)
기아 (starvation) : 스레드가 스케쥴링에서 선택되지 못한 채 오랫동안 준비 리스트에 있는 상황
에이징 (aging) : 기아의 해결책, 준비 리스트 머무는 시간 비례해 스케쥴링 순위 높이기
멀티코어 시스템 멀티 스레딩
1. 문맥교환 오버헤드 증가 (이전에 실행된 적 없는 코어에 스레드 배치..)
2. 코어별 부하 불균형 문제 (코어마다 처리 할 스레드 수의 불균형 발생)
해결책
1. cpu 친화성 (코어 친화성) : 스레드를 동일한 코어에서만 실행하도록 스케쥴링
2. 부하 균등화 기법 : 코어 사용량 감시 스레드가 작업 재할당하여 부하 분산
push migration 짧거나 빈 큐 가진 코어에 다른 큐 스레드 옮겨놓기
pull migration 코어가 처리할 스레드 없게 되면 다른 코어의 스레드 큐에서 자신이 큐에 가져와 실행
'CS > OS' 카테고리의 다른 글
[운영체제] 04. 스레드 (0) 2023.05.16 [운영체제] 03. 프로세스 (1) 2023.05.16 [운영체제] 02. 컴퓨터 아키텍쳐 (0) 2023.05.16 [운영체제] 01. OS (0) 2023.04.17