P.190
연습문제
✔ 프로그램이 프로세스가 되려면 운영체제로부터 무엇을 받아야 하는가?
// 프로세스 제어 블록
✔프로세스의 상태 중 CPU를 할당받기 위해 기다리는 상태는 무엇인가?
// 준비상태
✔ 프로세스의 상태 중 입출력 작업을 하기 위해 이동하는 상태는 무엇인가?
// 대기 상태
✔ CPU 스케줄러가 준비 상태에 있는 프로세스 중 하나를 골라 CPU를 할당하는 작업을 무엇이라고 하는가?
// 디스패치
✔ 유닉스에서 ctrl+z 키를 눌러 프로세스가 중단되면 프로세스는 어떤 상태로 바뀌는가?
// 휴식 상태
✔ 실행 상태에서 하나의 프로세스가 나가고 새로운 프로세스가 들어오는 상황을 무엇이라고 하는가?
// 문맥 교환
✔ 실행 중인 프로세스로부터 새로운 프로세스를 복사하는 시스템 호출은 무엇인가?
// fork()
✔ 프로세스의 골격은 그대로 둔 채 코드 영역만 바꾸는 시스템 호출은 무엇인가?
// exec()
✔ 부모 프로세스가 기다리지 않아 자원이 회수되지 못하고 계속 살아 있는 프로세스는 무엇인가?
// 고아 프로세스
✔ 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위로서 가벼운 프로세스라고 불리는 것은 무엇인가?
// 스레드
✔ 고아 프로세스를 방지하기 위해 부모 프로세스는 어떤 시스템 호출을 사용하는가?
// wait()
✔ 작업이 끝난 프로세스의 자원을 회수하는 행위를 무엇이라고 하는가?
// 자원 회수
✔ 모든 프로세스를 부모-자식 관계로 만들어 자원 회수를 용이하게 하는 프로세스의 구조는 무엇인가?
// 프로세스 계층 구조
심화 문제
✔ 다섯 가지 프로세스 상태도를 그리시오.
// 생성 상태 -> 준비 상태 -> 실행 상태 -> 완료 상태
준비 상태<- 대기 상태 <- 실행 상태
✔ 프로세스 상태 중 휴식 상태와 보류 상태에 대해 설명하시오.
// 휴식 상태란 프로세스가 일시적으로 잠시 휴식 상태를 의미하며 메모리에 그대로 위치합니다.
보류 상태는 불필요하게 메모리만 차지하는 프로세스를 메모리 밖으로 내쫓는 것을 의미하며 보류 상태로 넘기는 프로세스는 주로 실행과 성능에 영향을 끼치지 않습니다.
✔ 프로세스 제어 블록의 구성에 대해 설명하시오.
// 프로세스 상태 - 생성, 준비, 실행, 대기, 보류 준비, 보류 대기와 같은 정보가 저장되어 있다.
프로세스 구분자 - 여러 프로세스를 구별하기 위한 구분자입니다.
프로그램 카운터 - 다음에 실행될 명령어의 위치를 저장합니다.
각종 레지스터 정보 - 재실행됐을 때 이전에 수행한 부분까지의 정보를 나타내는 중간값을 저장합니다.
메모리 관리 정보 - 프로세스가 메모리의 어디에 있는지 나타내는 메모리 위치 정보와 메모리 보호를 위한 경계 레지스터, 한계 레지스터 값이 저장되어 있습니다.
할당된 자원 정보 - 프로세스를 실행하기 위해 사용하는 입출력 자원이나 오픈 파일에 대한 정보를 저장합니다.
계정 정보 - 계정 번호, CPU 할당 시간, CPU 사용 시간이 저장되어 있습니다.
부모 프로세스 구분자와 자식 프로세스 구분자 - PPID와 CPID 정보가 저장되어 있습니다.
✔ 문맥 교환에 대해 설명하시오.
// CPU가 하나인 컴퓨터에서는 프로세스가 하나씩 진행됩니다. CPU를 차지하던 프로세스가 나가고 새로운 프로세스를 실행하는 작업을 의미합니다.
✔ 프로세스를 구성하는 코드 영역, 데이터 영역, 스택 영역에 대해 설명하시오.
// 코드 영역에는 실제 프로그램에 관한 내용이 저장되어 있습니다. 데이터 영역에는 변수와 파일 같은 데이터를 저장하는 자료가 저장되어 있습니다. 스택 영역에는 운영체제가 프로세스를 실행하기 위해 부수적으로 필요한 데이터를 저장합니다. 예를 들어 함수를 사용하고 원래 프로그램 위치로 되돌아올 위치 정보
✔ fork() 시스템 호출의 장점을 설명하시오.
// 추가 작업 없이 자원을 상속할 수 있다, 프로세스 생성 속도가 빠르다, 부모-자식 관계를 통해 자식 프로세스의 자원을 회수하는데 용이하다.
✔ exec() 시스템 호출을 사용하는 이유를 설명하시오.
// 이미 만들어진 프로세스의 구조를 재활용할 때 사용합니다. 또한 부모-자식 관계를 통해 자원 회수에 용이하여 사용합니다.
✔ 프로세스 계층 구조의 장점을 설명하시오.
// 동시에 여러 작업을 처리하고 종료된 프로세스 자원을 부모-자식 프로세스 관계를 통해 보다 효율적으로 자원 회수를 할 수 있습니다.
✔ 멀티스테드, 멀티태스킹, 멀티프로세싱, CPU 멀티스레드를 비교하여 설명하시오.
// 멀티스레드란 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄입니다.
멀티태스킹이란 운영체제가 CPU에 작업을 줄 때 시간을 작게 나누어 배분하는 기법입니다.
멀티프로세싱이란 CPU를 여러 개 사용하여 여러 개의 스레드를 동시에 처리하는 환경입니다.
CPU 멀티스레드란 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 병렬 처리 기법입니다.
[쉽게 배우는 운영체제] 4장 연습문제 및 심화문제 - 정리
'CS > OS' 카테고리의 다른 글
[쉽게 배우는 운영체제] 5장 연습문제 및 심화문제 - 정리 (0) | 2022.10.14 |
---|---|
[쉽게 배우는 운영체제] 4장 연습문제 및 심화문제 - 정리 (1) | 2022.10.11 |
[쉽게 배우는 운영체제] 2장 연습문제 및 심화문제 - 정리 (0) | 2022.10.10 |
[쉽게 배우는 운영체제] 1장 연습문제 및 심화문제 - 정리 (0) | 2022.10.09 |
[OS] 운영체제 - 프로세스의 상태와 관련 작업 - 생성, 준비, 대기, 보류, 실행, 완료상태 (0) | 2022.10.09 |