Computer Science/OS

운영체제(Opearting System:Concepts) 9판 2장 연습문제

TwinParadox 2018. 7. 17. 19:34

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

-시스템에서 동시에 실행되는 여러 프로세스 간 방해를 막고 보호하는 것.

프로세스는 해당 주소 공간과 연결된 메모리 위치에만 액세스할 수 있으며, 다른 사용자와 연결된 파일을 손상시킬수 없으며, OS의 개입 없이 프로세스가 장치에 접근할 수 없게 함.


-기본 하드웨어에서 직접 지원되지 않는 새로운 기능 제공.

가상 메모리와 파일 시스템은 OS에서 제공하는 새로운 서비스의 대표적인 예.




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

- 레지스터 내에 매개변수를 전달하기.

- 매개변수는 메모리 내 블록이나 테이블에 저장하고, 레지스터가 매개변수의 블록의 주소들을 전달하기.

- 프로그램을 이용해 스택에 넣고(push), 운영체제에 의해 꺼내는(pop-off) 방법.




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

타이머 인터럽트를 받으면, 주기적으로 타이머 인터럽트를 실행하고, 어떤 명령, 코드의 어떤 부분이 실행되고 있는지 감시할 수 있음.

코드 구획이 활성화된 통계 프로파일은 프로그램이 그 코드의 다른 섹션에서 보낸 시간과 일치해야 함. 이런 통계 프로파일이 확보되면, 프로그래머는 CPU 리소스를 더 많이 사용하는 코드 구획을 최적화할 수 있음.




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

- 파일 생성과 삭제

- 디렉토리 생성과 삭제

- 파일과 디렉토리를 조작하기 위한 우선 순위 지원

- 보조 스토리지에 파일을 옮기는 기능

- 비휘발성 같은 안정성 있는 스토리지 미디어에 파일의 백업




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

각 장치가 파일에 있는 파일처럼 접근 가능.

대부분의 커널이 이런 파일 인터페이스를 통해 장치를 다루기 때문에, 추상적인 파일 인터페이스를 지원하는 하드웨어 대상 코드를 지원하는 새로운 장치 드라이버를 추가하는 것도 상대적으로 쉬움.

동일한 방식으로 파일과 장치에 접근할 수 있게 작성된 유저 프로그램 코드와 잘 정의된 API를 제공하도록 작성된 장치 드라이버 코드의 개발할 때 이득임.

동일 인터페이스 사용의 단점은 파일 접근 API의 컨텍스트 내에서 특정 장치의 기능을 점유하는 것이 어려울 수 있음. 일부는 프로세스가 장치에서 작업을 호출하는 범용 인터페이스를 제공하는 ioctl(I/O Control)를 사용해 극북할 수 있음.




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

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

대표적으로 컴파일러가 이에 해당하는데, 컴파일러는 프로그래머가 입력하는 고수준 언어(high-level language, HLL)을 해석하여 소스 코드를 시스템 호출 인터페이스의 조합으로 해석함.




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

프로세스간 통신의 두 모델은 메세지 전달 방식과 공유 메모리 방식이 있음. 

메세지 전달 방식은 적은 양의 데이터를 교환할 때 유용하고 구현이 쉬움.

공유 메모리 방식은 통신 속도와 편의성을 극대화할 수 있고 메세지를 전달할 때 커널 개입에 더 많은 시간이 소요됨. 공유 메모리는 이외에도 보호/동기화 문제도 존재함.




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

시스템을 수정하기 쉽게 하려면 기법과 정책은 반드시 분리되어야 함. 융통성 측면에서 아주 중요함. 정책은 장소가 바뀌거나 시간의 흐름에 따라 변경될 수 있는데, 기법과 정책 분리한 덕에, 정책은 기법이 바뀌지 않을 때도 바뀔 수 있음. 이런 분리는 좀 더 유연성 있는 시스템을 제공함.




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

가상 메모리 서브시스템과, 스토리지 서브시스템은 긴밀히 결합되어 있고 다음에 언급되는 상호작용으로 인해 계층화된 시스템에서 세심한 설계가 필요함.

많은 시스템이 실행 중인 프로세스의 가상 메모리 공간에 파일을 매핑할 수 있게 해줌. 반면에, 가상 메모리 서브시스템은 일반적으로 스토리지 서브 시스템을 사용해서 현재 메모리에 있지 않은 페이지에 대한 백업 저장소를 제공함.

또한 파일시스템의 업데이트는 이것들 디스크에 플러시(flush)되기 전에 물리적인 메모리는 때때로 버퍼링되는 경우가 있기 떄문에 가상 메모리 간 메모리 사용을 신중하게 조정해야 함.




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

- 새로운 서비스 추가에 커널 수정이 필요 없음.

- 커널 모드에서의 명령보다 유저모드에서의 명령어 작동이 좀 더 안전.

- 간단한 커널 디자인과 일반적인 기능 사용할 때에도 OS의 안정성 향상.

사용자 프로그램과 시스템 서비스는 메세징 같은 프로세스간 통신 기법을 사용함으로써 마이크로커널 구조와 상호작용함. 이 메세지는 OS에 의해서 전달됨.

마이크로커널 방식의 주된 단점은 유저 프로세스와 시스템 서비스가 각각이 상호작용할 수 있게 하기 위해서 주기적인 OS의 메세지 기능과 프로세스간 통신의 오버헤드 문제가 있음.




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

실행 중에 커널에 기능을 추가하고 제거할 수 있어서 커널을 재부팅하거나 다시 컴파일할 필요가 없음.




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

모바일 응용을 개발하기 위한 많은 프레임워크를 제공하는 소프트웨어들의 계층 구조로 이뤄졌다는 점에서 둘이 유사함.

iOS는 애플의 모바일 디바이스에 실행하기 위해 설계되어 소스를 공개하지 않으나, Android는 다양한 플랫폼에서 실행되고 오픈 소스로 다루어짐. 이로 인해 빠르게 인기가 올라온 것도 있음.




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

기존의 JVM의 경우 스택 머신으로 매개변수나 지역변수를 메모리 스택에 저장하고 불러와서 Dalvik 머신보다 느리며, 디스크 공간을 좀 더 적게 차지하도록 하여 최대한 모바일에 최적화시켰기 때문임.




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

Synthesis는 즉석 컴파일을 보여주는 측면에서 인상적이나, 커널 내에서 코드의 가변성 때문에 디버그에 문제가 있음. 또한 이런 컴파일 방식은 시스템마다 다르고 각 아키텍쳐에 대해서 새로운 컴파일러를 작성해야 하므로, Synthesis를 포팅하게 어렵게 만듦. 



728x90