본문 바로가기
CS 기초/Operating System

[OS] 운영체제 연습 문제 풀이 (2)

by woohyeon 2020. 11. 7.
반응형

책 이름: 개념 이해를 위한 운영체제 (21세기사)

[프로세스의 정의를 "실행 중인 프로그램" 으로 함이 왜 충분하지 못한가? 그 부족함을 보완할 수 있는 더 좋은 정의를 제시하라]
오직 하나의 프로세스만을 실행하는 시스템 환경에선 해당 정의로 충분하다. 하지만 대부분의 시스템은 여러 프로세스를 번갈아 가며 실행하는 다중 프로그래밍 환경이다. 이를 위해선 실행할 프로그램이 프로세스 형태로 메모리에 존재해야 한다. 즉 메모리에 여러 개의 프로세스가 존재할 수 있다. 하지만 한 시점에서 실행되는 프로세스는 하나이다. 따라서 실행 중인 프로그램이란 의미는 부족할 수 있다. 프로세스란 "프로그램이 메모리 상에 실행 가능한 형태로 적재되어 있는 것" 이라고 정의하는 것이 더욱 디테일하다. 

[프로세스와 프로그램과의 차이점을 설명하라]
프로그램은 주기억장치(메모리)가 아닌 HDD와 같은 보조기억장치에 File의 형태로 저장되어 있는 것을 말한다. 프로세스는 File의 형태를 실행 가능한 형태로 메모리 상에 적재해 놓은 것을 말한다. 또한 그 내부 구조도 다르다. File 형태는 코드와 데이터 영역으로만 구분되지만, 프로세스엔 스택 영역이 추가된다.

[프로세스의 상태(준비, 실행, 대기)를 정의하고, 상태 변환도를 그림과 함께 설명하라]
새 프로세스가 생성되면 준비 상태가 된다. 준비 상태는 스케줄러에 의해 선택이 된다면 당장이라도 실행이 가능한 상태이다. 스케줄러에 의해 선택을 받았다면, 해당 프로세스에 CPU가 할당되며 실행 상태가 된다. 만약 프로세스 실행 중 입출력 요구와 같은 시스템 콜이 발생하면 해당 프로세스는 대기 상태가 된다. 만약 입출력이 끝나면 바로 실행 상태로 복귀하는 것이 아니라 다시 준비 상태로 돌아가 스케줄러의 선택을 받아야 실행 상태로 복귀한다.

[프로세스 영역(코드, 데이터, 스택) 중 스택 영역의 역할에 대해 설명하라]
스택 영역은 임시적으로 사용되는 변수들을 저장하기 위해 사용된다. 예를 들면 함수 사용에 필요한 복귀 주소와 같은 다양한 값이 필요한데 이러한 값들이 저장된다.

[프로세스 제어 블록(PCB)의 역할을 설명하라]
다중 프로그래밍 환경에선 여러 프로세스들이 번갈아 가며 실행된다. 따라서 실행 중이던 프로세스를 중단시키고 새로운 프로세스를 불러오려면 그들의 정보(진행도, 시작할 위치, 종료된 위치 등)을 백업해 두어야 한다. 이러한 정보들을 저장하는 곳이 PCB이다.

[프로세스는 컴퓨터 시스템 내부에서 처리되는 일의 단위로서 정적인 부분(static part)과 동적인 부분(dynamic part)으로 구별할 수  있다. 프로세스의 정적인 부분과 동적인 부분을 구별하여 설명하라]
프로세스의 정적인 부분은 실행 전 이미 그 동작 또는 데이터의 크기가 정해진 부분들이라고 할 수 있다. 반면 동적인 부분은 입출력 요구 또는 exception과 같이 미리 예상할 수 없는 동작을 말한다. 

[다중 스레딩 기법의 장점을 기술하고 이를 지원하기 위해 고려해야 할 사항을 설명하라]
다중 스레딩 기법은 하나의 프로세스 내에서 여러개의 흐름을 병행적으로 실행할 수 있다. 예를 들어 어떠한 루틴 내에서 입출력 요구와 같이 정체되는 동작이 발생할 경우, 그 시간동안 다른 필요한 동작을 수행함으로써 CPU 사용률의 이득을 볼 수 있다. 이러한 기법을 지원하기 위해선 PCB와 같이 각 스레드의 정보를 저장할 공간이 필요하며, 어떠한 스레드에 CPU를 할당할 것인지를 결정할 적절한 스케줄링 정책이 필요하다. 

[프로세스간 문맥 교환(context switching)의 오버헤드가 CPU 이용률에 미치는 영향을 프로세스 당 할당되는 CPU 사용시간 관점에서 설명하고, 이를 최소화하기 위해 운영체제 설계 시 고려해야할 사항들을 열거하라]
각 프로세스는 CPU를 할당받아 실행될 수 있는 시간이 정해져 있다. 문맥 교환이 이루어 지는 동안 CPU는 아무 일도 하지 않는다. 프로세스를 실행하는 데 시간이 소요되지 않고 문맥 교환에 소요되는 시간 때문에 CPU 이용률이 떨어지게 되며, 결국 할당받은 CPU 사용 시간을 낭비하게 된다. 또한 전체적인 실행 시간이 늘어나게 된다. 문맥 교환의 많은 오버헤드는 저장하고 불러올 PCB의 데이터의 종류가 많기 때문이다. 따라서 PCB에 필요한 데이터의 종류를 최소화하면 조금 더 빠른 문맥 교환이 가능하다.

 




댓글