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