본문 바로가기
운영체제

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

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

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

 

[2.12 운영체제가 제공하는 서비스와 기능은 크게 두 범주로 나눌 수 있다. 두 범주에 대해 간략히 설명하고 차이점을 논의하시오.]

[운영체제 서비스는 프로그램 실행 환경을 제공하고 사용자에게 유용한 기능을 제공한다]

 ○ 사용자 인터페이스

 ○ 프로그램 실행

 ○ 입출력 연산

 ○ 파일 시스템 조작

 ○ 통신

 ○ 오류감지 

 

[시스템 자체의 효율적인 운영을 보장한다]

 ○ 자원할당

 ○ 회계

 ○ 보호 및 보안


[2.13 운영체제에게 매개변수를 전달하는 보편적인 방법 3가지를 설명하시오.]

1. 매개변수를 레지스터 내에 전달

2. 매개변수를 메모리 내의 블록이나 테이블에 저장하고 그 주소를 레지스터 내에 매개변수로 전달

3. 스택에 push 한다.


[2.14 프로그램 코드의 각 영역을 실행하는 데 걸린 시간에 대한 통계 프로파일을 얻는 방법에 대해 설명하시오. 이러한 통계 프로파일을 확보하는 것이 중요한 이유에 대해 논의하시오.]

운영체제의 회계(Accounting)의 기능에 의해 통계 프로파일을 얻을 수 있다. 이 통계 프로파일은 사용자가 어떤 종'류의 컴퓨터 자원을 얼마나 많이 사용하는지 추적할 수 있게 해주며 컴퓨팅 서비스를 개선하기 위해 시스템을 재구성하고자 하는 연구자에게 귀중한 자료가 된다.


[2.15 파일 관리와 관련된 운영체제의 다섯 가지 주요 활동은 무엇인가?]

1. 파일 생성, 삭제

2. 파일 열기, 닫기

3. 파일 읽기, 쓰기

4. 파일 위치변경

5. 파일 속성 가져오기, 세팅하기


[2.16 파일과 장치에 대한 접근을 처리하기 위해 같은 시스템 호출 인터페이스를 사용할 때 의 장단점은 무엇인가?]

시스템 호출에 의한 서비스가 빠르다.

원하는 시스템 호출이 무엇인지보다 더 많은 정보가 요구될 경우가 생긴다. 필요한 정보의 유형과 양은 특정 운영체제와 호출에 따라 다양하다. 예를들어 입력을 받아들이기 위해 입력원으로 사용될 파일이나 장치와 함께 읽어 들인 데이터를 저장할 메모리 버퍼의 주소와 길이를 명시할 필요가 있다.


[2.17 운영체제가 제공하는 시스템 호출 인터페이스를 사용하여 사용자가 새로운 명령어 해석기를 개발하는 것은 가능한가?]

가능하다. 그에 대한 예시로 컴파일러가 있다. 컴파일러는 프로그래머가 입력하는 고수준 언어를 해석해 시스템 호출 인터페이스의 조합으로 해석한다.


[2.18 프로세스 간 통신의 두 가지 모델은 무엇인가? 각 모델의 장점과 단점은 무엇인가?]

[공유 메모리 모델]

말 그대로 공유 메모리를 사용하여 통신하는 기법

한 컴퓨터 안에서 메모리 전송 속도로 실행할 수 있기 때문에 최대 속도와 편리한 통신을 허용한다.  그러나 보호와 동기화 부분에서 여러 문제점을 가지고 있다.

[메시지 전달 모델]

통신이 하기위해 상대방의 이름을 알고 있어야 하며 통신하는 두 프로세스가 정보를 교환하기 위하여 서로 메시지를 주고받는 모델

피해야 할 충돌이 없기 때문에 소량의 데이터를 교환할 때 유용하다. 또한 컴퓨터간의 통신을 위해 메모리 공유보다 구현하기가 쉽다. 하지만 공유 메모리 모델 보다 속도가 느리다.


[2.19 기법과 정책을 분리하는 것이 바람직한 이유는 무엇인가?]

기법=어덯게 할 것인가를 결정하는 것    정책= 무엇을 할 것인가를 결정하는 것

정책은 장소가 바뀌거나 시간의 흐름에 따라 변경될 수 있다. 최악의 경우, 정책의 각 변경이 깔려 있는 기법의 변경을 요구하게 된다. 따라서 정책의 변경에 민감하지 않은 일반적인 기법이 보다 바람직하다.

이 경우 ) 만약 우리가 사용하고 있는 한 함수의 정책이 바뀌었다면 일부 매개변수만 재정의 하면 된다.


[2.20 운영체제의 두 구성요소가 서로에게 종속적인 경우 계층구조로 시스템을 구성하는 것이 어려울 때가 있다. 서로의 기능이 밀접하게 연결되어 있어서 계층구조로 나누는 방법이 불분병한 경우를 제시하시오.]

