1. 다음 글에서 프로세스와 프로그램 중에서 선택하라.
( 프로그램 )은 컴파일되어 실행 가능한 형태로 저장 장치에 저장된 상태일 때 부르는 용어이며, ( 프로세스 ) 은 메모리에 적재되어 실행 중인 상태일 때 부르는 용어이다. |
2. 프로세스의 특징을 설명한 것 중 맞는 것은?
① 프로세스에게는 정수 번호가 하나씩 할당되지만, 같은 번호를 가지는 프로세스가 존재할 수 있다.
② 부모 프로세스와 자식 프로세스는 데이터 공간을 공유하므로 통신이 편리하다.
③ 프로세스를 실행시키고, 대기시키고, 종료시키는 관리는 모두 응용프로그램에 의해 이루어진다.
④ 프로세스를 스케줄링하는 것은 커널의 기능이다.
3. 프로세스에 대한 설명으로 틀린 것은?
① 동일한 프로그램이 실행되어 생성된 프로세스는 항상 동일한 프로세스 번호를 할당받는다.
② 프로세스 번호로 프로세스를 구분한다.
③ 프로세스 사이에는 부모 자식 관계가 있다.
④ 커널은 프로세스마다 각각 PCB 구조체를 두고 프로세스의 정보를 별도로 관리한다.
4. PCB에 들어있는 정보가 아닌 것은?
① 프로세스 컨텍스트
② 프로세스 번호
③ 부모 프로세스 번호
④ 프로세스 이름
5. 프로세스의 종료코드는 어디에 저장되는가?
① 프로세스의 PCB
② 커널 스택
③ 사용자 스택
④ 부모 프로세스의 PCB
6. 프로세스가 종료될 때, 커널이 프로세스 테이블 항목이나 PCB를 즉각 삭제하지 않는 이유는 무엇인가?
① 얼마 지나지 않아 사용자가 동일한 프로그램을 실행시킬 것을 대비하여
② 프로세스 종료코드를 부모 프로세스가 읽어갈 때까지 기다리기 위해
③ 약간의 시간 지연을 통해 커널 데이터를 동기화시키기 위해
④ 프로세스가 종료한 뒤, 사용자가 undo 명령을 내릴 것을 대비하기 위해
7. 32비트 CPU에 대해 다음에 답하여라.
① CPU의 주소선 개수는? : 32개
② CPU가 액세스 가능한 메모리의 최대량은? : 4GB
③ 이 CPU를 사용할 때 프로세스의 주소 공간 크기는? : 4GB
8. 프로세스의 주소 공간에 대한 설명으로 맞는 것은?
① 프로세스가 실행되는 동안 접근할 수 있는 메모리의 최대 범위이다.
② 프로세스의 주소 공간은 물리 공간이다.
③ 프로세스의 주소 공간에는 커널 공간이 포함되지 않고 사용자 공간만 포함한다.
④ 프로세스에서 발생한 주소 100번지는 물리 메모리 100번지이다.
9. 프로세스가 메모리에 적재될 때 프로세스를 구성하는 4개의 영역은 무엇인가?
-> 코드, 데이터, 힙, 스택
10. 운영체제는 프로세스를 코드, 데이터, 힙, 스택의 4 영역으로 구성한다. 다음은 어느 영역에 형성되는가?
① 전역 변수 -> 데이터
② 지역 변수 -> 스택
③ C++에서 new 연산자나 C 프로그램에서 malloc() 함수를 호출하여 할당받은 메모리 -> 힙
④ 사용자가 작성한 함수 코드 -> 코드
⑤ 라이브러리에 작성된 함수 코드 -> 코드
⑥ 라이브러리 함수에 선언된 지역 변수들 -> 데이터
11. 프로세스가 적재된 이후 실행 과정 동안 크기가 변하지 않는 영역을 있는 대로 골라라.
① 코드 영역
② 데이터 영역
③ 힙 영역
④ 스택 영역
12. printf()는 C 프로그램에서 화면 출력을 위해 사용되는 C 표준 라이브러리 함수이다. 다음 질문에 답해라.
① printf() 함수의 코드는 프로세스의 코드 영역에 포함되는가? -> stdio.h의 라이브러리에 포함된 함수이므로 코드 영역임 ② printf() 함수 내에 선언된 지역 변수들은 프로세스의 어느 영역에 포함되는가? -> 스택 영역 ③ printf() 함수의 코드와 지역 변수들은 사용자 공간에 적재되는가, 커널 공간에 적재되는가? -> 사용자 공간 |
13. 프로세스의 주소 공간은 0번지부터 시작되어 연속적인 번지로 이루어진다. 만일 3개의 프로세스가 메모리에 적재된 채 동시에 실행된다고 하면, 모든 프로세스가 0번지에서 시작하므로, 프로세스들 사이에 번지 충돌이 발생하고 메모리 충돌이 발생할 것 같다. 운영체제는 어떻게 이 문제를 해결하는가?
-> 가상 메모리 주소 공간을 사용하여 프로세스별로 0번지부터 메모리 번지를 이용할 수 있게 하되, 실제 물리 메모리에는 매핑 테이블을 사용하여 서로 다른곳에 충돌되지 않게 연결되어 있게 하여 해결함
14. 프로세스 스케줄링에는 어떤 상태의 프로세스들이 대상이 되는가?
① Ready 상태
② Ready 상태와 Blocked 상태
③ New 상태와 Ready 상태, 그리고 Blocked 상태
④ 어떤 상태에 있든 상관없이 모든 프로세스
15. 커널은 현재 실행 중인 프로세스가 입출력을 요청하면 어떤 상태로 전이시키는가?
① Ready 상태
② Blocked 상태
③ Zombie 상태
④ 전이시키지 않는다.
16. 프로세스는 실행 중 다음 각 경우에 어떤 상태로 바뀌는가?
① yield() 시스템 호출을 불러 스스로 실행을 중단하고 다른 프로세스에게 양보할 때 -> Ready
② sleep(1) 시스템 호출을 불러 1초 동안 잠을 잘 때 -> Blocked
③ exit(-1) 시스템 호출을 불러 종료할 때 -> Terminated/Zombie
④ 프로세스에게 할당된 타임 슬라이스가 다 되었을 때 -> Ready
17. PCB 내에 프로세스가 열어 놓은 파일에 관한 정보가 저장되는 것으로 미루어 다음 중 틀리게 설명한 것은?
① 프로세스가 종료할 때, 닫지 않는 모든 파일을 커널이 자동으로 닫는다.
② 프로세스에 속한 모든 스레드들이 프로세스에 열려 있는 파일에 입출력 할 수 있다.
③ 열어 놓은 파일은 프로세스 별로 관리된다.
④ 한 프로세스가 열어 놓은 파일을 다른 프로세스가 입출력할 수 있다.
18. 다음 중 자식 프로세스를 생성하는데 사용되는 시스템 호출은?
① fork()
② exec()
③ exit()
④ create()
19. wait() 시스템 호출에 대해 잘 설명한 것은?
① 자식 프로세스가 종료할 때까지 대기한다.
② 요청한 입출력이 종료할 때까지 대기한다.
③ 일정한 시간이 흐를 때까지 대기한다.
④ 부모 프로세스가 종료할 때까지 대기한다.
20. 부모 프로세스가 wait() 시스템 호출을 부르기 전, 자식 프로세스가 먼저 종료할 때 상황에 맞게 설명된 것은?
① 커널은 자식 프로세스를 좀비 프로세스로 만든다.
② 커널은 부모 프로세스에게 신호를 보내고 자식 프로세스를 제거한다.
③ 커널은 자식 프로세스를 종료시키지 않고 부모 프로세스가 wait()를 호출할 때까지 대기시킨다.
④ 자식 프로세스에 오류가 발생하고 비정상 종료된다.
21. 좀비 상태의 프로세스에 대한 설명 중 틀린 것은?
① 좀비 프로세스는 시스템의 성능을 심각하게 떨어뜨린다.
② 좀비 프로세스는 코드, 데이터, 힙, 스택 등 할당받은 메모리와 모든 자원이 모두 반환된 상태이다.
③ PCB는 커널 내에 여전히 존재한다.
④ 프로세스 테이블의 항목이 제거되지 않고 있다.
22. 유닉스 계열의 운영체제에서 #1 프로세스를 무엇이라고 부르는가?
① swapper
② init 프로세스
③ idle 프로세스
④ pager 프로세스
23. 유닉스 계열의 운영체제에서 모든 사용자 프로세스의 조상은 누구인가?
-> #1 init 프로세스
24. Windows에서 #0 프로세스인 시스템 유휴 프로세스(system idle process)나 리눅스의 #0 idle 프로세스의 역할은 무엇인가?
-> CPU가 아무런 작업을 실행하지 않는 상태를 방지하기 위해 가장 낮은 우선순위로 실행되는 프로세스
25. 다음은 어떤 프로세스를 설명하는지 적어라
① 부모 프로세스가 먼저 종료한 자식 프로세스 -> 고아 프로세스
② 종료할 때 종료코드를 남겨 놓았지만 부모 프로세스가 읽어가지 않고 있을 때, 종료한 자식 프로세스 -> 좀비 프로세스
③ 입출력 작업이 계산 작업보다 월등히 많은 프로세스 -> I/O 집중 프로세스
④ 계산 작업이 입출력 작업보다 월등히 많은 프로세스 -> CPU 집중 프로세스
⑤ 사용자와 대화가 필요하지 않고 낮은 우선순위로 실행되는 프로세스 -> 백그라운드 프로세스
26. 시스템에 무한히 많은 프로세스가 생성되지 못하는 이유가 구체적으로 무엇일까?
-> 가상 메모리를 가용해도 결국 프로세스가 적재되는 공간은 유한한 공간이기 때문에 절대 무한히 생성될 수 없음
27. main()에서 3을 리턴하는 three라는 C프로그램을 작성하였다. 쉘에서 다음과 같이 실행시키면 main()에서 리턴한 3은 누구에게 전달되는가?
$ ./three $ |
① 커널
② init 프로세스
③ 쉘
④ 부모 프로세스가 없기 때문에 아무에게도 전달되지 않는다.
28. 종료코드의 목적은 무엇인가?
① 프로세스가 어떤 상태로 종료함을 커널에게 전달하기 위해
② 프로세스가 어떤 상태로 종료함을 부모 프로세스에게 전달하기 위해
③ 프로세스가 어떤 상태로 종료함을 디스크에 기록해두기 위해
④ 프로세스가 오류로 종료하는지 정상 종료하는지 커널에게 알리기 위해
'명품 운영체제 > 연습문제' 카테고리의 다른 글
명품 운영체제 연습문제 2장 (0) | 2024.04.08 |
---|---|
명품 운영체제 연습문제 1장 (0) | 2024.04.08 |