OS에서 여러개의 프로그램을 구동하는것을 멀티태스킹이라고 한다.
프로세스를 처리하는건 CPU가 담당한다는건 기본이고, 여러 프로세스를 동시에 처리하기 위해 (사실상 동시에 처리하는것처럼 보이기 위해) CPU를 나눠서 사용하는 기법이 필요한데 이를 스케줄링이라고 한다.
스케줄링은 비선점형과 선점형으로 구분된다.
1. 비선점형 : 프로세스가 CPU를 할당 받으면 끝날때까지 진행.
2. 선점형 : 다른 프로세스가 CPU를 사용중이여도 이를 중지하고, 자신이 점유할 수 있다.
스케줄링 알고리즘에는 다음과 같은 것들이 있다.
- 비선점 스케줄링
1. FCFS (First Come First Served)
먼저 요청한 프로세스에게 할당.
2. SJF (Shortest Job First)
CPU 점유 시간이 가장 짧은 프로세스에게 먼저 할당. 요구시간이 긴 프로세스는 계속 뒤로 밀리는 현상이 발생할 수 있다.
3. HRRN (Highest Response Ratio Next)
CPU 처리시간과 프로세스의 대기시간을 이용해 우선순위를 정함.
우선순위 = (대기시간 + 처리시간) / 처리시간
- 선점 스케줄링
1. RR (Round Robin)
일정시간을 정해두고 프로세스들을 순서대로 시간단위로 처리. 처리한 프로세스는 마지막 큐로 이동. 조금씩 돌려먹기 한다고 생각하면 편할듯. (1번처리 - 2번처리 - 3번처리 - 1번 이어서 처리 - 2번이어서 처리 - 3번 이어서 처리)
2. SRTF (Shortest Remaining-Time First)
SJF 방식을 선점형태로 수정한것이며, 작업중인 프로세스를 중단하고 새 프로세스를 처리할 수 있다
3. 다단계 큐 (Multilevel Queue)
준비 큐를 여러개의 큐로 분리하여 각각 우선순위를 부여한다. 각각 큐별로 다른 스케줄링 알고리즘을 적용할 수도 있다.
4. 다단계 피드백 큐 (Multilevel Feedback Queue)
다단계 큐의 발전된 형태로, 각 큐에 영구적으로 할당되지 않고 다른 큐로 갈아탈 수 있다.
5. RM (Rate Monotonic)
수행주기가 가장 짧은 프로세스에 우선순위를 부여하는 방식. 이라고 하는데 뭔말인지 모르겠고, 공식도 있는데 복잡..
6. EDF (Earliest Deadline First)
이거도 어렵다..
CPU 스케줄링 질문에 대답 못하고 멘붕와서 정리하려고 쓰는데..
종류도 많고 복잡한게 많아 최대한 간단히 기록..
'Info' 카테고리의 다른 글
Network - 서브넷마스크 (0) | 2016.08.31 |
---|---|
Info - C++ 요약 정리 (0) | 2016.08.31 |
Info - JAVA 환경변수 설정 (0) | 2016.08.31 |
Info - 소켓통신 Well known port (0) | 2016.08.31 |
Info - 프로그래밍 강좌 사이트 (0) | 2016.08.31 |