티스토리 뷰

728x90

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

운영체제에 의해 제공되는 서비스의 한 부류는 시스템에서 동시에 실행되는 다른 프로세스들 간의 보호를 강화하는 것이다. 프로세스들은 자신의 주소 스페이스와 관련된 메모리 위치에만 접근할 수 있다. 또한 프로세스들은 다른 사용자와 관련된 파일을 바꿀 수 없다. 프로세스는 운영체제의 중재 없이 장치들에 직접 접근할 수도 없다.

운영체제가 제공하는 서비스의 다른 부류는 근본적인 하드웨어를 통해서는 직접 제공되지 않는 새로운 기능성을 제공하는 것이다. 가상 메모리와 파일 시스템은 운영체제에 의해 제공되는 새로운 서비스의 두 가지 예이다.


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

a. 레지스터 : 가장 간단한 방법으로 값을 레지스터에 저장하여 매개변수를 전달하는 방식이다. 이 방법은 가장 간단하면서도 신속한 매개변수의 전달이 가능하지만 매개변수가 레지스터보다 많은 경우에는 이용이 불가능한 방법이다.


b. 블록 또는 테이블 : 매개변수를 메모리 내의 블록이나 테이블에 저장하고, 블록의 주소를 레지스터에 저장하는 방식으로 매개변수를 전달한다.


c. 스택 : 스택 구조를 이용하여 응용프로그램은 스택에 push 연산을 수행하여 매개변수를 저장하고, 운영체제는 pop 연산을 이용하여 매개변수를 읽는 구조이다.


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

-  통계 프로 파일을 얻는 방법은 회계(Accounting) 기법에서 얻어 집니다. accounting 기법에는 네트워크 자원의 접근동안 사용자의 프로세스 흔적을 유지하면서 얼마나 많은 양의 네트워크 시간을 소비한 양과 서비스의 접근 시간이 있습니다. 그리고  session 동안 데이터가 변환된 양을 통계 프로파일로 얻는 것 입니다.


이러한 통계가 중요한 이유는 사용 통계는 computing service를 개선하기 위한 연구자에게 귀중한 자료가 될 수 있습니다.  


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

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

    ➁ 프로세스의 일시중지와 재 수행

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

    ➃ 프로세스 통신을 위한 기법 제공
    ➄ 교착상태 처리를 위한 기법 제공


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

(모놀리식구조)

 장점: 오버헤드가 거의 없다(시스템 호출에 의한 서비스가 빠르다)

 단점: 구현이 어렵고 유지보수가 어렵다


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


개발하는 것이 가능하다. 운영체제가 제공하는 시스템 호출 인터페이스는 직교성이 존재하기 때문에 운영체제가 제공하는 시스템 호출 인터페이스를 조합하여 프로그래머가 입력하는 대부분의 명령어를 해석하는 것이 가능하다.

운영체제가 제공하는 시스템 호출 인터페이스를 사용하여 새로운 명렁어 해석기를 개발한 대표적인 예로는 컴파일러가 있다. 컴파일러는 프로그래머가 입력하는 고수준 언어(high-level language, HLL)을 해석하여 소스 코드를 시스템 호출 인터페이스의 조합으로 해석하는 시스템소프트웨어이다.


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


-  프로세스간 통신의 두 가지 모델에는 메시지 전달(Message Passing)과 공유 메모리 (Shared Memory)의 모델이 있습니다.


- 메시지 전달의 장점은 공유메모리보다 구현하기가 쉽습니다. 그리고 소량의 데이터를 교환할 때 충돌이 없다는 점에서 공유 메모리보다 유용합니다.


단점은 속도가 직접 전달하는 공유메모리보다는 느립니다. 그리고 매번 system call이 호출되기 때문에 이로 인해서 overhead가 자주 발생 하게 됩니다.


- 공유메모리의  장점은 중개자가 없기 한 컴퓨터 안에서 메모리에 곧바로 접근 할 수 있기 때문에 최대 속도와 편리한 통신을 허용한다는 장점이 있습니다. 그리고 메모리 자체를 공유하기 때문에 데이터의 복사와 같은 오버헤드가 발생하지 않습니다.