계층구조는 상위층에서 하위층을 호출하는 구조를 가진다.

예비 저장장치 드라이버는 보통 CPU 스케줄러 위에 존재한다. 이는 드라이버가 입출력을 위해 기다려야 하고, CPU가 그 동안 다시 스케줄 될 수 있다. 그러나 대형 시스템의 CPU 스케줄러는 활동 중인 모든 프로세스들에 대해 메모리에 적재할 수 있는 것보다 더 많은 정보를 가질 수 있다. 따라서 이러한 정보들은 메모리에서 스왑인 스왑아웃 될 필요가 있을 수 있으며 이는 예비 저장장치 드라이버 루틴이 CPU 스케줄러 아래에 놓일 것을 요구한다.


[2.21 시스템을 설계할 때 마이크로커널 방식을 사용하는 장점은 무엇인가? 마이크로커널 구조에서 사용자 프로그램과 시스템 서비스가 상호작용하는 방식에 대해 설명하시오. 마이크로커널 방식을 사용할 때의 단점은 무엇인가?]

마이크로커널 : 중요하지 않은 구성요소를 커널로부터 제거하고 그들을 시스템 및 사용자 수준 프로그램으로 구현한 운영체제

장점 : 운영체제의 확장이 용이하다 | 하드웨어의 이식이 쉽다 | 더 신뢰할 수 있고 안전하다

단점 : 사용자 공간에서 커널 공간으로 통신 시 성능 오버헤드 발생

 

상호작용 방식 : 마이크로커널과 메시지를 교환함으로써 간접적으로 상호 작용한다.


[2.22 적재가능 커널 모듈을 사용하는 장점은 무엇인가?]

모듈에서 임의의 다른 모듈을 호출할 수 있다는 점에서 계층 구조보다 유연하다

통신하기 위하여 메시지 전달을 호출할 필요가 없기 때문에 효율적이다

커널은 핵심 서비스를 제공하고 다른 서비스들은 커널이 실행되는 동안 동적으로 구현된다.

커널을 다시 컴파일할 필요가 없다


[2.23 iOS와 Android의 유사점을 설명하시오. 둘의 차이점은 무엇인가?]

유사점 : 둘다 모바일 운영체제이며 모바일 응용을 개발하기 위한 풍부한 프레임워크를 제공하는 소프트웨어의 계층 구조로 이루어져있다.

Android 는 오픈소스이며 스마트폰과 태블릿을 위해 개발되었다. 리눅스 커널이 존재하며 Android 실행 환경은 핵심적인 라이브러리 집합과 Dalvik 가상 기계를 포함한다. Android 장치의 소프트웨어 설계자는 JAVA와 Android API로 앱을 개발한다.

 

iOS는 소스가 공개되지 않았고 아이폰, 아이패드를 실행시키기 위하여 개발되었다. ios는 Mac Os X운영체제 상에서 구현되어 모바일 장치에 특화 된 기능을 추가로 제공하지만 Mac OS X 응용을 직접 실행하지는 않는다. 앱을 개발하기 위해 Cocoa Touch를 사용한다. 클라우드 컴퓨팅과 데이터베이스 지원과 같은 다양한 기능을 제공한다


[2.24 Android 시스템에서 실행되는 Java 프로그램이 표준 Java API와 가상 머신을 사용하지 않는 이유에 대해 설명하시오]

Android는 Dalvik 가상 머신을 사용하는데 이 가상기계는 제한된 메모리와 CPU 처리 능력을 가진 모바일 장치에 최적화 되었기 때문이다.(빠름)


[2.25 실험적인 Synthesis 운영체제는 커널 안에 어셈블러가 포함되어 있다. 시스템 호출의 성능을 최적화하기 위해, 커널은 커널 공간 내의 루틴을 어셈블 하여 반드시 지나가야 할 커널 경로를 최소화한다. 이러한 접근 방법은 계층적 접근 방법과는 반대되는 것으로 계층적 접근 방법에서는 운영체제 구현을 쉽게 하기 위해 커널 경로를 연장한다. 커널 설계 측면과 시스템 성능 최적화 측면에서 Synthesis 방식의 장단점을 논의하시오.]

 

아시는 분 댓글 부탁드립니다


2022.04.01 - [운영체제] - OPERATING SYSTEM CONCEPTS 에센셜 연습문제 2장 #1

 

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

오답이 있을 시 댓글 부탁드리겠습니다. [2.1 시스템 호출의 목적은 무엇인가?] User mode의 응용 프로그램이 시스템 호출을 사용함으로서 운영체제의 서비스를 요청해 사용할 수 있다. 운영체제의

dongkyung.tistory.com

 

반응형

댓글