본문 바로가기
운영체제

OPERATING SYSTEM CONCEPTS 에센셜 연습문제 2장 #1

by 핫동경 2022. 4. 1.
반응형

오답이 있을 시 댓글 부탁드리겠습니다.

 

[2.1 시스템 호출의 목적은 무엇인가?]

User mode의 응용 프로그램이 시스템 호출을 사용함으로서 운영체제의 서비스를 요청해 사용할 수 있다.

운영체제의 서비스를 사용할 수 있다(하드웨어 자원 접근)


[2.2 프로세스 관리와 연관된 운영체제의 주요 활동 5가지는 무엇인가?]

1. CPU에 프로세스와 스레드를 스케줄하기

2. 사용자 프로세스와 시스템 프로세스의 생성과 제거

3. 프로세스의 일시 중지와 재실행

4. 프로세스 동기화를 위한 기법 제공

5. 프로세스 통신을 위한 기법 제공


[2.3 메모리 관리와 연관된 운영체제의 주요 활동 3가지는 무엇인가?]

1. 메모리의 어느 부분이 현재 사용되고 있으며 누구에 의해 사용되고 있는지 추적

2. 어떤 프로세스들을 메모리에 적재하고 제거할 것인가를 결정

3. 필요에 따라 메모리 공간을 할당하고 회수


[2.4 보조 저장장치 관리와 연관된 운영체제의 주요 활동 3가지는 무엇인가?]

1. 자유 공간의 관리

2. 저장 장소할당

3. 디스크 스케줄링


[2.5 명령어 해석기의 목적은 무엇인가? 왜 일반적으로 명령어 해석기는 커널에 포함되지 않는가?]

목적 : 사용자가 운영체제가 실행할 명령어를 직접 입력할 수 있게한다. 해석기는 사용자의 명령을 해석 후 실행한다. 또한 시스템 프로그램에 의해 구현된 명령을 명령 파일에서 읽고 수행한다.

 

커널에 포함되지 않는 이유 : 명령어 인터프리터가 바뀔 수 있다.

명령어 인터프리터는 사용자, 명령어 파일로부터 명령어를 읽은 후, 명령어를 하나 이상의 시스템 호출로 변환함으로써 그것을 실행한다. 그에 따라 명령어 인터프리터는 실행에 제약을 받기 때문에, 커널에 포함되지 않는다.

https://ko.wikipedia.org/wiki/%EB%AA%85%EB%A0%B9%EC%96%B4_%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0

 

명령어 인터프리터 - 위키백과, 우리 모두의 백과사전

명령어 인터프리터(command-line interpreter, command-line processor, command language interpreter)는 운영 체제나 프로그래밍 언어의 환경에서 해석하는 입력된 명령어를 읽고 실행하는 컴퓨터 프로그램이다. 줄

ko.wikipedia.org


[2.6 커널을 시작하기 위해서 명령어 해석기 또는 셸이 실행해야 하는 시스템 호출은 무엇인가?]

새로운 프로세스를 시작하기 위해 셸은 fork() 시스템 호출을 실행한다. 그런 다음 선택된 프로그램이 exec()시스템 호출을 통해 메모리에 적재되고 이어 그 프로그램이 실행된다.


[2.7 시스템 프로그램의 목적은 무엇인가?]

프로그램 개발과 실행을 위해 보다 편리한 환경을 제공한다.

일반적인 문제를 해결하기 위해 프로그램을 제작하지 않고 시스템 프로그램을 사용하면 된다.


[2.8 계층화된 시스템 설계 방식의 주요 이점은 무엇인가? 계층화된 접근 방식의 단점은 무엇인가?]

이점 : 구현하기가 쉽다, 디버깅이 간단하다, 시스템의 설계나 구현이 간단해진다.

 

단점 : 각 층을 적절히 정의하는 것은 매우 어려운 일이다. 각 층은 자신의 하위에 있는 계층들만 사용할 수 있기 때문에 신충한 계획이 필요하다. 또한 다른 유형의 구현 방법보다 효율성이 낮다. 각 층은 시스템 호출에 오버헤드를 추가해 계층적 구조가 아닌 시스템보다 시스템 호출의 실행 시간이 더 오래 걸리게 된다.


[2.9 운영체제가 제공하는 서비스 5개를 나열하고 각각의 서비스가 사용자들에게 어떤 방식으로 편리함을 제공하는지 설명하시오. 사용자 수준 프로그램에서 이러한 서비스를 제공하는 것이 불가능한 경우는 무엇인가?]

1. 프로그램 실행

시스템은 프로그램을 메모리에 적재해 실행할 수 있어야한다. 프로그램은 정상적이든 비정상적이든 실행을 끝낼 수 있어야 한다. 사용자 수준 프로그램은 직접 메모리에 접근할 수 없으므로 서비스를 제공하는 것이 불가능하다.

 

2. 입출력 연산

실행 중인 프로그램은 입출력을 요구할 수 있다. 이러한 입출력에는 파일 혹은 입출력 장치가 연관될 수 있다. 사용자 수준 프로그램은 입출력 장치를 직접 제어할 수 없으므로 이런 서비스를 제공할 수 없다.

 

3. 파일시스템 조작

파일과 디렉토리의 생성, 삭제, 지정된 파일 찾기, 파일 정보열기, 파일이나 디렉토리의 접근제어 등 다양한 파일시스템 제공. 파일 시스템 또한 하드웨어의 자원이고 사용자 프로그램에서 파일이나 디렉토리의 보안방법을 보장할 수 없기 때문에 서비스를 제공할 수 없다.

 

4. 통신

한 프로세스가 다른 프로세스와 정보를 교환해야할 때 방법을 제공해준다. 공유 메모리를 통해서 구현되거나 메시지 전달 기법에 의해 전달됨.

사용자 수준 프로그램에서는 네트워크 장치에 대한 엑세스를 조정하거나 다른 프로세스로 향하는 패킷을 조정할 수 없기 때문에 서비스가 제공될 수 없다.

 

5. 오류 탐지

운영체제는 모든 가능한 오류를 항상 의식하고 있는다. 또한 오류에 대한 적당한 조취를 취한다.

사용자 수준 프로그램에서 오류에 대한 디버깅같은 기능을 제공할 수 없다.


[2.10 일부 시스템에서는 운영체제를 펌웨어에 저장하는 반면 다른 시스템에서는 디스크에 저장하는 이유는 무엇인가?]

휴대전화, 태블릿, 게임 콘솔등(작은 운영체제)의 시스템들은 디스크와 파일 시스템같은 기능들을 사용하지 않으니 펌웨어에 저장한다. 반면 컴퓨터의 대형 운영체제 같은 경우는 디스크와 파일 관리 시스템을 사용하기 때문에 디스크에 저장한다.


[2.11 부팅 대상 운영체제를 선택할 수 있도록 시스템을 설계하려면 어떻게 해야 하는가? 부트스트랩 프로그램이 실행해야 하는 작업은 무엇인가?]

각 운영체제를 디스크에 저장해야 한다. 그 후 부팅이 될 부트 관리자라는 것이 부팅할 시스템을 결정할 수 있도록 설계해야 한다. 부트 관리자는 사용자가 사용할 운영체제를 고를 수 있도록 기능을 제공할 수 있어야 한다.

반응형

댓글