본문 바로가기

ETC/DailyRoutine

[방송통신대학교]운영체제 - 중간과제물 공통형

반응형

1.

1) 비선점 스케줄링 정책에서는 프로세스가 실행되기 시작하면 프로세스가 완료되거나 CPU를 자발적으로 포기할 때까지 계속됩니다. 이러한 정책은 우선순위가 높은 프로세스가 현재 실행 중이고, 우선순위가 낮은 프로세스가 준비될 때, 우선순위가 낮은 프로세스가 실행을 시작하기 전에 우선순위가 높은 프로세스가 완료될 때까지 기다려야 합니다.

따라서, 비선점 스케줄링 정책은 우선순위가 높은 프로세스가 계속 먼저 실행되는 것을 보장합니다. 이러한 정책은 일반적으로 프로세스 간 컨텍스트 전환 비용이 높은 시스템에서 사용됩니다. 컨텍스트 전환이란 프로세스의 현재 상태를 저장하여 나중에 다시 시작할 수 있도록 하고, 실행을 시작할 수 있도록 다른 프로세스의 상태를 복원하는 프로세스입니다. 이러한 프로세스에는 레지스터 저장 및 복원과 같은 오버헤드가 수반되며 시간이 많이 소요될 수 있습니다.

하지만, 컨텍스트 전환이 비용이 많이 드는 시스템에서는 비선점 스케줄링 정책을 사용하면 수행해야 하는 컨텍스트 전환의 수를 줄일 수 있으므로 보다 효율적일 수 있습니다. 비선점 스케줄링 정책의 한 가지 단점은 특히 우선순위가 높은 프로세스가 많이 실행되는 경우 프로세스 대기 시간이 오래 걸릴 수 있다는 것입니다.

그러나, 비선점 스케줄링 정책은 잘못된 동작을 하는 프로세스를 처리하기 어렵게 만들 수 있는데, 이는 프로세스가 진행되지 않더라도 CPU를 자발적으로 포기하지 않을 수 있기 때문입니다. 따라서, 이러한 이유로 비선점 스케줄링 정책은 프로세스 수가 적고 동작이 양호한 시스템에서 종종 사용됩니다.

 

2)

비선점 스케줄링 알고리즘 중 우선순위 스케줄링에 대해 자세히 설명해 보겠습니다.

우선순위 스케줄링은 각 프로세스가 우선순위 값을 가지며, 해당 값에 따라 프로세스가 스케줄링됩니다. 이 알고리즘은 비선점 스케줄링 알고리즘 중 하나입니다.

우선순위가 높은 프로세스가 가장 먼저 실행되도록 예약됩니다. 그러나 동점일 경우, FCFS(First Come First Serve) 스케줄링이 사용됩니다.

우선순위 스케줄링의 단점 중 하나는, 우선순위가 높은 프로세스가 지속적으로 도착하고 먼저 스케줄링되면 우선순위가 낮은 프로세스의 기아 상태가 발생할 수 있다는 것입니다.

또한, 프로세스에 우선 순위 값을 할당하는 방법이 필요합니다. 이 방법은 항상 쉽지 않을 수 있습니다. 우선순위 할당 방식은 다양하며, 이에 대한 연구도 지속적으로 이루어지고 있습니다.

따라서, 우선순위 스케줄링은 프로세스의 우선순위에 따라 스케줄링되는 비선점 스케줄링 알고리즘 중 하나이며, 우선순위 값 할당 방법과 기아 상태 등의 문제가 있다는 것이 특징입니다.

 

예를 들어, 프로세스 우선순위를 고려한 스케줄링에서 어떤 프로세스가 실행되는 순서를 살펴보면 다양한 방법으로 스케줄링을 할 수 있습니다. 이 중에 하나로, P1, P2, P3 프로세스가 각각 2, 1, 3의 우선순위 값을 갖는다고 가정하면 다음과 같이 스케줄링 할 수 있습니다.

 

우선순위가 가장 높은 P3이 먼저 실행되고, 그 다음으로 P1, P2가 실행됩니다. 따라서, P30시간에 시작해 3시간 뒤에 P1, 6시간 뒤에 P2가 실행됩니다.

시간 프로세스
0 P3
3 P1
6 P2

 

2.

(1)

시간 0에서는 프로세스 A만 사용할 수 있습니다.

남은 CPU 시간(6)이 가장 짧기 때문에 첫 번째로 실행할 프로세스로 선택합니다.

선택한 프로세스: a

실행 순서: a

시간 6에서는 프로세스 BC를 모두 사용할 수 있습니다.

프로세스 BCPU 남은 시간(3)이 가장 짧기 때문에 다음 프로세스로 선택하여 실행합니다.

 

선택한 프로세스: b

실행순서 : A -> B

시간 9에서는 CD 프로세스를 모두 사용할 수 있습니다.

C 프로세스는 남은 CPU 시간(1)이 가장 짧기 때문에 다음 실행 프로세스로 선택합니다.

 

선택한 프로세스: c

실행순서 : A -> B -> C

