공부기록
처리기 스케줄링의 유형 본문
- 처리기 스케줄링의 목적
- 응답 시간이나 처리량, 효율성을 증대시키기 위해서 처리기가 다음에 실행할 프로세스를 선택하는 것
- 스케줄링 유형과 상태 전이도와의 관계
- 장기 스케줄링
- 새로운 프로세스가 생성될 때 적용
- 지금 막 생성된 프로세스를 "활성 프로세스 집합"에 추가할지 아닌지 결정
- 중기 스케줄링
- 스와핑 과정에서 적용
- 프로세스 이미지의 전체 혹은 일부를 메모리로 적재하여 실행 가능하도록 할 것인지의 여부결정
- 단기 스케줄링
- 사실상 의미 있는 스케줄링 단계
- 단기 스케줄링에서 다음에 실행할 프로세스를 선택
- 장기 스케줄링
- 스케줄링 기법의 중요성
- 스케줄링 기법의 성능은 시스템 전체 성능에 큰 영향을 미침
- 다음번에 실행할 프로세스와 대기해야 할 프로세스를 결정하기 때문
- 스케줄링이 얼마나 효율적이냐 하는 문제는 바로 프로세스들이 일생동안 각종 대기 큐에서 대기하는 시간을 얼마나 줄일 수 있을 것이냐 하는 문제
- 근본적으로 대기 큐의 구조를 최적화 하는 문제도 스케줄링 성능에 중요한 요소
- 스케줄링 기법의 성능은 시스템 전체 성능에 큰 영향을 미침
- 장기 스케줄링
- 장기 스케줄러
- 프로세스를 시스템으로 진입시킬지 말지를 결정
- 다중 프로그래밍의 정도 (수행중인 프로세스의 수) 를 제어하는 역할
- 장기 스케줄러에 의해 진입이 허용된 프로그램만이 프로세스가 될 수 있다.
- 프로세스가 되고 나면 단기 스케줄러가 사용하는 각종 큐에 진입할 수 있다.
- 어떤 시스템에서는 새로 생성된 프로세스는 무조건 스왑아웃 상태로 시작하는 경우도 있음
- 이 경우 해당 프로세스는 주익 스케줄러로 들어가는 큐에 놓임
- 일괄 처리 전용 시스템이나 범용 OS의 일괄 처리부에서는 새로운 작업들이 들어오면 이들을 디스크에 놓은 채 일괄 처리 큐에서 대기하게 함
- 그러면 장기 스케줄러는 적절한 시점에 이 일괄 처리 큐에서 소정의 규정에 따라 작업들을 골라 프로세스로 만들어 줌
- 장기 스케줄러의 결정사항
- 새로운 프로세스의 진입 허용 시점
- 현재 진입해있는 프로세스들이 만족할만한 서비스를 제공해 줄 수 있는 정도에서 다중 프로그래밍의 정도를 제한
- 제한 사항 내에서 프로세스가 종료되어 빈자리가 생기면 장기 스케줄러는 새로운 작업을 받아들일 준비를 함
- 종료된 프로세스가 없더라도 처리기의 부하가 일정 수준 이하로 떨어지면 장기 스케줄러는 새로운 작업을 받아들임
- 어떤 규정으로 작업들을 골라 프로세스로 만들 것인가?
- 허용 가능한 다중프로그래밍의 정도에 따라 다름
- 장기 스케줄러가 진입을 허용할 다음 프로세스를 고르는 알고리즘
- FCFS
- based on priority
- 진입 후 예상되는 실행시간의 길이에 따른 방식
- 입출력을 많이하는 프로세스를 우대 (I/O Bound vs CPU Bound)
- I/O 연산, CPU 연산 어느 것을 더 중요시 하느냐에 따라 다름
- 장기 스케줄러
- 중기 스케줄링
- 스와핑 기능
- 어떤 프로세스를 스왑 공간에서 주 메모리를 불러들이는 일도 결국엔 다중프로그래밍의 정도를 제어하는 일
- 스왑 공간으로 쫒겨나간 프로세스의 전체 혹은 일부 이미지를 다시 주 메모리로 스왑 인 할 것인지 결정
- 단기 스케줄링
- 단기 스케줄러 == 디스패처
- 매우 자주 실행되면서 세밀한 기준으로 다음 번에 실행시킬 프로세스를 선정하는 기능
- 단기 스케줄러가 호출되는 시점
- 현재 실행중인 프로세스가 자발적으로 CPU를 놓은 경우 (exit( ))
- Time Quantum을 소진한 뒤 OS에 의해 강제적으로 CPU를 빼앗기는 경우 (TQ)
- 입출력 인터럽트 (I/O)
- 운영체제 시스템 호출 (System Call)
- 신호 (세마포어) (Signal)