Scheduling
CPU 스케줄링 (Scheduling) 개념
단계프로세스 스케줄링은 수행 단계의 따라 장기, 중기, 단기 스케줄링의 세 가지로 나뉘는데 이것은 스케줄링이 요구되는 시점을 기준으로 구분한다. 장기 스케줄링어느 작업을 커널에 등록시켜 프로세스로 만들어 줄 것인가를 결정하는 것으로 작업 스케줄링(Job Scheduling)이라고도 한다. 이 단계는 요청된 일을 프로세스로 만들어 시스템에 알려진 일거리로 추가하느냐를 결정하는 것으로 다중 프로그래밍의 정도를 조절하는 역할을 한다. 중기 스케줄링보류 상태의 프로세스들 중에서 어느 프로세스에게 메모리를 할당해 줄 것인가를 결정한다. 단기 스케줄링준비 상태에 있는 프로세스들 중에서 어느 프로세스에게 CPU를 할당할지를 결정하는 단계이다. 프로세스 스케줄러 또는 디스패처(Dispatcher)라 불리는 것에 의해..
[C++] 라운드 로빈 스케줄링 구현 (우선순위 큐 이용)
EHProcess.h #pragma once #include #include using namespace std; class EHProcess { string pname; //프로그램 이름 const int tjob; //전체 작업량 const int cjob; //cpu 점유 시 수행가능 최대 작업량 int ntjob = 0; //현재 남은 작업량 int ncjob = 0; //현재 cpu 점유 시 수행가능 최대 작업량 public: EHProcess(string pname, int tjob, int cjob); //Idle 상태에서 Ready 상태로 전이 void IdleToReady(); //CPU를 점유하여 실행, 남은 작업량 반환 int Running(); //프로세스 종료 void EndPro..
CPU 스케줄링(Scheduling) 알고리즘 정리 및 요약 | FCFS, SJF, Round Robin
CPU 스케줄링이란 CPU 이용률을 극대화하기 위해서는 멀티프로그래밍(multiprogramming)이 필요하다. 하지만 만약 CPU core가 하나라면 한 번에 하나의 프로세스만 실행 가능할 것이다. 이때 필요한 것이 CPU 스케줄링이다. 즉, CPU 스케줄링은 언제 어떤 프로세스에 CPU를 할당할지 결정하는 작업이라고 할 수 있다. CPU 스케줄러(CPU Scheduler)와 선점형(Preemptive), 비선점형(non-preemptive) 스케줄링 CPU 스케줄러는 메모리에 있는 프로세스들 중 어떤 프로세스를 실행할지 선택하고 CPU를 할당해주는 역할을 한다. CPU 스케줄러는 프로세스들이 다음과 같은 상황에 있을 때 스케줄링을 결정한다. 실행(running) 상태에서 대기(waiting) 상태로..