본문 바로가기

공부 기록/OS

[OS/공룡책] Chapter 1. 서론 - 연습 문제

1) 운영체제의 세 가지 주요 목적은 무엇인가?

- 컴퓨터 사용자가 편리하고 효율적으로 컴퓨터 하드웨어에서 프로그램을 실행할 수 있는 환경을 제공한다.

- 태스크를 수행하는 데 필요한 각각의 리소스들을 가능한 공정하고 효율적으로 할당한다.

- 제어 프로그램으로서, 두 가지 주요 기능을 수행한다.

   - 에러 및 컴퓨터의 부적절한 이용을 방지하기 위해 사용자 프로그램의 실행을 감독(관리)한다.

   - 연산 및 입출력 장치를 제어한다.


2) 컴퓨팅 하드웨어를 효율적으로 사용하려면 운영체제가 필요하다고 강조하였다. 운영체제가 이 원칙을 버리고 자원을 낭비하는 것이 적절한 때는 언제인가? 그러한 시스템이 실제로 낭비하는 것이 아닌 이유는 무엇인가?

- GUI와 같이 사용자와 시스템의 상호작용이 우선되는 경우 CPU 사이클이 "낭비"될 수 있다.


3) 실시간 환경을 위해 운영체제를 작성할 때 프로그래머가 극복해야 하는 주요 어려움은 무엇인가?

- 고정된 시간 제약 내에 운영 체제를 유지하는 것이다. 시스템이 제한된 시간 내에 작업을 끝내지 않는다면 전체 시스템의 고장을 초래할 수 있다. 따라서 실시간 시스템을 위한 운영 체제를 설계할 때 설계자(프로그래머)는 응답 시간이 시간 제약을 초과하지 않도록 스케줄링을 확실히 해야 한다.


4) 운영체제의 다양한 정의를 염두에 두고 운영체제에 웹 브라우저 및 메일 프로그램과 같은 응용 프로그램이 포함되어야 하는지 생각해 보라. 포함시킨다와 포함시키지 않는다는 주장 모두의 입장에서 논증하라.

- 운영체제에 웹 브라우저 및 메일 프로그램과 같은 응용 프로그램을 포함하는 것에 찬성하는 주장은 운영체제 안에 응용 프로그램이 내장되어 있을 때 커널의 기능을 더 잘 활용할 수 있기 때문에 커널 외부에서 실행되는 응용 프로그램보다 성능이 더 우수하다는 것이다.

- 그러나 일반적으로 운영체제 내부에 응용 프로그램을 내장하는 것에 반대하는 주장이 더 지배적이다. 첫째, 응용 프로그램은 운영체제의 일부가 아니라 응용 프로그램일 뿐이다. 둘째, 커널 내부에서 실행되는 어떤 성능 상의 이점도 보안상의 취약점에 의해 상쇄된다. 셋째, 응용 프로그램을 포함하면 운영체제가 비대해진다.


5) 커널 모드와 사용자 모드의 구별은 기본적인 형태의 보호(보안)로서 어떤 기능을 하는가?

- 커널 모드와 사용자 모드의 구별은 다음과 같은 방식으로 기본적인 형태의 보호(보안)을 제공한다. => 오직 CPU가 커널 모드일 때만 특정 명령이 실행될 수 있다. 마찬가지로 하드웨어 장치 또한 프로그램이 커널 모드에 있을 때만 접근할 수 있으며, CPU가 커널 모드에 있을 때만 인터럽트가 활성화되거나 비활성화될 수 있다. 따라서 CPU는 사용자 모드에서 실행될 때 아주 제한적인 기능을 가지기 때문에 중요한 리소스를 보호할 수 있다.


6) 다음 중 특권 명령이어야 하는 명령어는 무엇인가?

   a. 타이머 설정

   b. 클록 읽기

   c. 메모리 내용 삭제

   d. 트랩 명령의 실행

   e. 인터럽트 끄기

   f. 장치 상태 테이블의 항목 수정

   g. 사용자에서 커널 모드로 전환

   h. I/O 장치 액세스

 

- a.타이머 설정, c.메모리 내용 삭제, e.인터럽트 끄기, f.장치 상태 테이블의 항목 수정, h.I/O 장치 액세스가 특권 명령이어야 하는 명령어다. 나머지는 사용자 모드에서 수행될 수 있다.


7) 일부 초기 컴퓨터는 운영체제를 사용자 작업이나 운영체제 자체에서 수정할 수 없는 메모리 파티션에 배치하여 운영체제를 보호하였다. 이러한 기법에서 발생할 수 있다고 생각되는 두 가지 어려움을 설명하라.

- 운영 체제에 필요한 데이터(암호, 액세스 제어, 회계 정보 등)는 보호되지 않는 메모리에 저장 또는 전달된다. 따라서 권한 없는 사용자가 접근할 수 있게 된다.


8) 일부 CPU는 세 개 이상의 작동 모드를 제공한다. 이 다중 모드를 사용할 수 있는 두 가지 경우는 무엇인가?