단점은 보호와 동기화 부분에서 여러 문제점이 있습니다. 그리고 메시지 전달 방식이 아니라서 데이터를 읽어야 되는 시점을 알 수가 없습니다. 또한 프로그래머가 응용프로그램을 만들 때, 고려해야 하는 논리적 문제가 있습니다.


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

- 우선 기법이란 어떤 일을 어떻게 할 것인가를 결정하는 것이고, 정책은 무엇을 할 것인가를 결정하는 것이다. 즉 기법은 어떠한 일을 하는 방법론이라고 하면 정책은 그 방법론을 구성하는 세부적인 조건이라고   볼 수 있다. 정책은 상황이 변하면 변경될 수가 있는데 기법과 정책이 분리되어 있다면 정책의 수정만으로 해당 환경에 사용될 수 있다. 예를 들어 함수에 비유하면 함수를 구성하는 기본 알고리즘을 정책이라고 하고 함수의 파라메타를 정책이라고 하였을 때 함수가 사용되는 환경이 바뀌어도 기본 알고리즘을 변경하는 것이 아니라 파라메타를 변경함으로서 사용할 수 있다.


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

 입출력 연산 프로그램이 재귀적으로 돌아가는 경우 첫 번째 수행 결과값을 두 번째 입력값으로 반영하려는 경우 하위계층에서 상위계층의 값을 가져와야 하는데 계층구조라서 불가능 할 것이다

가상 메모리 하위 시스템과 저장소 하위 시스템은 전형적으로 단단히 연결되어 있고, 다음에 나오는 상호작용들 때문에 계층화된 시스템에서의 신중한 디자인을 요구한다. 많은 시스템은 파일이 실행중인 프로세스의 가상메모리 스페이스에 맵되는 것을 허락한다.

반면에 가상 메모리 하위 시스템은 현재 메모리에 위치하지 않은 backing store를 제공하기 위해 전형적으로 저장소 시스템을 사용한다. 또한, 파일시스템의 업데이트는

  

그것이 디스크에 플러쉬(flush)되기 전에 때때로 물리적 메모리에 버퍼된다. 그렇게 함으로써 가상 메모리 하위 시스템과 파일 시스템 간의 메모리 사용의 신중한 조직화를 요구한다.

  예비 저장 장치를 위한 장치드라이버는 메모리 관리가 예비저장장치를 사용할 수 있는 능력을 필요로 하기 때문에 메모리 관리 루틴들보다 하위층에 있어야한다.


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

마이크로커널이란, 커널을 최대한 경량화한 커널 구조이다. 커널을 경량화함으로써, 마이크로커널은 확장성이 뛰어나고 새로운 시스템 구조에 이식하는 것이 쉽다는 장점이 있다. 이외에도 커널에서 수행하는 기능이 적으므로, 버그나 시스템 취약점이 현저하게 감소하여 커널이 더 안정적이고 안전하다는 장점이 있다.

마이크로커널에서 사용자 프로그램과 시스템 서비스는 주로 메시지 전달을 이용하여 상호작용한다. 예를 들어, 입출력 장치에 대한 사용자 프로그램과 시스템 서비스간의 메시지 전달 방식의 동작 구조를 보면 동작은 아래와 같이 진행된다.

1) 사용자 프로그램이 운영체제에게 메시지를 전달한다.

2) 마이크로운영체제는 자신이 입출력을 직접 처리하는 것이 아니라, 인터럽트를 처리하는 프로세스에게 사용자 프로그램의 메시지를 전달한다.

3) 인터럽트 처리기는 메시지를 스케줄링하여 순서나 우선순위에 따라 메시지를 처리한다.


이러한 마이크로커널에는 단점 또한 존재하는데, 마이크로커널의 가장 큰 단점은 커널과 통신하기 위해 발생하는 성능 오버헤드이다. 마이크로커널은 주로 이 문제를 해결하기 위해 발달하는 경향을 보였으며, Message Direct Transfer, Short Message 등 다양한 메시지 전달 방식이 연구되었다.


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

