-
유튜브에 공개된 『혼자 공부하는 컴퓨터 구조+운영체제』 강의를 보고 정리한 내용입니다.
출처 : 유튜브 - 혼자 공부하는 컴퓨터 구조+운영체제
CPU 스케줄링?
운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것
가장 합리적인 CPU 스케줄링?
CPU를 사용하고 싶어하는 프로세스들이 차례로 돌아가며프로세스마다 우선순위가 다르기 때문에 비효율적임(빨리 처리해야 하는 프로세스가 있기 때문)
→ 요구하는 자원에 맞게 CPU를 배분하는 것이 효율적
입출력 집중 프로세스(입출력 작업이 많은 프로세스, IO Bound Process)의 우선순위는
CPU 집중 프로세스(CPU 작업이 많은 프로세스, CPU Bound Process)의 우선순위보다 높다.
대부분의 프로세스는 CPU와 입출력장치를 번갈아 사용하면서 실행됨.
프로세스 종류마다 입출력을 많이 사용하는 프로세스도 있는 반면, CPU를 주로 사용하는 프로세스도 존재
→ 입출력 집중 프로세스는 CPU 집중 프로세스에 비해 대기 상태에 머무르는 시간 증가(= CPU를 사용하지 않음)
→ 입출력 집중 프로세스의 우선순위를 높혀 빠르게 처리하면 CPU 집중 프로세스한테 CPU를 더 많이 할당할 수 있음
프로세스 우선순위
요구하는 자원, 상황에 맞게 프로세스가 CPU를 이용할 수 있도록 운영체제가 부여. 프로세스의 PCB에 저장
일부 우선순위는 사용자가 직접 설정할 수 있음
리눅스에서 프로세스 우선순위를 보는 법: ps -el
프로세스(PCB)마다 우선순위가 있지만 운영체제가 다음 CPU를 사용할 프로세스를 찾기 위해 모든 프로세스의 PCB를 찾아보는 것은 비효율적이다. 메모리, 입출력장치 요청 또한 마찬가지. → 스케줄링 큐를 활용
스케줄링 큐
자원을 이용하고 싶은 프로세스들이 서는 줄, 스케줄링 큐는 반드시 선입선출
(FIFO)일 필요 X
준비 큐
준비 상태인 프로세스로 구성된 큐
CPU를 이용하기 위해 기다리는 줄
대기 큐
대기 상태인 프로세스로 구성된 큐
입출력장치를 이용하기 위해 기다리는 줄
+ 대기 큐
컴퓨터는 여러 입출력장치가 존재
대기큐는 일반적으로 입출력장치마다 존재
→ 같은 장치를 요구하는 프로세스는 같은 대기 큐에서 대기
프로세스 상태 다이어그램(+큐)
선점형(preemtive), 비선점형(non-preemtive) 스케줄링
아래 상황이 발생할 수 있음
- 선점형 스케줄링 : 현재 CPU를 사용 중인 프로세스로부터 CPU 자원을 빼앗아 다른 프로세스에게 할당
- 비선점형 스케줄링 : 현재 CPU를 사용 중인 프로세스의 작업이 끝날 때 까지 프로세스 대기
선점형 스케줄링
프로세스 하나가 CPU 자원을 독점해 사용할 수 없음
어떤 프로세스가 CPU를 할당 받아 사용중이더라도, 우선순위가 더 높은 프로세스가 cpu의 자원을 빼앗아서 사용할 수 있음
ex) 프로세스가 정해진 시간만큼 CPU를 사용하고 타임아웃 인터럽트를 활용해 자원을 분배하는 방식
장점: 어느 한 프로세스의 자원 독점을 막고 프로세스에게 골고루 자원 분배 가능
단점: 문맥 교환 과정에서 오버헤드가 발생할 수 있음
비선점형 스케줄링
어떤 프로세스가 자원을 사용중이라면 프로세스가 종료/대기 상태가 될 때 까지 자원을 사용할 수 없음
장점: 문맥 교환 과정에서 오버헤드가 발생할 수 있음
단점: 어느 한 프로세스의 자원 독점을 막고 프로세스에게 골고루 자원 분배 가능
반응형'CS > 운영체제' 카테고리의 다른 글
프로세스 상태와 계층 구조 (3) 2025.06.08 프로세스 (0) 2025.06.08