- 대부분의 시스템은 사용자 모드와 커널 모드만 구분하지만 일부 CPU는 다중 모드를 지원한다. 다중 모드는 보다 세분화된 보안 정책을 제공할 수 있다. 예를 들어, 사용자 모드와 커널 모드만 구분하는 대신 다른 유형의 사용자 모드를 구분할 수 있다. 같은 그룹에 속한 사용자들은 서로의 코드를 실행할 수도 있을 것이다. 이 사용자 중 한 명이 코드를 실행할 때 장치는 특정한 모드로 전환된다. 이때 그 그룹의 구성원은 그룹의 다른 사용자에게 속한 코드를 실행할 수 있다.

- 또 다른 경우는 커널 코드 내에서 다른 식별을 제공하는 것이다. 예를 들어 어떠한 모드에서는 USB 장치 드라이버를 실행할 수 있다. 이것은 USB 장치가 커널 모드로 전환되지 않고도 서비스될 수 있다는 것을 의미한다. 따라서 USB 장치 드라이버가 준 사용자/커널 모드에서 실행될 수 있도록 한다.


9) 타이머는 현재 시간을 계산하는 데 사용될 수 있다. 어떻게 계산이 가능한지 간단하게 설명하라.

- 프로그램은 타이머 인터럽트를 사용하여 현재 시간을 계산하기 위해 다음과 같은 접근법을 사용할 수 있다. => 프로그램은 미래의 어느 시간 동안 타이머를 설정하고 sleep 상태가 될 수 있다. 인터럽트에 의해 sleep 상태를 벗어나면 프로그램의 로컬 상태를 업데이트하여 지금까지 수신한 인터럽트의 수를 추적하는 데 사용한다. 그런 다음 타이머 인터럽트를 지속적으로 설정하고 인터럽트가 실제로 발생할 때 로컬 상태를 업데이트하는 이 프로세스를 반복할 수 있다.


10) 캐시가 유용한 두 가지 이유를 제시하라. 어떤 문제를 해결할 수 있는가? 어떤 문제를 야기하는가? 캐시의 크기를 캐싱하는 장치만큼 크게 만들 수 있다면(예: 디스크의 크기와 같은 캐시) 캐시의 용량을 늘린 후 원래 장치를 제거하지 않는 이유는 무엇인가?

- 캐시는 두 개 이상의 장치가 데이터를 교환해야 할 때, 그리고 장치가 서로 다른 속도로 전송을 수행할 때 유용하다. 캐시는 구성 요소 간 중간 속도의 버퍼를 제공하여 전송 문제를 해결한다. 빠른 장치가 캐시에서 필요한 데이터를 찾게 되면 더 느린 장치를 기다릴 필요가 없다. 캐시의 데이터는 구성 요소의 데이터와 일관성을 유지해야 한다. 구성 요소의 데이터 값이 변경되고 그 데이터들이 캐시에도 있으면 캐시 또한 업데이트해야 한다. 이것은 하나 이상의 프로세스가 데이터들에 접근하는 멀티프로세서 시스템에서 특히 문제다.

- 캐시와 장치가 동등한 상태 저장 용량을 갖는 경우(즉, 전기가 차단되었을 때 장치와 캐시가 데이터를 유지해야 하는 경우), 빠른 저장 장치는 일반적으로 더 비싸기 때문에 캐시는 경제적이다.


11) 분산 시스템의 클라이언트-서버 시스템과 피어 간 모델의 차이를 설명하라.

- 클라이언트-서버 모델은 클라이언트와 서버의 역할을 확실하게 구분한다. 클라이언트-서버 모델에서 클라이언트는 서버에 의해 제공될 수 있는 서비스를 요청한다. P2P 모델에서는 그렇게 엄격한 역할은 없다. 사실 시스템의 모든 노드는 피어로 간주되므로 클라이언트나 서버, 또는 둘 다의 역할을 할 수 있다. 노드는 다른 피어로부터 서비스를 요청할 수도 있고, 시스템의 다른 피어들에게 이러한 서비스를 제공할 수도 있다.

- 예를 들어, 요리 레시피를 공유하는 노드 시스템을 생각해보자. 클라이언트-서버 모델에서 모든 레시피는 서버에 저장된다. 클라이언트가 레시피에 접근하려면 지정된 서버에 레시피를 요청해야 한다. P2P 모델에서 피어 노드는 특정한 레시피에 대해 다른 피어 노드에 요청할 수 있다. 요청된 레시피가 있는 노드(노드들)는 요청한 노드에 이를 제공할 수 있다. 각 피어가 클라이언트(레시피를 요청할 수 있음)와 서버(레시피를 제공할 수 있음) 역할을 모두 수행한다는 점에 주목하라.


해답 PDF

https://codex.cs.yale.edu/avi/os-book/OS10/practice-exercises/PDF-practice-solu-dir/1.pdf

 

오역이 있다면 댓글로 알려주세요.