일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- prettier
- archiver
- js
- swiper
- watchOverflow
- realIndex
- classlist
- index
- eslint
- slidePerView
- querySelector
- error
- css
- v-bind
- loop:true
- swiperOption
- CORS
- javascirpt
- vue2
- eslint prettier
- JavaScript
- vscode
- Vue
- 인덱스
- slidePerGroup
- centerSlides
- activeIndex
- display
- jquery
- slideChange
- Today
- Total
코딩하는 둥둥
[ 쉽게 배우는 운영체제 ] 4-3. 다중 큐 본문
준비 상태의 다중 큐
CPU 스케줄러는 모든 프로세스 제어 블록을 뒤져서 가장 높은 우선순위의 프로세스에 CPU를 할당하는데 매번 프로세스 제어 블록을 검색하는 것은 번거롭고 불편하다. 따라서 우선순위에 따라 여러 개의 큐를 만들면 편리하다.
프로세스는 준비상태에 들어올 때마다 자신의 우선순위에 해당하는 큐의 마지막에 삽입된다. 준비 큐를 몇 개로 나눌지, 여러 개의 준비 큐에 있는 프로세스 중 어떤 프로세스에 CPU를 해당할지 결정하는 일은 스케줄링 알고리즘에 따라 달라진다.
프로세스의 우선순위를 배정하는 방식에는 고정 우선순위(static priority) 방식과 번동 우선순위(dynamic priority) 방식이 있다.
- 고정 우선순위 방식 : 운영체제가 프로세스에 우선순위를 부여하면 프로세스가 끝날 때까지 바뀌지 않는 방식이다. 프로세스가 작업하는 동안 우선순위가 변하지 않기 때문에 구현하기 쉽지만, 시스템의 상황이 시시각각 변하는데 우선순위를 고정하면 시스템의 변화에 대응하기 어려워 작업 효율이 떨어진다.
- 변동 우선순위 방식 : 프로세스 생성시 부여받은 우선순위가 프로세스 작업 중간에 변하는 방식이다. 구현하기 어렵지만 시스템의 효율성을 높일 수 있다.
변동 우선순위 방식이 시스템의 효율을 높이는 방법으로는 프로세스의 낮은 우선순위를 높은 우선순위로 바꾸는 방법이 있으며 이러한 방법을 반전 우선순위 priority inversion라고 한다.
대기 상태의 다중 큐
입출력이 완료되기를 기다리는 프로세스가 모여있는 대기상태에서도 다중 큐를 사용한다.
같은 장치의 입출력을 기다리는 프로세스의 프로세스 제어 블록은 동일한 입력 큐에 모여 있다.
준비상태의 다중 큐와 대기 상태의 다중 큐는 차이가 있다. 준비 큐는 한 번에 하나의 프로세스를 꺼내어 CPU로 할당하는 반면, 대기 큐는 여러 개의 프로세스 제어 블록을 동시에 꺼내어 준비상태로 옮긴다. 시스템에는 많은 입출력 장치가 있기 때문에 입출력이 동시에 끝날 경우 여러 개의 인터럽트가 한 번에 처리된다. 이렇게 동시에 끝나는 인터럽트를 처리하기 위해 인터럽트 백터 interrupt vector라는 자료구조를 사용한다.
대기 상태의 다중 큐에 있는 프로세스 제어 블록은 큐에 삽입된 순서대로 처리되지만, 일부는 나중에 들어온 프로세스 제어 블록이 먼저 준비 상태로 옮겨가기도 한다.
다음은 프로세스의 상태에 다중 큐를 합쳐서 정리한 것이다.
프로세스 제어 블록은 준비 상태의 다중 큐에 삽입되었다가 CPU 스케줄러에 의해 실행상태로 옮겨지기도 하고, 입출력 요청이 있으면 대기상태의 다중 큐에 삽입되기도 한다. 그리고 입출력이 완료되면 다시 준비상태의 다중 큐로 이동하는데, 이러한 과정 전체를 CPU 스케줄러가 관리한다.
'Computer Science > 쉽게 배우는 운영체제' 카테고리의 다른 글
[ 쉽게 배우는 운영체제 ] 4-5. 인터럽트 처리 (0) | 2022.08.03 |
---|---|
[ 쉽게 배우는 운영체제 ] 4-4. 스케줄링 알고리즘 (0) | 2022.07.23 |
[ 쉽게 배우는 운영체제 ] 4-2. 스케줄링 시 고려 사항 (0) | 2022.07.22 |
[ 쉽게 배우는 운영체제 ] 4-1. 스케줄링의 개요 (0) | 2022.07.21 |
[ 쉽게 배우는 운영체제 ] 3-5. 동적 할당 영역과 시스템 호출 (0) | 2022.07.21 |