티스토리 뷰
2023.02.05 - [자료구조 및 알고리즘] - #7 큐(Queue) - 개념(FIFO : First In First Out)
- CPU 스케줄러가 어떻게 동작하는지 알아보기 전에 이번 글과 관련이 있으므로 먼저 읽어보자
● 프로세스 상태
- 이전 글에서 작성했던 프로세스 상태에 대해 다시 알아보자
2023.02.24 - [운영체제] - #8 프로세스 상태 with 시분할 처리
- 프로세스가 생성되면 준비상태로 전환되고
- 준비상태에서 CPU를 기다리고 있는 프로세스들은 CPU 스케줄러에 의해 실행상태로 전환된다.
- 실행상태에 있는 프로세스는
1. CPU 할당 시간이 다 됐다면 다시 준비상태로
2. I/O 요청이 있다면 대기상태로
3. 작업이 끝났다면 완료상태로 전환된다.
- 이 중 프로세스가 대기하고 있는 준비상태와 대기상태는 Queue 자료구조로 관리된다.
- Queue는 First In First Out 구조이다.(먼저 들어온 것이 가장 먼저 처리를 받는다.)
● 다중큐
- 프로세스가 실행상태 → 준비상태로 돌아갈 때
- OS는 해당 프로세스의 우선 순위를 보고 그에 맞는 '준비 큐'에 넣는다.
- 이후 CPU 스케줄러는 '준비상태의 다중큐'에 들어있는 프로세스들 중에서 적당한 프로세스를 선택해서 실행상태로 전환
- 프로세스가 실행상태에서 I/O 요청을 받아 대기상태로 오게되면(실행상태 → 대기상태)
- I/O 작업의 종류에 따라 분류된 큐에 들어가게 된다.
ex)
- 아래 그림에서 하드디스크 작업은 HDD 큐에 들어가고
- 하드디스크 작업이 완료되어 인터럽트가 발생되면 HDD 큐를 뒤져서 해당 프로세스를 다시 꺼내간다.
- 위에서 Queue에 프로세스가 들어간다고 했는데 정확히 말하면 프로세스의 정보를 담고 있는 PCB가 Queue에 들어간다고 해야한다.
● 정리
- 프로세스 정보를 담고있는 PCB는 준비상태의 다중큐에 들어가서 실행되기를 기다리고있다가
- CPU 스케줄러에 의해 실행상태로 전환된다.(준비상태 → 실행상태)
- 바로 이때 CPU 스케줄러가 준비상태의 다중큐를 참조해서 어떤 프로세스를 실행시킬지를 결정하는 것이다.
- I/O 작업도 이와 비슷하다.
- 실행중인 프로세스에서 I/O 작업이 발생하면 해당 I/O 작업의 종류별로 나뉜 Queue에 들어가고 CPU 스케줄러는 이를 참조해 스케줄링을 진행한다.
'CS > 운영체제' 카테고리의 다른 글
#15 스케줄링 알고리즘 - FIFO(First In First Out) / 평균 대기 시간 (0) | 2023.03.13 |
---|---|
#14 스케줄링 목표 (0) | 2023.03.12 |
#12 CPU 스케줄링 개요 (0) | 2023.03.09 |
#11 프로세스와 Thread (0) | 2023.03.03 |
#10 프로세스 생성과 종료 with fork, exec 함수 (0) | 2023.02.27 |
- Total
- Today
- Yesterday
- Java8
- DART
- 메모리
- 빅데이터 분석기사
- 자료구조
- Stream
- 코딩테스트
- db
- 프로그래머스
- Phaser3
- Spring Boot
- MongoDB
- SQL
- OS
- git
- java
- SpringBoot
- spring
- node.js
- 알고리즘
- Phaser
- jpa
- 코테
- 빅데이터
- 프로세스
- nosql
- MySQL
- Advanced Stream
- API
- 운영체제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |