생능출판사 명품 운영체제

본 연습문제들은 작성자 본인이 푼 것이라 틀릴 수 도 있습니다.

 

[개념 체크]

1. 다음 글에서 프로세스와 프로그램 중에서 선택하라

정답 및 해설)
정답: 1번

해설: 책 130페이지 참조

프로그램은 컴파일되어 실행 가능한 형태로 저장 장치에 저장된 상태일 때 부르는 용어이고

프로세스는 메모리에 적재되어 실행 중인 상태일 때 부르는 용어이다.

 

2. 프로세스의 특징을 설명한 것 중 맞는 것은?

정답 및 해설)
정답: 4번

해설: 책 130페이지 참조

1번 같은 번호를 가지는 프로세스는 존재할 수 없다.

2번 부모 프로세스와 자식 프로세스는 데이터 공간을 공유하지 않는다.

3번 응용프로그램에 의해 이뤄지지 않고 커널에 의해 이뤄진다.

 

3. 프로세스에 대한 설명으로 틀린 것은?

정답 및 해설)
정답: 1번

해설: 책 130, 131페이지 참조

동일한 프로그램이 실행되어 생성된 프로세스는 항상 다른 프로세스 번호를 할당 받는다.

 

4. PCB에 들어가 있는 정보가 아닌 것은?

정답 및 해설)
정답: 4번

해설: 책 142, 143페이지 참조

프로세스 이름은 들어가지 않는다.

 

5. 프로세스의 종료코드는 어디에 저장되는가?

정답 및 해설)
정답: 1번

해설: 책 144페이지 참조

프로세스의 종료코드는 PCB에 저장된다. 

 

6. 프로세스가 종료될 때, 커널이 프로세스 테이블 항목이나 PCB를 즉각 삭제하지 않는 이유는 무엇인가?

정답 및 해설)
정답: 2번

해설: 책 144페이지 참조

부모 프로세스가 읽혀질 때까지, 운영체제는 프로세스의 PCB를 제거하지 않고 프로세스 테이블 항목도 그대로 남겨둔다. 종료되었지만, 부모가 종료코드를 읽어가지 않은 상태의 프로세스를 좀비 프로세스라고 한다.

 

7. 32비트 CPU에 대해 다음을 답하여라.

정답 및 해설)

(1): 32개

(2): 4GB

(3): 4GB

해설: 책 136페이지 참조

 

8. 프로세스의 주소 공간에 대한 설명으로 맞는 것은?

정답 및 해설)
정답: 1번

해설: 책 136페이지 참조

2번 프로세스의 주소 공간은 가상 공간이다.

3번 프로세스의 주소 공간에는 커널 공간이 포함된 공간을 말하고, 사용자 공간만 포함한 공간은 프로세스의 크기를 말한다.

4번 프로세스는 실행 중에 힙 영역에서 동적으로 메모리를 할당 받는 과정에서 주소가 바뀐다.

 

9. 프로세스가 메모리에 적재될 때 프로세스를 구성하는 4개의 영역은 무엇인가?

정답 및 해설)
정답: 힙 영역, 스택 영역, 데이터 영역, 코드 영역

해설: 책 134페이지 참조

 

10. 운영체제는 프로세스를 코드, 데이터, 힙, 스택의  4 영역으로 구성한다. 다음은 어느 영역에 형성되는가?

정답 및 해설)

(1) 전역 변수 : 데이터 영역

(2) 지역 변수 : 스택 영역

(3) C++에서 new 연산자나 C 프로그램에서 malloc() 함수를 호출하여 할당받은 메모리 : 힙 영역

(4) 사용자가 작성한 함수 코드 : 코드 영역

(5) 라이브러리에 작성된 함수 코드 : 코드 영역

(6) 라이브러리 함수에 선언된 지역 변수들 : 스택 영역

해설: 책 134페이지 참조

 

11. 프로세스가 적재된 이후 실행 과정 동안 크기가 변하지 않는 영역을 있는 대로 골라라

정답 및 해설)
정답: 1, 2번

해설: 코드 영역과 데이터 영역은 변하지 않는다.

 

12. printf()는 C 프로그램에서 화면 출력을 위해 사용되는 C 표준 라이브러리 함수이다. 다음 질문에 답하라.

(1) printf() 함수의 코드는 프로세스의 코드 영역에 포함되는가? 

(2) printf() 함수 내에 선언된 지역 변수들은 프로세스의 어느 영역에 포함되는가?

(3) printf() 함수의 코드와 지역 변수들은 사용자 공간에 적재되는가, 커널 공간에 적재되는가?

정답 및 해설)
정답: 

(1): O

(2): 4번

(3) 사용자 공간에 적재된다.

해설: 책 134페이지 참조

 

13. 프로세스의 주소 공간은 0번지부터 시작되어 연속적인 번지로 이루어진다. 만일 3개의 프로세스가 메모리에 적재된채 동시에 실행된다고 하면, 모든 프로세스가 0번지에서 시작하므로, 프로세스들 사이에 번지 충돌이 발생하고 메모리 충돌이 발생할 것 같다. 운영체제는 어떻게 이 문제를 해결하는가?

