[쉽게 배우는 운영체제] 제 3장 프로세스와 스레드 연습문제 풀이 정답 (심화문제)
연습문제
1. 프로그램이 프로세스가 되려면 운영체제로부터 무엇을 받아야 하는가?
- 프로세스 제어블록 (PCB)
2. 프로세스의 상태 중 CPU를 할당받기 위해 기다리는 상태는 무엇인가?
- 준비상태
3. 프로세스의 상태 중 입출력 작업을 하기위해 이동하는 상태는 무엇인가?
- 대기상태
4. CPU 스케줄러가 준비 상태에 있는 프로세스 중 하나를 골라 CPU를 할당하는 작업을 무엇이라고 하는가?
- 디스패치
5. 유닉스에서 ctrl + r 키를 눌러 프로세스가 중단되면 프로세스는 어떤 상태로 바뀌는가?
- 휴식상태
6. 실행 상태에서 하나의 프로세스가 나가고 새로운 프로세스가 들어오는 상황을 무엇이라고 하는가?
- 문맥교환
7. 실행중인 프로세스로부터 새로운 프로세스를 복사하는 시스템 호출은 무엇인가?
- fork() 시스템 호출
8. 프로세스의 골격은 그대로 둔 채 코드 영역만 바꾸는 시스템 호출은 무엇인가?
- exec() 시스템호출
9. 부모 프로세스가 기다리지 않아 자원이 회수되지 못하고 계속 살아 있는 프로세스는 무엇인가?
- 고아 프로세스
10. 프로세스의 코드에 정의된 절차에 따라 CPU에 작업요청을 하는 실행 단위로서 가벼운 프로세스라고 불리는 것은 무엇인가?
- 스레드
11. 고아 프로세스를 방지하기 위해 부모 프로세스는 어떤 시스템 호출을 사용하는가?
- wait()
12. 작업이 끝난 프로세스의 자원을 회수하는 행위를 무엇이라고 하는가?
- 쓰래기 수집
13. 모든 프로세스를 부모-자식 관계로 만들어 자원 회수를 용이하게 하는 프로세스의 구조는 무엇인가?
- 프로세스 계층구조
심화문제
1. 다섯가지 프로세스 상태도를 그리시오
- 생성 - 준비 - 디스패치/인터럽트 - 실행 - 대기 - 완료
2. 프로세스의 상태중 휴식상태와 보류상태에 대해 설명하시오.
- 휴식상태 : 프로세스가 작업을 일시적으로 쉬고 있는 상태이며 종료 상태가 아니기 때문에 원할 때 다시 시작 할 수 있는 상태
- 보류상태 : 프로세스가 잠시 메모리에서 쫒겨난 상태이다.
3. 프로세스 제어블록 구성에 대해 설명하시오.
- 운영체제가 프로세스를 위해 관리하는 자료구조이다.
프로세스 구분자 : 각 프로세스 구분
메모리 관련 정보 : 프로세스의 메모리 위치 정보
각종 중간값 : 프로세스가 사용했단 중간값
4. 문맥 교환에 대해 설명하시오
- CPU를 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업이다.
5. 프로세스를 구성하는 코드영역, 데이터 영역, 스택 영역에 대해 설명하시오.
- 코드 영역 : 프로그램의 본문이 기술된 곳, 작성된 코드가 탑재되며 코드는 읽기 전용으로 처리
- 데이터 영역 : 코드가 실행되면서 사용하는 변수나 파일등 각종 데이터를 모아놓은 곳, 읽기와 쓰기 가능
- 스택 영역 : 운영체제가 프로세스를 실행하기 위해 부수적으로 필요한 데이터를 모아놓은 곳, 숨김영역
6. fork() 시스템 호출의 장점을 설명하시오.
- 프로세스의 생성속도가 빠름, 추가 작업 없이 자원 상속 가능, 시스템 관리 효율적
7. exec() 시스템 호출을 사용하는 이유를 설명하시오.
- 이미 만들어진 프로세스의 구조를 재활용 하기 위해 사용
8. 프로세스 계층 구조의 장점을 설명하시오.
- 여러 작업 동시 처리 가능, 프로세스의 재사용 용의, 자원 회수가 쉽다.
9. 멀티스레드, 멀티태스킹, 멀티프로세싱, CPU 멀티스레드를 비교하여 설명하시오.
- 멀티스레드는 프로세스 내 작업을 여러개의 스레드로 분할함으로써 작업의 부담을 줄이는 프로세스 운영 기법이며, 자원의 낭비를 막고 멀티 태스킹에 비해 효율적이다.
멀티태스킹은 운영체제가 CPU에 작업을 줄때 시간을 잘게 나누어 배분하는 기법이다. 메모리의 중복이 존재한다.
멀티프로세싱은 CPU를 여러개 사용하여 여러개의 스레드를 동시에 사용 하는 작업 환경이다.
CPU 멀티스레드는 운영체제가 소프트웨어적으로 프로세스를 스레드로 분할하는 멀티 스레드 방식과 달리 하드웨어 적으로 하나의 CPU에서 여러 스레드를 동시에 처리하는 병렬 처리 기법이다. (파이프라인 기법 사용)