프로세스의 CPU 동작
cpu가 메모리에서 명령어를 가져와서 동작을하게 되는데
CPU에서 동작하는 load, store, read등과 같은 명령어들이 있고, 외부 하드웨어 장치에 접근하여 수행하는 작업들이 있다.
각각을
- CPU bursts: CPU를 사용하여 실행되는 작업
- I/O bursts: I/O장치와의 상호작용하여 발생하는 작업
CPU 스케줄링이 필요한 이유
위와 같이 CPU에서 CPU만 사용하는 작업만 있는 것이 아닌 I/O 작업도 있기 때문에 이를 적절하게 분포해야한다.
또한 사람과의 소통에서 중요한 것은 I/O 작업인데, 이러한 작업을 더 자주 줘야 소통이 원활하기 때문이다.
- I/O bound process
- CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job
- CPU bound process
- 계산이 위주의 job
CPU Schduler
- Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다.
Dispatcher: CPU 스케쥴의 동자 과정
- CPU의 제어권을 CPU Schduler에 의해 선택된 프로세스에게 넘긴다.
- 이를 context switch라고 한다.
CPU 스케쥴링이 필요한 경우
Nonpreemptive한 경우
- Running -> Blocked (I/O 요청하는 시스템 콜)
- Termicate
preemptive한 경우
- Running -> Ready ( timer inerrupt)
- 기본적으로 I/O가 끝나면 Ready상태로 변경, 따라서 기존에 interrupt를 당한 프로세스에게 다시 돌아가지만
- 만약, I/O요청을 보냈던 우선순위가 1순위라면 interrupt당한 프로세스에게 다시 돌아가지 않고 원래 친구에게 보낸다.
- Blocked -> Ready (I/O완료 후 H/W인터럽트)
Bound Process
CPU가 실행될 때 , CPU burst와 I/O burst가 번갈아가며 발생하는데, 일반적으로 프로세스는 CPU burst를 먼저 실행, I/O burst 를 나중에 실행한다.
CPU bound process: CPU burst가 길고, I/O burst가 짧은 프로세스
- CPU를 많이 사용하는 계산 작업을 처리하기 때문에 CPU burst가 길어진다.
- 하지만 I/O burst가 짧아진다.
I/O bound process: CPU burst가 짧고, I/O burst가 긴 프로세스
- 다른 프로세스에게 CPU를 양보하고 대기
Scheduling Criteria
스케줄링에는 많은 알고리즘이 있는데 이를 판별하기 위해서는 아래와 같은 기준이 있다.
[시스템 기준] : CPU를 최대한 활용했는가
1. CPU utilization ( 이용률 ): 가능한 CPU가 쉬는 시간 없이 일하는가?
2. Throughput : 얼마나 많이 처리하였는가?
[프로세스 기준]
3. Turnaround time: 다 끝나고 나갈때 까지의 시간
4. Waiting time: CPU를 얻기 까지 기다린 시간
5. Response time: 최초의 CPU를 얻기까지 기다린 시간
'운영체제' 카테고리의 다른 글
운영체제 - 프로세스 생성 (0) | 2023.03.02 |
---|---|
운영체제 - Thread (0) | 2022.08.06 |
운영체제 - 프로세스 (0) | 2022.08.06 |
운영체제 - I/O 구조 (0) | 2022.08.03 |
운영체제 - 저장소 (0) | 2022.08.03 |