[OS]운영체제론 연습문제 1장 - 문제 및 해설


01 멀티프로그래밍과 멀티프로세싱은 어떻게 다른가각각 어떤 동기로 개발되었는가?

멀티프로그래밍이란한 번에 여러 작업을 처리하는 시스템을 말한다이 환경에서 운영체제는 각 작업 사이에서 프로세서를 재빠르게 전환하며 주변 장치들을 사용하는 동안 여러 작업이 각자 맡은 일을 진행하게 한다프로세서의 자원 낭비를 최소화하기 위해 낭비되는 시간을 다른 프로세스 수행에 쓰게 하여몇 가지 작업을 동시에 처리하기 위하여 개발되었다.

멀티프로세싱이란하나 이상의 프로세서가 서로 협력하여 일을 처리하는 것을 말한다여러 개의 프로세서가 하나의 작업을 병렬 처리한다처리해야 하는 작업이 간단한 경우에는 상관없지만 많은 작업을 빠른 시간에 처리하기 위해서 개발되었다.

멀티프로그래밍은 한 프로세스가 여러 작업을 전환하며 처리하는 시스템인데 반하여 멀티프로세싱은 한 작업을 여러 프로세스가 처리하는 시스템이다.


[교수님 답]

멀티프로그래밍 시스템은 하나의 프로세서에 하나이상의 프로그램은 동시에 수행시킨다. 멀티프로그래밍 시스템은 여러 개의 프로그램을 메인 메모리에 저장해 놓고 프로세서를 여러개의 프로그램들사이로 빠르게 스위치하여 프로그램을 동작시킨다. 멀티프로세싱시스템은 둘 이상의 프로세서를 가진 컴퓨터 시스템이다.

멀티프로그래밍은 프로세서와 I/O 자원 이용률을 증진하기 위해 개발되었다. 멀티프로세싱은 실제로 프로그램을 병렬 수행하게 함으로써 처리 속도를 증가시키기 위한 노력으로 개발되었다.


04 소프트 실시간 시스템을 위해 가상 머신을 사용하는 방법이 비현실적인 이유는 무엇인가?

실시간 시스템은 특정한 제한 시간 안에 반응해야 한다실시간 시스템의 자원은 활용도가 심각하게 떨어지곤 했다실시간 시스템에서는 자원을 효율적으로 사용하는 것보다 신속하게 응답하는 것이 훨씬 중요하기 때문이다.

가상 머신은 실제 운영체제 위에서 사용자 응용 프로그램처럼 작동하는 컴퓨터를 소프트웨어로 추상화한 것이다가상 머신 운영체제는 가상 머신에서 제공하는 자원을 관리한다.

가상 머신은 자원을 관리하는 운영체제인데실시간 시스템에서는 자원을 효율적으로 사용하는 것보다는 신속하게 응답하는 것이 훨씬 중요하므로가상 머신을 사용하는 방법은 비현실적이다.


[교수님 답]

 소프트 실시간 시스템은 타스크를 가능한 바로 수행해야만 한다. 이말은 해당 타스크가 활용하는 하드웨어가 있을 때 바로 사용해야 한다는 것을 의미한다. 그러나 가상 머신은 응용과 하드웨어간에 위치하는 다른 소프트웨어 계층이기 때문에, 가상 머신을 사용한다는 것은 필요시 하드웨어를 즉시 활용할 수 없을 수 있기 때문에 소프트 실시간시스템에 활용하는 것은 비현실적이다.


주) 소프트 실시간 시스템(soft real-time system) : 타스크 혹은 프로세스의 수행시 데드라인을 100% 지킬 필요가 없지만 가능한 데드라인을 지켜야 하는 실시간 시스템.

경성 실시간 시스템(hard real-time system) : 타스크 혹은 프로세스의 수행시 데드라인을 100% 지켜야 하는 실시간 시스템.


05 GUI는 개인용 컴퓨터 혁명에서 어떤 역할을 했는가?

GUI는 사용하기 쉽고 응용 프로그램들이 일관성 있는 인터페이스를 제공할 수 있게 하여 개인용 컴퓨터 사용을 촉진했다. 이렇게 일관성 있는 인터페이스 덕분에 사용자들이 다른 응용 프로그램도 쉽고 빠르게 배울 수 있게 되었다.


[교수님 답]

GUI는 사용자들에게 마우스와 아이콘을 사용하여 컴퓨터 응용 서비스들을 쉽게 이해하고 빠르고 편리하게 접근하게 함으로써 컴퓨터의 사용을 쉽게 하였다. 참고로 기존에는 사용자들이 명령어들을 익혀야 서비스들을 사용가능하였음.


07 분산 컴퓨팅이 운영체제 설계에 준 영향은 무엇인가?

분산 컴퓨팅이란, 독립적인 컴퓨터 여러 대로 공동 작업을 수행하는 일을 말한다.

사용자들은 원격 컴퓨터에 저장된 데이터를 요청하거나, 원격 프로세서에서 프로그램을 실행하기도 했다. 한편 큰 조직에서는 분산 멀티프로세서, 즉 프로세서가 여러 개 있는 컴퓨터들의 네트워크를 이용하여 자원을 확대하고 효율을 높일 수 있게 되었다.


[교수님 답]