시간 10에서는 프로세스 D만 사용할 수 있으므로 다음 프로세스로 선택합니다.

 

선택한 프로세스: d

실행순서 : A -> B -> C -> D

시간 12에서는 프로세스 E만 사용할 수 있으므로 마지막으로 실행할 프로세스로 선택합니다.

 

선택한 프로세스: e

 

실행순서 : A -> B -> C -> D -> E

 

(2)

프로세스의 반환 시간은 프로세스가 시스템에 들어온 순간부터 실행이 완료될 때까지

경과된 시간으로 정의(해당 프로세스가 완료된 시간 - 도착한 시간) 됩니다.

 

프로세스 A: 12 - 0 = 12

A 프로세스는 0 시점에 도착하였고, 12시간 동안 CPU를 사용하여 12시간에 작업을 마쳤으므로, 반환 시간은 12 - 0 = 12 입니다.

 

프로세스 B: 9 - 2 = 7

B 프로세스는 2 시점에 도착하였고, A 프로세스가 완료된 이후 2시간 뒤 CPU를 사용하여 5시간에 작업을 마쳤으므로, 반환 시간은 9 - 2 = 7 입니다.

 

프로세스 C: 10 - 3 = 7

C 프로세스는 3 시점에 도착하였고, B 프로세스가 완료된 이후 1시간 뒤 CPU를 사용하여 4시간에 작업을 마쳤으므로, 반환 시간은 10 - 3 = 7 입니다.

 

프로세스 D: 12 - 5 = 7

D 프로세스는 5 시점에 도착하였고, C 프로세스가 완료된 이후 3시간 뒤 CPU를 사용하여 7시간에 작업을 마쳤으므로, 반환 시간은 12 - 5 = 7 입니다.

 

프로세스 E: 16 - 7 = 9

E 프로세스는 7 시점에 도착하였고, D 프로세스가 완료된 이후 5시간 뒤 CPU를 사용하여 11시간에 작업을 마쳤으므로, 반환 시간은 16 - 7 = 9입니다.

 

A 프로세스의 반환 시간은 12, B, C, D 프로세스의 반환 시간은 7, E 프로세스의 반환 시간은

9 입니다.

 

평균 반환 시간을 계산하기 위해서는 각 프로세스의 반환 시간을 합산하여 총 프로세스

수로 나누면 됩니다.

 

평균 반환 시간 = (12 + 7 + 7 + 7 + 9) / 5

= 42 / 5

= 8.4

 

(3)

저는 FCFS(First-Come-First-Served) 알고리즘을 사용을 하여 풀이 하였습니다.

도착 시간 순서대로 정렬을 먼저 진행하고 그 다음, 정렬된 목록에 나열된 순서대로 프로세스를 실행합니다.

 

프로세스 A: 도착 시각 = 0, CPU 사이클 = 6

프로세스 B: 도착 시각 = 2, CPU 사이클 = 3

프로세스 C: 도착 시각 = 3, CPU 사이클 = 1

프로세스 D: 도착 시각 = 5, CPU 사이클 = 2

프로세스 E: 도착 시각 = 7, CPU 사이클 = 4

 

각 프로세스의 반환 시간은 해당 프로세스가 완료되는 시간에서 도착 시간을 뺀 값으로

계산됩니다.

 

먼저, 프로세스 A가 시작 시간 0에서 실행되었으며 CPU Cycle6이므로 0부터 5까지 6개의 단위 시간동안 실행되고, 6번째 단위 시간에 실행이 완료됩니다.

따라서, 프로세스 A의 반환 시간은 6이 됩니다.

 

프로세스 B는 시작 시간 2에서 도착하며 CPU Cycle3이므로 2부터 4까지 3개의 단위 시간동안 실행되고, 5번째 단위 시간에 실행이 완료됩니다.

따라서, 프로세스 B의 반환 시간은 5 2 = 3 이 아니라 5가 됩니다.

 

프로세스 C는 시작 시간 3에서 도착하며 CPU Cycle1이므로 3부터 4까지 1개의 단위 시간동안 실행되고, 4번째 단위 시간에 실행이 완료됩니다.

따라서, 프로세스 C의 반환 시간은 4 3 = 1 이 아니라 4가 됩니다.

 

프로세스 D는 시작 시간 5에서 도착하며 CPU Cycle2이므로 5부터 6까지 2개의 단위 시간동안

실행되고, 7번째 단위 시간에 실행이 완료됩니다.

따라서, 프로세스 D의 반환 시간은 7 5 = 2가 됩니다.

 

프로세스 E는 시작 시간 7에서 도착하며 CPU Cycle4이므로 7부터 10까지 4개의 단위 시간동안

실행되고, 11번째 단위 시간에 실행이 완료됩니다.

따라서, 프로세스 E의 반환 시간은 11 7 = 4가 됩니다.

 

평균 반환 시간은 각 프로세스의 반환 시간을 합한 후 총 프로세스 수로 나눈 값입니다.

평균 반환시간 = (6 + 7 + 8 + 8 + 10) / 5

= 7.8

 
 

 

반응형