프로세스 : 실행 중인 프로그램
프로세스 제어 블록(PCB) : 프로세스에 대한 모든 정보를 가지고 있는 하나의 블록
-> PCB는 프로세스ID, 프로세스 상태, 주소레지스터 값, 주기억장치 정보 .. 등의 정보를 포함한다.
(괄호는 이해를 돕기 위해 은행 갔을 때와 비유한 내용)
프로세스를 어떤 순서로 실행시키냐에 따라서 CPU가 처리하는 속도가 달라진다.
이렇게 프로세스의 실행순서를 결정하는 것을 프로세스 스케슐링이라고 한다.
-> 프로세스 스케슐링을 하는 이유 : 시스템의 성능을 향상시키기 위해서
: 완료시간 ⬇️ / 대기시간 ⬇️ / 처리량 ⬆️ / 자원활용도 ⬆️ 일수록 성능이 좋다
각각 처리시간이 10, 3, 7인 프로세스 P1, P2, P3를 순서대로 실행시킨다.
위의 같은 조건에 따라 각 기법의 성능을 판단해보자.
기법 | 특징 | 순서 | 완료/대기시간 계산 |
---|---|---|---|
FCFS (P4) 기법 | 준비 큐에 먼저 들어온 프로세스를 먼저 실행시킴 (FIFO) | P1→P2→P3![]() | ![]() |
SJF 기법 | 작업이 끝나기까지의 실행시간 추정치가 가장 작은 프로세스를 먼저 실행시킴 | P2→P3→P1![]() | ![]() |
라운드로빈 | 각 프로세스가 차례대로 일정한 시간 간격동안 CPU를 사용하고 다시 준비큐에서 대기하기를 반복 | Time slice(타이머)가 3일 때, P1→P2→P3→P1→P3→P1→P3→P1![]() | ![]() |
우선순위 | 우선순위가 가장 높은 프로세스에게 먼저 CPU를 할당함 | 각 P1,P2,P3의 우선순위가 2,3,1일 때, P3→P1→P2![]() | ![]() |
-> 이 네가지 스케슐링 기법 중 가장 효율이 좋은 것은 SJF기법으로 볼 수 있다.
Q1. 아래 사진에 해당하는 P1, P2, P3의 상태를 각각 말하시오.
Q2. 아래의 조건일 때, 모든 프로세스가 종료할 때까지의 프로세스 실행순서를 쓰시오.
<조건>
라운드로빈 기법 사용
타이머(Time slice) : 3
처리시간이 각각 10, 3, 7인 프로세스 P1, P2, P3를 순서대로 실행
<답변예시>
P2->P3->P1->종료
Q3. 시스템 성능의 기준이 아닌 것을 고르시오.
➀ 응답시간 ➁ 대기시간 ➂ 처리량 ➃ 실행순서 ➄ 자원활용도
A1. P1: 대기상태, P2: 실행상태, P3: 준비상태
준비 상태일 때는 주기억장치의 준비 큐에 들어가고, 대기 상태일 때는 주기억장치의 대기 큐에 들어가고, 실행 상태일 때는 CPU에 들어간다.
생성 상태가 되면 주기억장치에 적재되고, 종료 상태가 되면 주기억장치와 CPU에서 모두 빠진다.
+) 큐는 들어온 순서대로 나간다 !
A2. P1->P2->P3->P1->P3->P1->P3->P1->종료
라운드로빈 기법은
각 프로세스가 차례대로 일정한 시간 간격(타이머시간)동안 CPU를 사용하고 다시 준비큐에서 대기하기를 반복하는 기법
위 조건에서는 P1, P2, P3 순서대로 각 3초씩 사용하고 준비큐에서 대기한다.
1. P1(10)이 3초동안 CPU 사용 / 준비큐에는 P2(3), P3(7)이 대기 / 3초 소요
2. CPU : P2(3) / 준비큐 : P3(7), P1(10-3=7) / 3초 소요
3. CPU : P3(7) / 준비큐 : P1(7) / P2 종료 / 3초 소요
4. CPU : P1(7) / 준비큐 : P3(7-3=4) / 3초 소요
5. CPU : P3(4) / 준비큐 : P1(7-3=4) / 3초 소요
6. CPU : P1(4) / 준비큐 : P3(4-3=1) / 3초 소요
7. CPU : P3(1) / 준비큐 : P1(4-3=1) / 1초 소요
8. CPU : P1(1) / P3 종료 / 1초 소요
9. P1 종료
A3. ➃ 실행순서
- 완료(응답)시간 : 프로세스가 생성 ~ 종료 까지의 시간
- 대기시간 : 프로세스가 준비큐에서 대기하는 시간
- 처리량 : 일정시간 내에 처리 완료된 프로세스의 수
- 자원활용도 : 일정시간 내에 CPU가 활용된 시간
완료시간 ⬇️ / 대기시간 ⬇️ / 처리량 ⬆️ / 자원활용도 ⬆️ 일수록 성능이 좋다