분산 컴퓨팅으로써 운영체제는 한 컴퓨터 내부의 자원을 관리할 뿐만 아니라 외부의 자원(원격 컴퓨터의 디스크, 파일, 프린터, CPU 등)들을 관리한다. 예를 들면 데이터를 원격 컴퓨터로부터(에) 읽고(쓰고), 프로세스들을 원격 컴퓨터에서 수행할 수 있다. 이러한 것은 운영체제 설계자들이 네트워킹에 익숙하도록 요구한다. 즉, 분산 컴퓨팅은 네트워크를 기반으로 동작한다.


10 미들웨어와 웹 서비스는 어떻게 상호 운용성을 높이는가?

미들웨어는 네트워크 등을 통해 두 독립적인 응용 프로그램을 서로 연결하는 소프트웨어다. 이는 특히 웹 서비스에서 중요하다. 왜냐하면 여러 아키텍처 간 통신을 간략하게 해주기 때문이다. 웹 서비스는 이기종 컴퓨터의 응용 프로그램들이 인터넷을 통해 통신하고 데이터를 주고받는 데 필요한 표준들을 포함한다. 이들은 인터넷에 있는 바로 사용할 수 있는소프트웨어 부품이다.


[교수님 답]

미들웨어는 다른 아키텍쳐들간의 통신을 단순하게 하여 2개의 별개의 응용들(예, 웹서버와 데이터베이스)을 연결한다. 미들웨어의 예들에는 CORBA, RMI and DCOM 이 있다(17장 참조). 미들웨어는 하나의 컴퓨터내의 응용들을 연결하거나 다른 컴퓨터간의 응용들을 연결할 때 사용되는 소프트웨어이다. 웹 서비스는 2개의 컴퓨터 응용이 인터넷을 통하여 서로 통신하여 데이터를 교환하도록 하는 표준을 정의하여 응용들이 데이터를 쉽게 교환하도록 하여주는 소프트웨어이다.


11 모놀리식 아키텍처, 계층적 아키텍처, 마이크로커널 아키텍처에 대하여 다음을 비교하라.

a. 효율성(처리량 높고 평균처리 시간 짧음) : 모놀리식 커널은 사용자 영역에서 커널 영역으로의 호출이 적기 때문에 효율적이다. 계층적 아키텍처는 모놀리식 아키텍처에 비해 효율성이 떨어지는데, 그 이유는 계층적 운영체제에서 계층 간 통신하는 데 호출이 몇 번 필요하기 때문이다. 마이크로커널 아키텍처는 계층적 아키텍처보다 효율성이 좋다. 마이크로커널 아키텍처는 모든 운영체제 구성 요소가 마이크로커널을 통해 통신할 수 있기 때문이다.

b. 견고함(장애 내구성과 신뢰성) : 모놀리식 아키텍처는 모든 구성 요소들이 함께 그룹화되어 있기 때문에 버그나 오류에 대한 내구성과 신뢰성이 떨어진다. 계층적 아키텍처는 다른 계층에 전혀 영향을 주지 않고 각 계층의 구현을 수정할 수 있다. 모듈화된 시스템을 사용하므로, 자기 충족적인 구성 요소들을 포함한다. 마이크로커널은 실행을 위해 각 구성 요소에 의존하지 않기 때문에, 한두 개 구성 요소에 오류가 발생해도 운영체제 전체가 마비되지 않는다. 따라서 견고한 편이라고 할 수 있다.

c. 확장성(새로운 기술에 잘 적응, 운영체제를 원래 설계보다 확장해서 더 큰 역량 발휘) : 모놀리식 아키텍처는 상대적으로 모듈화 되어있지 않아서 확장성 면에서 떨어진다. 계층적 아키텍처의 모듈화는 운영체제에 구조와 일관성을 부여한다. 또한 소프트웨어 검증과 디버깅 및 수정 과정을 간편하게 해준다. 마이크로커널은 모듈화 정도가 높아서 확장성이 높다.

d. 보안 : 모놀리식 아키텍처는 운영체제의 모든 구성 요소를 커널에 포함하며, 단순히 기능 호출만으로도 다른 구성 요소와 직접 통신할 수 있다. 이런 유형의 커널은 컴퓨터 시스템에 제한 없이 접근해 실행할 수 있으므로 보안에 약하다. 계층적 아키텍처는 모든 계층이 시스템에 제한 없이 접근할 수 있기 때문에, 계층적 커널은 오류나 악성 코드에 민감하게 영향받을 수 있다. 마이크로커널은 낮은 수준의 권한을 통해 커널 외부에서 실행하므로 보안이 좋지만은 않다.


[교수님 답]

모놀리식 구조의 장점은 효율적이라는 것이다. 모든 운영체제 구성요소가 커널에 포함되어 있기 때문에 견고하고 확장적이고 보안성 있는 모놀리식 운영체제를 개발하는 것은 도전적일 수 있다.

계층적 구조는 운영체제가 보다 모듈화되어 있기 때문에 모놀리식 구조보다 더 확장적이고 디버깅이 쉽고 보다 견고하다. 그러나 계층적 구조는 효율성을 감소시킨다.

마이크로커널 운영체제는 많은 운영체제 컴포넌트들이 서로 독립적으로 수행되기 때문에 매우 확장적이다. 이러한 증가된 모듈화는 마이크로커널 구조의 견고성과 보안성을 증가시킬 수 있다. 그러나 이러한 고수준의 모듈화는 프로세스간 통신(interprocess communication) 오버헤드에 기인하여 다른 운영체제 구조보다는 효율성이 떨어진다.




반응형

+ Recent posts