CS/Operating System

쉽게 배우는 운영체제: 프로세스와 스레드 연습문제

kkumta 2022. 7. 26. 17:05

01. 프로그램이 프로세스가 되려면 운영체제로부터 무엇을 받아야 하는가?

운영체제로부터 프로세스 제어 블록(PCB)을 받아야 한다.

 

02. 프로세스의 상태 중 CPU를 할당받기 위해 기다리는 상태는 무엇인가?

준비 상태이다.

준비 상태: 생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태이다. CPU가 하나인 컴퓨터에서는 한 번에 하나의 프로세스만 실행할 수 있기 때문에 자기 실행 순서가 될 때까지 준비 상태에서 기다려야 한다.

 

03. 프로세스의 상태 중 입출력 작업을 하기 위해 이동하는 상태는 무엇인가?

대기 상태이다.

입출력을 요구한 프로세스가 입출력이 완료될 때까지 기다리는 상태를 대기 상태라고 한다. 이는 작업의 효율성을 높이기 위해 입출력을 요청한 프로세스를 실행 상태에 두지 않고 대기 상태로 옮기는 것이다. 입출력을 요청한 프로세스가 대기 상태로 옮겨지면 CPU 스케줄러는 준비 상태에 있는 프로세스 중 하나를 가져다 실행 상태로 만든다. 그러면 시스템 입장에서는 새로운 작업을 진행하게 되어 효율성이 높아진다.

대기 상태의 프로세스는 요청한 입출력이 완료되면 입출력 관리자로부터 인터럽트를 받는다. 대기 상태에서 입출력이 끝난 프로세스는 실행 상태로 가지 않고 준비 상태로 돌아가 자기 차례를 기다린다.

 

04. CPU 스케줄러가 준비 상태에 있는 프로세스 중 하나를 골라 CPU를 할당하는 작업을 무엇이라고 하는가?

dispatch(PID)

 

05. 유닉스에서 Ctrl + Z 키를 눌러 프로세스가 중단되면 프로세스는 어떤 상태로 바뀌는가?

휴식 상태

 

06. 실행 상태에서 하나의 프로세스가 나가고 새로운 프로세스가 들어오는 상황을 무엇이라고 하는가?

문맥 교환(Context Switching)

문맥 교환은 두 프로세스의 PCB를 교환하는 작업이다.

 

07. 실행 중인 프로세스로부터 새로운 프로세스를 복사하는 시스템 호출은 무엇인가?

fork() 시스템 호출

 

08. 프로세스의 골격은 그대로 둔 채 코드 영역만 바꾸는 시스템 호출은 무엇인가?

exec() 시스템 호출

 

09. 부모 프로세스가 기다리지 않아 자원이 회수되지 못하고 계속 살아 있는 프로세스는 무엇인가?

고아 프로세스

 

10. 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위로서 가벼운 프로세스라고 불리는 것은 무엇인가?

스레드

 

11. 고아 프로세스를 방지하기 위해 부모 프로세스는 어떤 시스템 호출을 사용하는가?

wait() 시스템 호출

 

12. 작업이 끝난 프로세스의 자원을 회수하는 행위를 무엇이라고 하는가?

자원 회수

 

13. 모든 프로세스를 부모-자식 관계로 만들어 자원 회수를 용이하게 하는 프로세스의 구조는 무엇인가?

계층 구조