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

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

by woohyeon 2020. 5. 25.
반응형

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

[운영체제란 무엇인지 정의하라]
운영체제란 사용자에게 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공해주고, 시스템의 한정된 자원을 효율적으로 관리함으로써 보다 시스템을 경제적으로 이용할 수 있도록 해주는 소프트웨어이다.

[컴퓨터 시스템의 동작원리를 중심으로 운영체제의 필요성을 설명하라]
컴퓨터 시스템은 메모리에 적재된 명령어 중 PC(Program Counter) 레지스터가 가리키는 명령어를 CPU가 실행함으로써 컴퓨터를 동작시킨다. 이를 위해선 보조 기억 장치에 저장되어 있는 응용 프로그램 파일을 찾아 메모리에 적재하고 PC 레지스터가 가리키는 값을 조작하는 등의 작업이 필요하다. 이러한 작업들을 운영 체제의 커널에서 대신해주며, 우리는 운영체제가 제공하는 편리한 인터페이스를 통해 어떤 코드의 작성없이도 쉽게 컴퓨터를 작동시킬 수 있다. 

[운영체제가 추구하는 주된 목표 및 자원의 공유와 보호의 필요성에 대해 설명하라]
운영체제는 사용자에게 편리한 환경을 제공하고, 시스템의 제한된 자원을 적절히 분배함으로써 보다 경제적이고 효율적으로 시스템을 사용할 수 있게 해준다. 공유되는 자원에 대해 적절한 보호를 함으로써 정상적인 결과에 영향을 미치지 못하도록 한다.

[운영체제를 구성하는 기본요소를 제시하고, 각각의 구성요소들에게 요구되는 기능들에 대하여 설명하라]
운영체제는 핵심 기능들이 모여있는 커널과 유저에게 커널에 접근할 수 있도록 제공해주는 셸이라는 인터페이스로 구성된다. 이중에서도 커널의 기본 요소들을 소개하면, 커널의 가장 바깥쪽에 시스템 호출 인터페이스가 위치하여 유저 모드의 프로그램이 커널 모드의 루틴을 호출할 수 있도록 도와준다. 안쪽에는 파일, 메모리, CPU를 관리해주는 시스템이 존재하며, 시스템 호출 인터페이스는 이들과 각각 소통한다. 파일 관리 시스템은 일반 파일, 장치 파일과 같은 다양한 파일의 생성부터 삭제까지 모든 과정을 관리하는 루틴을 담당한다. CPU 및 메모리 관리 시스템은 프로세스 스케줄링, 프로세스 간 통신, 메모리 관리 등 중요한 루틴을 담당한다. 그 밖에 입출력 장치의 제어를 위한 입출력 장치 인터페이스가 존재하며, 인터럽트의 종류를 구별하여 해당되는 서비스 함수를 호출한다.     

[다중 프로그래밍 기법의 기본 개념은 무엇인가? 이 기법을 지원하기 위해 요구되는 CPU와 입출력 장치 사이의 인터페이스 방법에 대해 설명하라]
다중 프로그래밍이란 기본적으로 CPU의 매우 빠른 속도를 대기 시간에 낭비하지 않도록 프로그램을 번갈아 가며 실행하여 CPU의 이용률을 극대화시키는 것을 말한다. CPU는 프로그램 실행 중 입출력 요구가 발생할 경우 대기 상태에 들어가게 되는데, 이때 CPU는 아무것도 하지 않고 입출력이 종료될 때 까지 기다리게 된다. CPU는 속도가 매우 빠르기 때문에, 아무것도 하지 않고 기다리는 것은 효율성에 있어서 매우 큰 손실이다. 다중 프로그래밍은 이러한 상황을 막기 위해 운영체제로 하여금 메모리에 여러 프로그램을 적재시켜 놓고, 실행 중인 프로그램에 입출력 요구가 발생할 때, CPU가 대기 상태로 들어가지 않고 다른 프로그램을 실행하도록 하여 CPU의 이용률을 향상시키는 것이다. 이러한 기법이 가능하려면, 운영체제는 여러 프로그램을 메모리에 적재시키기 위해 메모리 분할 및 할당에 관한 기능 및 여러 프로그램 중 어느 것을 실행할 것인지 결정하는 CPU 스케줄링과 같은 다양한 기법이 요구된다.  

[운영체제에서 두 가지의 실행모드(사용자 모드, 커널 모드)를 사용하는 이유에 대하여 설명하라]
운영체제는 보통 다중 프로그래밍을 지원하기에 여러 프로그램이 하나의 운영체제를 공유하며 사용하게 된다. 운영체제는 사용자와 시스템 자원을 공유하고, 하드웨어와 관련된 다양한 중요 루틴을 제공하기 때문에 사용자로부터 보호를 받을 필요가 있다. 이를 위해 사용자 모드와 커널 모드를 나누어, 일반적인 프로그램이 실행되는 사용자 모드에선 운영체제 내부를 직접적으로 건드릴 수 없도록 한다. 사용자 모드에선 오로지 운영체제가 제공하는 루틴을 통해 커널 모드에 간접적으로 접근할 수 있도록 하여 운영체제를 보호한다. 

[부팅 후 다음과 같은 사건들이 발생할 경우에 운영체제가 실행된다. 각 경우에 대해 실례를 제시하고 이들이 처리되는 과정을 설명하라]

(1) 입출력 장치로부터 인터럽트가 발생되었을 경우
프로그램을 실행하기 위해 마우스로 아이콘을 더블 클릭할 경우 마우스에서 CPU로 인터럽트 신호를 보낸다. CPU는 운영체제가 제공하는 입출력 장치 인터페이스를 통해 커널의 적절한 인터럽트 처리 서비스를 호출한다. 인터럽트 처리가 완료되면 CPU는 중단됐던 작업을 다시 시작한다.

(2) 응용 프로그램으로부터 시스템 호출이 발생되었을 경우
사용자 모드에서 응용 프로그램이 실행되는 도중 메모리 관련된 작업과 같이 커널이 담당하는 작업을 수행할 경우 시스템 호출을 하게 된다. 이때, 시스템 호출을 통하여 커널 모드로 진입하여 커널 내부의 적절한 서비스 루틴을 선택하여 처리한다.  

(3) 예외현상으로 시스템 오류가 발생하였을 경우
CPU가 프로그램 실행 중 "0으로 나누는 명령"과 같이 정의되어 있지 않은 작업을 할 경우 예외 현상이 발생하는데, 이러한 예외 처리 루틴이 운영체제 내부에 구현되어 있다. 때문에 이를 실행하기 위해 운영체제로 진입한다.




댓글