일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인터럽트
- 렌더링 파이프라인
- 혼자 공부하는
- 지역변수
- 프로세스
- 컴퓨터구조
- 스레드
- DDR SDRAM
- static
- CPU 스케줄링
- 138477
- 장치컨트롤러
- 입출력장치
- 멀티스레드
- 그래프
- dfs
- 코딩테스트
- 한빛미디어
- 컴퓨터 구조
- 보조기억장치
- 131701
- 프로그래머스
- C++
- BFS
- Transform
- 독학
- 운영체제
- 혼자공부하는
- DirectX
- 풀이
- Today
- Total
빼미의 개발일기
[운영체제] - 28강. CPU 스케줄링 개요 본문
이 글은 한빛미디어 '혼자 공부하는 컴퓨터 구조 + 운영체제'를 공부하고 정리한 내용입니다.
운영체제는 CPU를 어떻게 프로세스에 배분하는가?
● CPU 스케줄링 : 운영체제에서 프로세스들에게 CPU 자원을 합당하게 배분하는 과정
○ 프로세스 우선순위
- 프로세스는 각자의 PCB에 우선순위를 가지고 있고, 보통 입출력 작업이 많은 프로세스가 우선순위가 높은 편이다.
- 프로세스는 프로세스 상태의 실행상태와 대기상태를 반복하며 실행하게 되는데, 실행상태동안 CPU를 사용하는 구간을 CPU 버스트(CPU Burst), 입출력 완료까지 대기상태로 기다리는 구간을 입출력 버스트(I/O Burst)라고 한다.
- 입출력 작업이 많은 프로세스를 입출력 집중 프로세스(I/O Bound Process), CPU 작업이 많은 프로세스를 CPU 집중 프로세스(CPU Bound Process)라고 하는데, 운영체제는 각 프로세스의 상황에 맞게 CPU를 배분한다.
(입출력 집중 프로세스는 입출력 버스트가 길어 완료 후 다시 준비상태로 돌아오기까지 CPU 집중 프로세스에 비해 시간이 걸린다. 때문에 우선적으로 배정받아 처리한다.)
○ 스케줄링 큐 : 운영체제에서 자원을 사용하고자 하는 프로세스들을 줄세우는 대기줄.
- 대표적인 스케줄링 큐는 CPU를 이용하기 위한 준비 큐(Ready Queue) 와 입출력 완료를 기다리는 대기 큐(Waiting Queue)가 있다.
- 운영체제는 대부분의 자원을 큐로 관리하며, 준비 큐는 FIFO 형식으로 들어가되 우선순위를 고려하고, 대기 큐는 입출력이 완료되어 완료 인터럽트가 발생하면 해당 프로세스의 PCB를 준비상태로 변경후 대기 큐에서 제거한다.
● 선점형 스케줄링 & 비선점형 스케줄링
- 프로세스가 CPU를 비롯한 자원을 사용하고 있더라도 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식을 선점형 스케줄링(Preemptive Scheduling)이라고 한다.
- 타이머 인터럽트로 인해 자원 이용중인 프로세스를 다른 프로세스로 문맥 교환 하는 방식은 선점형 스케줄링의 일종으로 볼 수 있다.
- 반대로 하나의 프로세스가 자원을 이용하고 있을 때 프로세스가 종료되거나 대기상태로 접어들기 전까지 끼어들 수 없는 스케줄링 방식을 비선점형 스케줄링(Non-Preemptive Scheduling)이라고 한다.
선점형 스케줄링 | 비선점형 스케줄링 |
CPU를 강제로 뺏음 | 종료되거나 대기상태가 될때까지 대기 |
문맥 교환 오버헤드 발생 가능성 높음 | 문맥 교환 오버헤드 발생 가능성 적음 |
빠른 응답시간을 요하는 대화식 시분할 시스템이나 실시간 시스템에 적합 | 응답시간 예측 용이 |
우선순위 높은 프로세스의 긴급 처리에 유용 | 큐에 들어온 순서대로 처리해 주는 면에서 공정성 |
CPU 독점 불가 | 긴 프로세스가 짧은 여러 프로세스를 오래 대기 시킬 수 있음 |
메모리에 많은 프로세스 적재 필요 | 처리율이 떨어질 수 있음. |
※ 참고자료
스케쥴링 큐, 장기,단기,중기 스케줄링/ 선입선처리, 최소작업, 우선순위 스케줄링
다중 프로그래밍이 아니면 cpu 스케쥴링을 고려할 필요가 없습니다. 여러 프로세스가 돌고 있기 때문에 스케줄링이 필요한 것 이죠 cpu버스트를 이용한 스케줄링은 적절히 섞는 것입니다. 적절히
wonin.tistory.com
'프로그래밍 > 운영체제' 카테고리의 다른 글
[운영체제] - 30강. 프로세스 동기화 (2) | 2023.11.19 |
---|---|
[운영체제] - 29강. CPU 스케줄링 알고리즘 (0) | 2023.11.16 |
[운영체제] - 27강. 스레드 (0) | 2023.11.14 |
[운영체제] - 26강. 프로세스 상태와 계층 구조 (0) | 2023.11.07 |
[운영체제] - 25강. 프로세스 개요 (0) | 2023.11.07 |