- 커널을 자주 재구축 해줄 필요가 없습니다. 그리고 적재가능 커널 모듈을 유지하고 오류를 수정하는 것이 빠릅니다. 또한 필요할 시 모듈을 로드 할 수 있어서 코드를 커널에서 모듈로 이동하면 커널의 memory footprint 가 줄어듭니다. 디바이스 드라이버나 파일 시스템을 로드 가능한 커널 모듈로 구현시에 추가적으로 커널 구성이나 컴파일 필요 없이 커널에 로드가 가능합니다. 모듈에서 임의의 다른 모듈을 호출할 수 있다는 점 에서 계층보다 유연하다는 장점이 있습니다. 


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

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

- Android : Android 스마트 폰과 태블릿을 위해 개발 되었고 오픈소스이다. Linux 커널 위에 라이브러리, 안드로이드 런타임, 어플리케이션 프레임워크, 어플리케이션이 있다. 안드로이드 소프트웨어 설계자는 java를 이용하여 응용프로그램을 개발하지만 표준 Java API가 아닌 구글 사가 개발한 Android API를 이용한다. 그리고 Java 바이트코드를 Java 가상머신이 아닌 제한된 메모리와 CPU 처리 능력을 가진 Dalvik 가상머신에 실행 가능한 실행파일로 변환한다.

- iOS : iPhone과 iPad를 위해 설계된 운영체제이다. iSO의 구조중 Cocoa Touch는 모바일 장치의 고유한 하드웨어 기능을 지원하고 미디어 서비스 층은 그래픽, 오디오 및 비디오 서비스를 제공하며, 핵심 서비스 층은 클라우드 컴퓨팅과 데이터베이스와 같은 기능을 제공한다. 마지막 계층은 기본 Max OS X의 커널환경을 가지고 있다.

    


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

 기존의 Java 로는 모바일에서 적합하지 않다.

Dalvik은 레지스터 머신으로 parameter나 지역변수를 레지스터에 저장하고 사용하는 개념으로 CPU안에 있는 레지스터를 사용하기 때문에, 빠른 처리가 가능하다.

그에반해, JVM은 스택 머신으로 parameter나 지역변수를 메모리 스택(메모리 스택은 RAM에 저장된다)에 저장하고 불러오기때문에 레지스터 머신에 비해 느리다고 할 수 있다.

Dalvik 은 디스크 공간을 JVM에 비해 덜 사용하도록 설계되었다.(모바일에 최적화)


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

a. 장점 : 어셈블러가 커널에 포함되어 있기 때문에 다른 운영체제에서는 어셈블러가 하나의 응용프로그램으로 간주되어 발생할 메시지 전달 상의 오버헤드가 Synthesis에서는 발생하지 않는다. 성능적 측면 외에도, 프로그래머가 시스템이나 커널에 맞는 어셈블러를 직접 설치해야하는 번거로움이 없다는 장점 또한 존재한다.


b. 단점 : 커널이 하나의 응용프로그램을 직접 동작시키는 것과 같기 때문에 커널의 복잡성이 증가한다. 기본적으로 커널을 외부에서 변경하는 것은 불가능하기 때문에, 프로그래머는 자신이 사용하고자하는 어셈블러를 이용할 수 없는 경우가 존재할 수 있으며, 컴파일러와 같이 어셈블러를 구현해야하는 응용프로그램들은 Synthesis에 맞는 프로그램을 따로 개발해야하는 번거로움이 존재한다. 이외에도 어셈블러를 업데이트하기 위해서는 커널 자체의 코드를 수정해야하기 때문에 유지 및 보수가 어려워지는 단점 또한 존재한다.


'SoftWare > OS' 카테고리의 다른 글

OS - 4. Thread 연습문제  (2) 2016.07.05
OS - 3. Process 연습문제  (4) 2016.07.05
OS - 1. Introduction 연습문제  (4) 2016.07.05
OS - 12. Mass-Storage System  (2) 2016.06.11
OS - 11. File-System implementation  (0) 2016.06.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함