1.
./process-run.py -l 5:100, 5:100
cpu이용 100%의 명령어로 구성된 2개의 프로세스를 실행하므로 이용률은 100%이다 (CPU busy / Total Time)
2.
./process-run.py -l 4:100, 1:0
cpu이용 100%의 4개명령어로 구성된 프로세스와, IO요청이 있는 1개명령어로 구성된 프로세스가 있다
숙제에서의 IO작업의 기본시간은 5초가 소요되므로 CPU(4초) + IO작업요청(1초) + IO작업수행(5초) + IO작업끝(1초) = 총 11초이다
3.
./process-run.py -l 1:0, 4:100
프로세스의 구성은 위와 동일하지만 IO요청을 하는 프로세스가 먼저 도착했기 때문에 IO요청을 하고 프로세스가 BLOCKED 되는동안(5초) 두번째 프로세스가 4초동안 CPU를 할당하기 때문에 총 시간은 7초이다
4.
./process-run.py -l 1:0, 4:100 -S SWITCH_ON_END
프로세스가 BLOCKED되는동안 다른 프로세스에 CPU를 할당하지 않기 때문에 모든 작업이 종료되고 다른 프로세스가 실행된다. 그러므로 첫번째 프로세스(7초) + 두번째 프로세스(4초) = 총 11초가 소요된다
5.
./process-run.py -l 1:0, 4:100 -S SWITCH_ON_IO
IO요청 후 전환하도록 플래그를 설정한다면 BLOCKED중 다른 프로세스가 실행되므로 3번의 결과와 동일하다.
6.
./process-run.py -l 3:0, 5:100, 5:100, 5:100 -S SWITCH_ON_IO -I IO_RUN_LATER -c -p
-I IO_RUN_LATER 옵션이 추가되면 IO작업이 완료되어도 실행중인 모든 프로세스가 종료된 후 마저 시작된다
그러므로 3:0프로세스의 첫번째 명령어가 IO요청을 한 뒤 5:100, 5:100, 5:100이 연달아 실행되지만 3개 모두 종료 된 후 3:0프로세스가 실행되므로 나머지 2개의 IO 명령어가 실행되는 동안 CPU 이용률이 떨어지기 때문에 시스템 자원을 고르게 사용하지 못한다
7.
./process-run.py -l 3:0, 5:100, 5:100, 5:100 -S SWITCH_ON_IO -I IO_RUN_IMMEDIATE -c -p
IO_RUN_IMMEDIATE시 IO작업이 종료되면 즉시 프로세스를 실행시키므로 3개의 IO작업이 수행되는 동안 (IO작업=5초) CPU작업이 수행되는 프로세스가 실행되면서 (5초) 시스템자원을 보다 고르게 사용하도록 한다
IO작업을 완료한 프로세스를 다시 실행하는 것이 프로세스의 반환시간(Turnaround Time)과 IO작업이 연달아 있는 경우 효율적으로 IO작업, CPU작업을 분담하여 시스템 자원을 고르게 사용할 수 있도록 만드는 부분에서 장점이 있다
'기초' 카테고리의 다른 글
[코딩인터뷰 완전분석] 01 배열과 문자열 풀이 (0) | 2025.03.12 |
---|---|
set 컨테이너는 어떻게 vector 컨테이너 중복을 제거하는가 (0) | 2025.02.24 |
[컴퓨터 구조 및 설계] MIPS 메모리 구조 (0) | 2024.09.29 |
N-Queen 문제 (1) | 2023.03.11 |
코딩테스트 간 C++ 문자열 팁 (0) | 2023.02.12 |