프로세스가 구동하기 위해서 다양한 시스템자원 (ex..CPU)이 필요한데, 최고의 성능을 내기 위해서는 이 자원들을 어떤 프로세스에 얼마나 할당할지가
매우 중요하다. 이를 결정짓는 것이 CPU 스케줄링이다.
기아현상?
특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태.
이를 해결하기 위해서aging기법
,PriorityQueue대신 FIFO기반 Queue사용
등을 사용한다.
이를 표현한 단어들로
프로세스 상태는 다음과 같은 형태를 띈다.
프로세스 상태 표
프로세스 상태 | 설명 |
---|---|
생성 상태 | 프로세스가 생성된 상태 |
준비 상태 | CPU를 할당받을 수 있는 상태 각각 우선순위를 부여하여 가장 높은 것이 다음 순서에 CPU를 항당 받음 |
실행 상태 | CPU를 할당받아 동작 중인 상태 |
대기 상태 | 프로세스 실행 중 입출력 등으로 인해 CPU를 반환하고 대기하는 상태 우선순위 x |
완료 상태 | 프로세스가 CPU를 할당받아 주어진 시간내에 완전히 수행 완료한 상태 |
프로세스 상태전이 표
프로세스 상태전이 | 설명 |
---|---|
디스패치 | 준비상태에 있는 프로세스 중 실행될 프로세스를 선정(Scheduling)하여 CPU를 할당(Context Switching 발생) |
타이머 런아웃 | 프로세스는 지정된 시간을 초과하면 스케줄러에 의해 PCB를 저장하고, CPU를 반환 후 다시 준비상태로 간다 |
웨이크업 | 어느순간에 입출력이 종료되면 대기 상태 프로세스에게 입출력 종료 사실을 알리고 준비상태로 전이 |
1. Priority Scheduling
2. Round Robin
할당시간(Time Quantum)
이 작으면 , Context Swtiching이 잦아져 오버헤드 증가한다.3. Multilevel-Queue(다단계 큐)
독자적인 스케줄링
을 가짐4.Multilevel-Feedback-Queue(다단계 피드백 큐)⭐️
시간할당량(Time Quantum)
이 작게, 낮으면 크게1. FCFS (First Come, First Service)
2. SJF (Shortest Job First)
3. HRN (Highest Response-ratio Next)
(종료시간 - 도착시간)
, 짧을수록 좋다(반환시간 - 서비스시간)