scheduling 3

[OS/운영체제] CPU 스케줄링 (CPU Scheduling) - (3)

Priority Scheduling 각 프로세스에 우선도 값을 부여하여, 우선도 값이 높은 프로세스를 CPU에 우선 할당하는 알고리즘이다. (즉, SJF도 Burst Time이 짧은 프로세스가 높은 우선도를 갖는 Priority Scheduling의 한 경우로 볼 수 있다.) 동일한 우선도에 대해서는 FCFS 알고리즘을 적용한다. 우선도는 정의하기 나름이다. 1이라는 우선도가 3이라는 우선도에 비해 낮을 수도 있고, 높을 수도 있다. (참고한 교재 『Operating System Concepts』 에서는 낮은 숫자를 높은 우선도로 두었다.) 우선도는 내부적 또는 외부적으로 정의될 수 있다. 내부적으로 정의된 우선도는 프로세스의 우선도를 계산하기 위해 측정 가능한 양을 사용한다. 시간 제한이나, 메모리 요..

운영체제 2020.11.09

[OS/운영체제] CPU 스케줄링 (CPU Scheduling) - (2)

스케줄링 알고리즘 CPU 스케줄링 알고리즘은 준비 큐에 있는 프로세스들에 대해 어떤 프로세스를 CPU에 할당할지 결정한다. 각 알고리즘들을 살펴보자. FCFS (First-Come, First-Served) 가장 단순한 알고리즘으로, CPU의 사용을 먼저 요청한 프로세스가 먼저 할당되도록 동작하는 비선점 알고리즘이다. FIFO(First-In, First-Out) 자료구조인 큐(Queue)를 통하여 쉽게 구현할 수 있다는 장점을 갖는다. 하지만, 다음과 같은 상황에서 FCFS의 단점이 드러난다. 위의 예시에서 Burst Time은 프로세스가 CPU를 사용하는 시간이라 생각하면 된다. 이 상황에서 FCFS를 적용한다면, CPU는 P1, P2, P3 순서로 CPU를 할당하게 된다. 하지만 P1의 Burst ..

운영체제 2020.11.09

[OS/운영체제] CPU 스케줄링 (CPU Scheduling) - (1)

CPU 스케줄링 (CPU Scheduling) 단일 프로세서 시스템에서는, 한 번에 단 하나의 프로세스만 실행될 수 있다. 다른 모든 프로세스들은 CPU가 사용 가능해지고 자신이 다시 스케줄링될 때까지 반드시 기다려야만 하는 것이다. 멀티프로그래밍 시스템에서는 CPU 사용을 최대화하기 항상 몇 개의 프로세스들이 돌아가고 있다. 하지만 프로세스는 일반적으로 입출력 요청 등이 들어오면 그 요청이 완료될 때까지 대기해야 한다. 만약 컴퓨터 시스템이 CPU를 단순히 idle상태로 존재하도록 둔다면, 요청이 끝나길 기다리는 동안 아무것도 하지 않는 것이다. 이 때의 대기 시간은 그저 낭비될 뿐이다. 따라서 멀티프로그래밍 시스템은 이 필연적인 대기 시간을 효율적으로 사용하려 한다. 실행 중인 프로세스가 대기해야 할..

운영체제 2020.11.09