티스토리 뷰

[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다.

 

* 스케줄링(Scheduling)

- 여러 프로세스가 번갈아 사용하는 자원을 어떤 시점에 어떤 프로세스에 할당할지 결정하는 것

- 좋은 스케줄링은 프로세서의 효율성을 높이고, 작업(프로세스)의 응답 시간을 최소화하여 시스템의 작업 처리 능력을 향상 시킴

- 스케줄링이 필요한 프로세스 : 사용자 프로세스, 시스템 호출로 발생하는 시스템 프로세스

- 스케줄링이 필요 없는 프로세스 : 인터럽트 처리, 오류 처리, 사용자의 시스템 호출 등의 사전 처리가 대표적임

 

* 스케줄링의 목적

- 자원 할당의 공정성 보장

- 단위시간당 처리량 최대화

- 적절한 반환시간 보장

- 예측 가능성 보장

- 오버헤드 최소화

- 자원 사용의 균형 유지

- 반환시간과 자원의 활용 간에 균형 유지

- 실행 대기 방지

- 우선순위

- 서비스 사용 기회 확대

- 서비스 수 감소 방지

 

* 스케줄링 기준 요소

- 프로세서 버스트(Processor Burst) :  프로세스를 프로세서에서 실행할 때

- 입출력 버스트 : 프로세스가 추가로 실행하려고 입출력을 기다리고 있을 때

- 프로세스는 입출력 버스트 후 다음 프로세서 버스트를 위해 준비 큐로 이동함

- 입출력 중심 프로세스는 보통 프로세서 버스트가 매우 짧고, 프로세서 중심 프로세스는 프로세서 버스트가 매우 긺

 

* 스케줄링 단계

- 1단계 작업 스케줄링 -> 작업 선택 : 실제로 시스템 자원을 사용할 작업을 결정

- 2단계 작업 승인과 프로세서 결정 스케줄링 -> 사용 권한 부여 : 프로세서를 사용할 권한을 부여할 프로세스를 결정하는 작업 승인과 프로세서 할당 스케줄링으로, 시스템의 오버헤드에 따라 연기할 프로세스를 잠정적으로 결정함

- 3단계 프로세서 할당 스케줄링 -> 준비 상태의 프로세스에 프로세서 할당(디스패칭) : 디스패처(분배기)가 준비 상태에 있는 프로세스 중에서 프로세서를 할당할 프로세스를 결정하는 프로세스 할당 스케줄링

출처 : https://velog.io/@sawol/프로세스-스케줄링

 

* 스케줄링 큐

- 큐는 프로세스 제어 블록을 연결 리스트로 연결하는 형태

출처 : https://velog.io/@sawol/프로세스-스케줄링
출처 : https://velog.io/@sawol/프로세스-스케줄링

* 스케줄러

- 스케줄러는 먼저 스케줄링을 표현하는 방법을 알아야 이해할 수 있음

- 큐잉 도표(Queueing Diagram) : 프로세스 스케줄링을 표현하는 방법

 

* 스케줄러의 종류와 역할

- 장기 스케줄러(작업 스케줄) : 스케줄링에 따라 디스크에서 메모리로 작업을 가져와 처리할 순서를 결정하며, 시스템에 새로운 작업이 분(Minute)단위로 들어오므로 드물게 수행됨

- 단기 스케줄러 : 메모리에 적재된 프로세스 중 프로세서를 할당하여 실행 상태가 되도록 결정하는 프로세스 스케줄링으로, 실행할 프로세스를 수시로 선택함

- 중기 스케줄러 : 프로세스들이 프로세서를 서로 차지하려고 할 때 프로세스를 별도의 기억 장소에서 빼낼 수 있어 다중 프로그래밍의 정도를 줄일 수 있음 / 스왑 인과 스왑 아웃을 결정함

(참고) 스왑(Swap) : 작업의 혼합을 개선하거나 프로세스가 가지고 있던 메모리를 사용할 수 있게 하는데 필요함 

 

[프로세스 상태 변화와 스케줄러의 역할]

출처 : https://velog.io/@sawol/프로세스-스케줄링

 

- 장기 스케줄러 : 프로세스의 생성 과정에서 프로세스의 준비 상태에 무엇을 추가할지 결정하며, 메모리의 사용 가능 공간과 자원 확인

- 중기 스케줄러 : 스왑 기능의 일부로 메모리에 부분적으로 프로세스를 적재하고, 일시중지된 프로세서의 원인을 해결하면 다시 준비 상태로 만듦

- 단기 스케줄러 : 미리 정한 스케줄링 알고리즘에 따라 실행할 프로세스를 선택함

 

* 선점 스케줄링 

- 우선순위가 높은 프로세스들이 긴급 처리를 요청할 때 유용함

- 대화식 시분할 시스템이나 실시간 시스템에서 빠른 응답 시간을 유지하는데 필수임

- 오버헤드가 커질 수 있어 효과적으로 이용하려면 메모리에 프로세스가 많이 적재되어 있어야 함

- 실행할 수 있는 프로세스들이 준비 상태에 있어야 효과적임

 

* 비선점 스케줄링

- 실행 시간이 짧은 프로세스가 실행 시간이 긴 프로세스를 기다리는 대신 모든 프로세서를 공정하게 관리함

- 우선순위가 높은 프로세스를 중간에 입력해도 대기 중인 프로세스는 영향을 받지 않아 응답시간 예측하기 쉬움

 

* 스케줄링 알고리즘 선택 기준

- 프로세서 사용률 : 프로세서를 항상 실행 상태로 유지하여 유휴 상태가 되지 않도록 하며, 입출력 중심 작업보다는 프로세서 중심 작업을 실행

- 처리율 : 단위시간당 완료하는 작업 수가 많도록 짧은 작업을 우선 처리하거나 인터럽트 없이 작업 실행

- 반환시간 : 작업이 메모리에 들어가기까지 걸린 시간, 준비 큐에 머무는 시간, 실행 시간, 입출력 시간 등 작업을 완료하는데 소요되는 시간을 최소화하도록 일괄 처리 작업을 우선 처리

- 대기시간 : 작업의 실행 시간이나 입출력 시간은 영향을 줄 수 없으므로 준비 큐에서 기다리는 시간을 최소화하도록 사용자 수를 제한

- 반응시간 : 작업을 요청한 시간부터 반응을 시작한느 시간까지 간격으로, 대화형 시스템에 중요한 사항

 

[반환시간, 대기시간, 응답시간 관계]

출처 : https://velog.io/@sawol/프로세스-스케줄링

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함