프로세스 스케줄링?
프로세스 스케줄링이란 프로세스가 생성되어 실행될 때 필요한 시스템의 여러자원을 해당 프로세스에게 할당하는 작업을 뜻 하며, 대기 시간은 최소화 하고 최대한 공평하게 처리하는 것을 목적으로한다.
스케줄링 목적/평가기준
- CPU 이용률(CPU utilization) : CPU를 얼마나 바쁘게 하는가. 높을수록 좋다.
- 처리율(Throughput) : 단위시간당 얼마나 많은 프로세스들이 완료되는가. 클 수록 좋다.
- 소요시간(Turnaround time) : 프로세스가 요청된 후 완료하기까지 얼마나 걸리는가. 메모리 접근 시간, 대기 큐에서의 대기 시간, CPU에서의 실행 시간, I/O 시간 등의 합으로 계산한다. 짧을수록 좋다.
- 대기시간(Waiting time) : 프로세스가 대기 큐에서 기다리는 시간의 합. 짧을수록 좋다.
- 반응시간(Response time) : 프로세스가 요청된 후 첫 번째 응답을 받기까지 걸리는 시간. 주로 상호교환 시스템(interactive system)에서 사용된다. 짧을수록 좋다.
프로세스 상태
1. New (생성): 사용자가 프로그램을 실행하면 프로세스가 생성.
2. Ready (준비): 프로세스가 대기 큐에서 CPU를 차지하기 위해서 기다린다.
3. Running (실행): 프로세스가 CPU를 차지하면서 실행되는 상태.
4. Waiting(대기): 프로세스가 입출력이나 이벤트를 기다리는 상태. 해당일이 끝나면 준비상태로 되돌아간다.
5. Terminated (종료): 프로세스 종료 상태
스케줄링 큐(Scheduling Queue)
프로세스가 시스템에 들어가면 준비 큐(ready queue)에 들어가서 준비 상태가 되어 CPU를 할당받을 때(dispatch)까지 ready queue에서 대기한다. 이 큐는 일반적으로 연결 리스트로 저장된다.
그리고 CPU가 할당되면 아래 사건들 중 하나가 발생할 수 있다.
- 프로세스가 I/O(입출력)을 요청하여 wait queue에 저장
- 프로세스가 child process를 생성하고 그 프로세스가 종료될 때까지 기다린다. 역시 wait queue에 저장
- 프로세스가 interrupt의 결과에 따라 강제로 CPU로부터 제거되어 ready queue에 다시 놓일 수 있다.
- CPU 이용시간이 만료되어서 ready 큐로 다시 저장
프로세스가 종료될때까지 이 주기를 계속 반복한다.
문맥 교환(Context Switch)
프로세스가 실행되다가 인터럽트가 발생해 운영체제가 개입하여 프로세서에 할당된 프로세스를 바꾸는 것을 말한다.
시스템 콜을 사용해야 하는 경우 프로세스가 자체적으로 처리할 수 없기 때문에 운영체제가 개입해야 한다. 프로세서가 다른 프로세스로 스위치할 때, 시스템은 작업중이던 프로세스의 상태를 저장하고 새로운 프로세스의 상태를 로드한다.
컴퓨터과학에서 컨텍스트는 내 시스템에서 활용 가능한 모니터링된 정보들을 의미한다. 프로세서 입장에서 컨텍스트는 PCB이기 때문에 PCB 정보가 바뀌는 것을 컨텍스트 스위치라고 부른다. 컨텍스트 스위치는 오버헤드가 발생하는 작업이기 때문에 너무 자주 일어나면 성능을 저하한다.
'운영체제' 카테고리의 다른 글
[운영체제] CPU 스케줄링 (0) | 2021.09.06 |
---|---|
[운영체제] 스레드(Thread), 스레드 모델 (0) | 2021.09.01 |
[운영체제] 프로세스 구조, 생성, 종료, 통신 (0) | 2021.08.27 |
[운영체제] 프로세스(프로세스 메모리, PCB) (0) | 2021.08.24 |
[운영체제] 컴퓨터 메모리 구조 (0) | 2021.08.23 |