Chapter 4

Question 1

Untitled

기본적인 실행 결과는 위와 같다. 명령어 뒤의 -l 5:100,5:100 flag는 5개의 명령어를 실행하며, 각 명령어가 CPU 명령일 확률이 100%인 프로세스 2개를 연달아 실행함을 의미한다. 이 경우에는 Important behaviors의 설명에 따르면 하나의 프로세스를 실행한 후 나머지를 실행하는 것으로 보인다.

다른 프로세스나 외부 요소의 개입이 없다면, 어떠한 IO 동작도 없으므로 CPU는 전체 시간 동안 두 프로세스를 차례대로 수행할 것으로 보인다. -p -c flag를 추가해 실제 실행 방식을 자세히 살펴보자.

Untitled

예상과 같이 Process 0은 5 단위 시간 동안 cpu를 차지하고 있고, Process 1은 Process 0이 모두 실행된 이후에 나머지 5 단위 시간동안 cpu를 차지하게 된다.

Question 3

우선 4:100,1:0 순서대로 실행해 보자. IO 명령을 실행하는 데에는 1CPU + 5IO + 1CPU의 시간이 걸림에 주의하자.

Untitled

이 경우에는 단순히 cpu 명령을 실행한 후 IO를 수행하므로 별로 특별할 것은 없어 보인다.

만약 두 프로세스의 순서를 바꾼다면 첫 번째 프로세스가 IO를 수행하는 동안 CPU가 비어 있는 상태가 되므로 그 동안 CPU에서 다른 프로세스를 동작시킬 것이다.

Untitled

바로 확인할 수는 없으므로, -c -p flag를 추가해 확인하자.

Untitled

위와 같이 IO 프로세스 실행 후 CPU 프로세스를 실행하니 IO 실행 시간 동안 CPU 명령을 실행하는 것을 확인할 수 있다.

Qusetion 5

이번에는 SWITCH_ON_END와 SWITCH_ON_IO flag 설정에 따른 결과를 비교해야 한다. 전자의 경우에는 프로세스가 완전히 끝나야만 다른 프로세스로 넘어간다. 즉, -l 1:0,4:100 설정 후 실행 시 첫 번째 프로세스의 IO 과정을 포함한 모든 작업이 끝나야 두 번째 프로세스가 실행될 것이다. 후자의 경우에는 IO로 인해 프로세스가 Waiting 상태가 되면 그 즉시 다른 프로세스를 실행할 것이므로 Question 3과 같이 실행될 것이다.

Untitled

예상과 같이 SWITCH_ON_END 설정 시에는 프로세스가 끝나야만 다음 프로세스가 실행되고, SWITCH_ON_IO 설정 시에는 어떤 프로세스가 IO를 waiting하는 상태가 되면 다른 프로세스를 실행한다.