Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- AWS
- Queue
- Sequelize
- GIT
- 자료구조
- Bull
- MySQL
- MongoDB
- react
- class
- 게임
- jest
- nestjs
- game
- Python
- JavaScript
- 공룡게임
- mongoose
- Nest.js
- cookie
- TypeScript
- OCR
- nodejs
- 정렬
- Dinosaur
- dfs
- flask
- Express
- typeORM
Archives
- Today
- Total
포시코딩
[운영체제] 4. CPU Scheduling (1) 본문
728x90
키워드
cpu scheduling, cpu burst, i/o burst, i/o-bound process, cpu-bound process, cpu scheduler, dispatcher, nonpreemptive, preemptive
CPU Scheduling
- CPU burst: CPU만 연속적으로 쓰는 단계
- I/O burst: I/O만 연속적으로 쓰는 단계
어떤 프로그램이든 프로그램이 실행된다는 것은 CPU burst와 I/O burst를 반복하며 실행된다.
컴퓨터 안에는 똑같은 종류의 프로그램이 있는게 아니라 아래의 종류가 섞여있음
- CPU를 짧게 쓰고 중간에 I/O 작업이 들어오는 작업을 I/O bound job이라 함
- CPU를 굉장히 오랫동안 쓰는 작업을 CPU bound job이라 함
이렇게 여러 종류의 job(=process)이 섞여 있기 때문에 CPU 스케줄링이 필요
- 사실 CPU bound job은 문제가 되지 않음
- I/O bound job은 주로 interaction한 job이다 보니
즉, CPU가 너무 오랫동안 잡고 있으면 사람이 답답해지기 때문에
CPU를 공평하게 주는걸 넘어 사람하고 interaction한 job한테
CPU를 더 우선적으로 주는게 필요하다는게 CPU 스케줄링의 필요성이자 중요한 역할 중 하나
프로세스의 특성 분류
I/O-bound process
- I/O-bound job이라고도 함
- CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job
- (many short CPU bursts)
CPU-bound process
- CPU-bound job이라고도 함
- 계산 위주의 job
- (few very long CPU bursts)
CPU Scheduler & Dispatcher
CPU Scheduler
- Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고르는 역할
즉, 결정하는 역할 - 운영체제 안에서 CPU 스케줄링을 하는 코드를 CPU scheduler라고 부름
Dispatcher
- CPU의 제어권을 CPU scheduler에 의해 선택된 프로세스에게 넘기는 역할
즉, 제어권을 넘기는 역할 - 이 과정을 context switch(문맥 교환)라고 함
- CPU scheduler와 마찬가지로 운영체제의 기능 중 하나
필요한 경우
- 1. Running -> Blocked
ex) I/O 요청하는 시스템 콜 - 2. Running -> Ready
ex) 할당시간 만료로 timer inerrupt - 3. Blocked -> Ready
ex) I/O 완료 후 interrupt - 4. Terminate
ex) 프로세스의 종료 - 1, 4에서의 스케줄링은 *nonpreemptive(=강제로 빼앗지 않고 자진 반납)
- 2, 3에서의 스케줄링은 *preemptive(=강제로 빼앗음)
728x90
'CS (Computer Science)' 카테고리의 다른 글
[운영체제] 4. CPU Scheduling (3) (0) | 2023.05.01 |
---|---|
[운영체제] 4. CPU Scheduling (2) (0) | 2023.05.01 |
[운영체제] 3. 프로세스 관리 (4) (0) | 2023.04.28 |
[운영체제] 3. 프로세스 관리 (3) - 생성, 종료 (0) | 2023.04.28 |
[운영체제] 3. 프로세스 관리 (2) - Thread (0) | 2023.04.28 |