정답 및 해설)
정답: 물리 메모리 공간과 가상 주소 공간을 연결하는 매핑 테이블을 두고 관리한다.

해설: 책 137페이지 참조

 

14. 프로세스 스케줄링에는 어떤 상태의 프로세스들이 대상이 되는가?

정답 및 해설)
정답: 1번

해설: 책 146페이지 참조

 

15. 커널은 현재 실행 중인 프로세스가 입출력을 요청하면 어떤 상태로 전이시키는가?

정답 및 해설)
정답: 2번

해설: 책 145페이지 참조

 

16. 프로세스는 실행 중 다음 각 경우에 어떤 상태로 바뀌는가?

정답 및 해설)
정답:

(1) yield() 시스템 호출을 불러 스스로 실행을 중단하고 다른 프로세스에게 양보할 때 : Ready 상태

(2) sleep(1) 시스템 호출을 불러 1초 동안 잠을 잘 때 : Blocked 상태

(3) exit(-1) 시스템 호출을 불러 종료할 때 : Terminated/out 상태

(4) 프로세스에게 할당된 타임 슬라이스가 다 되었을때 : Ready 상태

해설: 책 146, 147페이지 참조

 

17. PCB 내에 프로세스가 열어 놓은 파일에 관한 정보가 저장되는 것으로 미루어 다음 중 틀리게 설명한 것은?

정답 및 해설)
정답: 3번

해설: 책 144페이지 참조

파일은 프로세스 별로 관리되지 않고, 운영체제의 파일 시스템과 커널에 의해 관리된다.

 

18. 다음 중 자식 프로세스를 생성하는 데 사용되는 시스템 호출은?

정답 및 해설)
정답: 1번

해설: 책 157페이지 참조

 

19. wait() 시스템 호출에 대해 잘 설명한 것은?

정답 및 해설)
정답: 1번

해설: 책 157페이지 참조

 

20. 부모 프로세스가 wait() 시스템 호출을 부르기 전, 자식 프로세스가 먼저 종료할 때 상황에 맞게 설명한 것은?

정답 및 해설)
정답: 1번

해설: 책 157페이지 참조

 

21. 좀비 상태의 프로세스에 대한 설명 중 틀린 것은?

정답 및 해설)
정답: 1번

해설: 책 159페이지 참조

좀비 상태인 프로세스는 메모리가 제거되어 메모리 사용량을 나타낼 수 없다. 이 말은 좀비 프로세스는 자원을 소비하고 있지 않다는 것을 알 수 있다. 그러므로 시스템 성능에 큰 영향을 못 미친다.

 

22. 유닉스 계열의 운영체제에서 #1 프로세스를 무엇이라고 부르는가?

정답 및 해설)
정답: 2번

해설: 책 155페이지 참조

 

23. 유닉스 계열의 운영체제에서 모든 사용자 프로세스의 조상은 누구인가?

정답 및 해설)
정답: #0 swapper

해설: 책 155페이지 참조

컴퓨터가 시작되면 프로세스는 0번부터 시작된다. 그러므로 #0 프로세스는 그 시스템의 최고 어른이다.

 

24. Window에서 #0 프로세스인 시스템 유휴 프로세스나 리눅스의 #0 idle 프로세스의 역할은 무엇인가?

정답 및 해설)
정답: 아무 인터럽트나 발생할 때까지 CPU클럭 속도를 줄이거나, CPU절전모드에 들어간다.

해설: 책 156페이지 참조

 

25. 다음은 어떤 프로세스를 설명하는 지 적어라

정답 및 해설)
정답:

(1) 부모 프로세스가 먼저 종료한 자식 프로세스 : 고아 프로세스

(2) 종료할 때 종료코드를 남겨 놓았지만 부모 프로세스가 읽어가지 않고 있을 때, 종료한 자식 프로세스 : 좀비 프로세스

(3) 입출력 작업이 계산 작업보다 월등히 많은 프로세스 : I/O 집중 프로세스

(4) 계산 작업이 입출력 작업보다 월등히 많은 프로세스 : CPU 집중 프로세스

(5) 사용자와 대화가 필요하지 않고 낮는 우선순위로 실행되는 프로세스 : 백그라운드 프로세스

해설: 책 162, 163페이지 참조

 

26. 시스템에 무한히 많은 프로세스가 생성되지 못하는 이유가 구체적으로 무엇일까?

정답 및 해설)
정답: 시스템의 과부하를 부를 수 있고. 시스템에는 1개의 프로세스 테이블이 있고 크기도 제한되어 있기 때문에, 많은 프로세스들이 생긴다면 새로운 프로세스를 생성할 수 없는 경우도 발생할 수 있다.

해설: 책 178페이지 참조

 

27. main()에서3을 리턴하는 three라는 C 프로그램을 작성하였다. 쉘에서 다음과 같이 실행시키면, main()에서 리턴한 값 3은 누구에게 전달되는가?

$ ./three
$

정답 및 해설)
정답: 3번

해설: 책 176페이지 참조

 

28. 종료코드의 목적은 무엇인가?

정답 및 해설)
정답: 2번

해설: 책 143페이지 참조

김치바보