티스토리 뷰
일반 학생이 푼 문제로 정답이 아닐 수 있습니다.(명품 운영체제 수정판)
개념체크
- 다음 글에서 프로세스와 프로그램 중에서 선택하라.
프로그램은(는) 컴파일되어 실행 가능한 형태로 저장 장치에 저장된 상태일 때 부르는 용어이며, 프로세스은(는) 메모리에 적재되어 실행 중인 상태일 때 부르는 용어이다.
- 프로세스의 특징을 설명한 것 중 맞는 것은?
④ 프로세스를 스케줄링 하는 것은 커널의 기능이다.
해석:
① pid는 같은 번호를 가질 수 없다.
② 프로세스간 데이터 공간은 공유되지 않는다.
③ 프로세스 실행 및 대기, 종료와 관련된 사항은 모두 운영체제가 관리한다.
- 프로세스에 대한 설명으로 틀린 것은
① 동일한 프로그램이 실행되어 생성된 프로세스는 항상 동일한 프로세스 번호를 할당받는다.
해석: 동일한 프로그램이 실행되어 생성된 프로세스라도 생성될 때마다 달라진다.
- PCB에 들어 있는 정보가 아닌 것은?
④ 프로세스 이름
해석: p.142
- 프로세스의 종료코드는 어디에 저장되는가?
① 프로세스의 PCB
해석: p.142 or p.172
- 프로세스가 종료될 때, 커널이 프로세스 테이블 항목이나 PCB를 즉각 삭제하지 않는 이유는 무엇인가?
② 프로세스 종료코드를 부모 프로세스가 읽어갈 때까지 기다리기 위해
해석: p.172
- 32비트 CPU에 대해 다음에 답하여라.
(1) CPU의 주소선 개수는? 32
(2) CPU가 액세스 가능한 메모리의 최대량은? 2^32bit = 4GB
(3) 이 CPU를 사용할 때 프로세스의 주소 공간 크기는? 4GB
해석: p.134
- 프로세스의 주소 공간에 대한 설명으로 맞는 것은?
① 프로세스가 실행되는 동안 접근할 수 잇는 메모리의 최대 범위이다.
해석:
② 프로세스의 주소 공간은 가상공간이다. 매핑 테이블에 의해 물리 메모리가 지정된다.
③ 프로세스의 주소 공간은 커널 영역을 포함한다. 프로세스가 시스템 호출을 통해 커널 함수를 실행하기 때문이다.
④ 프로세스에서 발생한 주소 100번지는 매핑 테이블을 통해 비어있는 물리 메모리 주소가 매핑된다.
- 프로세스가 메모리에 적재될 때 프로세스를 구성하는 4개의 영역은 무엇인가?
코드 영역, 데이터 영역, 힙 영역, 스택 영역
해석: p.134
- 운영체제는 프로세스를 코드, 데이터, 힙, 스택의 4 영역으로 구성한다. 다음은 어느 영역에 형성되는가?
(1) 전역 변수 -> 데이터 영역
(2) 지역 변수 -> 스택 영역
(3) C++에서 new 연산자나 C 프로그램에서 malloc() 함수를 호출하여 할당받은 메모리 -> 힙 영역
(4) 사용자가 작성한 함수 코드 -> 코드 영역
(5) 라이브러리에 작성된 함수 코드 -> 코드 영역
(6) 라이브러리 함수에 선언된 지역 변수들 -> 스택 영역
- 프로세스가 적재된 이후 실행 과정 동안 크기가 변하지 않는 영역을 있는 대로 골라라
①,② 코드 영역, 데이터 영역
해석: p.134
- printf()는 C 프로그램에서 화면 출력을 위해 사용되는 C 표준 라이브러리 함수이다. 다음 질문에 답하라.
(1) 예
(2) ④ 스택
(3) 사용자 공간에 적재된다.
해석: p.140
- 프로세스의 주소 공간은 0번지부터 시작되어 연속적인 번지로 이루어진다. 만일 3개의 프로세스가 메모리에 적재된 채 동시에 실행된다고 하며느 모든 프로세스가 0번지에서 시작하므로, 프로세스들 사이에 번지 충돌이 발생하고 메모리 충돌이 발생할 것 같다. 운영체제는 어떻게 이 문제를 해결하는가?
매핑 테이블을 이용하여 가상 주소 공간과 물리주소 공간을 연결한다. 운영체제는 서로 다른 프로세스가 동일한 번지를 엑세스하더라도 매핑 테이블에 의해 서로 다른 물리 메모리를 접근하도록 한다.
해석: p.138 - 프로세스 스케줄링에는 어떤 상태의 프로세스들이 대상이 되는가?
① Ready 상태
해석: 스케줄링 대상은 레디 큐에 들어있는 프로세스에서 선택된다.
- 커널은 현재 실행 중인 프로세스가 입출력을 요청하면 어떤 상태로 전이시키는가?
② Blocked 상태
해석: p.146
- 프로세스는 실행 중 다음 각 경우에 어떤 상태로 바뀌는가?
(1) yield() 시스템 호출을 불러 스스로 실행을 중단하고 다른 프로세스에게 양보할 때 -> Ready 상태
(2) sleep(1) 시스템 호출을 불러 1초 동안 잠을 잘 때 -> blocked 상태
(3) exit(-1) 시스템 호출을 불러 종료할 때 -> Teminated-Zombie 상태
(4) 프로세스에게 할당된 타임 슬라이스가 다 되었을 때 -> ready 상태
- PCB 내에 프로세스가 열어 놓은 파일에 관한 정보가 저장되는 것으로 미루어 다음 중 틀리게 설명한 것은?
④ 한 프로세스가 열어 놓은 파일을 다른 프로세스가 입출력할 수 있다.
해석: 프로세스마다 오픈 파일 테이블을 별도로 관리하기 때문이다.
- 다음 중 자식 프로세스를 생성하는데 사용되는 시스템 호출은?
① fork()
해석: p.163
- wait() 시스템 호출에 대해 잘 설명한 것은?
① 자식 프로세스가 종료할 때까지 대기한다.
해석:
② 자식 프로세스가 종료할 때까지 대기한다.
③ 관련없음
④ 자식 프로세스가 종료할 때까지 대기한다.
- 부모 프로세스가 wait() 시스템 호출을 부르기 전, 자식 프로세스가 먼저 종료할 때 상황에 맞게 설명된 것은?
① 커널은 자식 프로세스를 좀비 프로세스로 만든다.
해석:
② 커널은 자식 프로세스를 좀비 프로세스로 만든다.
③ 커널은 자식 프로세스를 종료시키고 부모 프로세스가 wait()를 호출할 때까지 대기시킨다.
④ 관련없음. - 좀비 상태의 프로세스에 대한 설명 중 틀린 것은?
① 좀비 프로세스는 시스템의 성능을 심각하게 떨어뜨린다.
해석: 좀비 프로세스는 시스템의 성능을 떨어트리지 않는다. 단 과한 좀비 프로세스는 프로세스 테이블의 공간을 부족하게 한다.
② 좀비 프로세스는 코드, 데이터, 힙, 스택 등 할당받은 메모리와 모든 자원이 모두 반환된 상태이다. (PCB는 커널이 가진 데이터이지 자식 프로세스가 가진 자원은 아니다.) - 유닉스 계열의 운영체제에서 #1 프로세스를 무엇이라고 부르는가?
② init 프로세스
해석:
① 유닉스 #0 부팅과 메모리 창출 프로세스
③ 리눅스 #0 유휴 프로세스
④ 관련없다. - 유닉스 계열의 운영체제에서 모든 사용자 프로세스의 조상은 누구인가?
swapper 프로세스
해석: p.155
- Windows에서 #0 프로세스인 시스템 유휴 프로세스(system idle process)나 리눅스의 #0 idle 프로세스의 역할은 무엇인가?
모든 프로세스의 진행이 끝났을 때 CPU에게 쓰레기 연산을 진행시키는 프로세스
해석: p.155
- 다음은 어떤 프로세스를 설명하는지 적어라.
(1) 부모 프로세스가 먼저 종료한 자식 프로세스 -> 고아 프로세스
(2) 종료할 때 종료코드를 남겨 놓았지만 부모 프로세스가 읽어가지 않고 있을 때, 종료한 자식 프로세스 -> 좀비 프로세스
(3) 입출력 작업이 계산 작업보다 월등히 많은 프로세스 -> I/O 집중 프로세스
(4) 계산 작업이 입출력 작업보다 월등히 많은 프로세스 -> CPU 집중 프로세스
(5) 사용자와 대화가 필요하지 않고 낮은 우선순위로 실행되는 프로세스 -> 백그라운드 프로세스
- 시스템에 무한히 많은 프로세스가 생성되지 못하는 이유가 구체적으로 무엇일까?
프로세스 테이블에 번호가 한정되어있기 때문이다.
해석: p.178 - main()에서 3을 리턴하는 three라는 C 프로그램을 작성하였다. 쉘에서 다음과 같이 실행시키면, main()에서 리턴한 값 3은 누구에게 전달되는가?
③ 쉘
해석: p.176
- 종료코드의 목적은 무엇인가?
② 프로세스가 어떤 상태로 종료함을 부모 프로세스에게 전달하기 위해
해석: p.172
'명품 운영체제 문제풀이' 카테고리의 다른 글
명품 운영체제 6장 연습문제 정답 (수정 중) (1) | 2024.05.01 |
---|---|
명품 운영체제 5장 연습문제 정답 (1) | 2024.04.19 |
명품 운영체제 4장 연습문제 정답 (0) | 2024.04.18 |
명품 운영체제 2장 연습문제 정답 (0) | 2024.04.18 |
명품 운영체제 1장 연습문제 정답 (1) | 2024.04.18 |