티스토리 뷰

SoftWare/OS

OS - 1. Introduction 연습문제

White Whale 2016. 7. 5. 16:50
728x90


1.1 다중프로그래밍과 시분할 환경에서, 다수의 사용자가 동시에 시스템을 공유한다. 이러한 상황은 여러 가지 보안 문제를 일으킬 수 있다

a. 그러한 문제점 두 가지는 무엇인가?

 1. 시스템 자원을 제어하기가 힘들다.

 2. 다른 사람이 내 데이터를 무단으로 접근, 변경할 수 있다.

b. 우리가 전용 컴퓨터에서 갖는 동일한 수준의 보안을 시분할 시스템에서도 보장할 수 있는가? 당신의 대답을 설명하시오.

 보장할 수 없다고 본다. 사람이 만든 보안시스템이라서 결함요소가 존재할 수 밖에 없다.


1.2 자원 활용의 문제는 운영체제의 유형별로 다른 모습으로 나타난다. 다음과 같은 환경에서는 어떤 자원들이 신중하게 관리되어야 하는지 나열하시오.

a. 메인 프레임 또는 미니컴퓨터 시스템 : 메인 프레임과 미니컴퓨터 시스템의 가장 큰 특징은 다소 성능을 포기하더라도 크기를 작게 만들고 휴대성을 높이는 것이다. 이러한 이유로 메인 프레임과 미니컴퓨터 시스템은 일반적인 컴퓨팅 시스템보다 CPU, 메모리, 저장 공간 등의 모든 자원이 더욱 신중하게 관리되어야 한다. 즉, 메인 프레임 또는 미니컴퓨터 시스템에 탑재되는 운영체제는 다른 시스템의 운영체제보다 모든 자원들에 대해 더욱 신중한 자원 관리를 필요로 한다.


b. 서버에 연결된 워크스테이션 : 서버 시스템에서 가장 중요한 자원은 CPU이다. 클라이언트에게 일정 시간 이내에 응답을 해야 한다는 점, 모든 클라이언트에게 동일한 자원을 사용할 수 있도록 해야 한다는 점은 모두 CPU 자원 관리와 연관된 문제이다.

또한, CPU의 성능이 중요한 서버 시스템에서는 보통 8코어, 16코어 등 많은 수의 CPU를 사용한다. 많은 수의 CPU를 관리하기 위해서 서버 시스템은 일반 PC 시스템보다 멀티 프로세싱 및 멀티 스레딩이 최적화된 옵션의 운영체제를 설치하기도 한다. 따라서, 서버에 연결된 워크스테이션에서는 개별 CPU에 대한 자원 관리와 각각의 CPU를 제어하기 위한 컨트롤 구조의 관리가 가장 중요하다.


c. 휴대용 컴퓨터 : 운영체제가 관리하는 영역을 다소 벗어난 감이 있지만, 휴대용 컴퓨터의 가장 중요한 자원은 전력 소모량이다. 휴대용 컴퓨터 시스템은 상대적으로 전력 소모량을 적게 소모하는 RISC (Reduced Instruction Sec Computer) 구조의 CPU를 이용한다. 또한 휴대용 컴퓨터는 시스템에 대용량 메모리를 구성하기 힘들기 때문에 메모리에 대한 자원 관리 또한 중요한 요소이다. 결국 휴대용 컴퓨터에서 가장 신중하게 관리되어야 하는 자원은 가장 전력 소모가 많은 CPU 및 입출력 자원과 메모리이다.


1.3 > 어떠한 상황에서 개인용 컴퓨터 또는 단일 사용자 워크스테이션을 사용하는 것보다 시분할 시스템을 사용하는 것이 더 좋은가?


-  주로 시분할 시스템은 많은 사람들에게 컴퓨터를 공유함으로서 빠른 시간 안에 사용자 전환이 가능하고 동작이나 명령이 짧은 예약시스템과 같은 상황에서 사용하는 것이 더 좋습니다.


1.4 대칭적 다중 처리와 비대칭 적 다중 처리의 차이점을 설명하시오. 다중 처리기 시스템의 세 가지 장점과 한 가지 단점은 무엇인가?


- 대칭적 다중 처리 방식의 다수의 CPU가 동급으로 연결되어 있고 비대칭적 다중 처리방식은 마스터 슬레이브 관계로 피 계층 CPU들과 그것들을 관리하는 CPU로 구성되어 있다. 비대칭적 다중 처리방식은 피 계층의 CPU들을 관리하는 CPU가 멈추면 프로그램이 멈추기 때문에 안전성이 떨어지는 반면 설계하기 쉽다. 대칭적 다중 처리 방식은 하나의 CPU가 멈춰도 다른 CPU가 멈춘 CPU의 일을 대신 할 수 있어서 안전성이 높지만 매번 다른 CPU의 동작 유무를 확인해야하기 때문에 오버헤드가 크다.


- 다중 처리기 시스템의 장점
    ➀처리기의 수가 늘어난 만큼 처리량도 증가(Increased of Throughput)

    ➁주변장치, 대용량 저장장치, 전원 공급 장치 공유(Economy of scale)

    ➂하나의 처리기가 동작을 멈춰도 다른 처리기가 그 일을 할 수 있음(Increased of Reliability)


- 다중 처리기 시스템의 단점

    단일 처리기 방식보다 OS가 처리해야 하는 것이 많고 OS 및 프로그램을 개발하기가 어렵다.


1.5 클러스터형 시스템과 다중 처리기 시스템의 차이점은 무엇인가? 고가용 서비스를 제공하기 위하여 한 클러스터에 속한 두 컴퓨터가 협력하는 데 필요한 것은 무엇인가?

 - 클러스터형 시스템은 여러 컴퓨터들을 단일 시스템으로 구성하여 작업을 클러스터에 분산하여 처리하고 다중처리기 시스템은 여러cpu들의 집합이고 공유메모리를 통해 통신한다.

- 두 컴퓨터가 서로를 감시해야한다.(한 프로세서가 실패하면 다른 프로세서가 실패한 프로세서를 대신할수 있어야 한다.)


1.6 하나의 데이터베이스를 수행하는 두 개의 노드로 구성된 컴퓨팅 클러스터를 고려해보자. 클러스터 소프트웨어가 디스크의 데이터에 대한 접근을 관리하는 두 가지 방법을 설명해 보시오. 각각의 장점과 단점을 논의하시오.


1) 접근 제어 : 접근 제어는 모든 기계에서 공유하는 소프트웨어 계층에서 하나의 기계만 데이터베이스에 접근하는 것을 허용하도록 데이터베이스를 관리하는 기법이다. 공유하는 소프트웨어 계층에서 모든 접근을 관리해야하고, 각 기계는 승인이 날 때까지 대기해야하기 때문에 자원 소모 및 성능 하락 등의 문제가 있지만 데이터베이스가 안정적인 것이 장점이다.


2) 잠금 기법 : 잠금 기법은 기계가 데이터베이스에 접근할 때, 데이터베이스가 사용 중이라는 것을 기계가 직접 명시하는 기법이다. 각 기계가 직접 데이터베이스에 대한 독점적인 접근을 관리하기 때문에 따로 관리 소프트웨어를 실행할 필요가 없다. 따라서 데이터베이스 성능이 접근 제어 방식보다 높고, 데이터베이스 시스템에서 따로 자원을 소모할 필요가 없다. 그러나 각 기계가 잘못된 실행으로 인해 데이터베이스에 대한 잠금을 하지 않으면, 데이터베이스 시스템의 안정성은 크게 하락하게 되는 단점이 있다.


1.7 > 네트워크 컴퓨터가 전통적 개인용 컴퓨터와 어떻게 다른가? 네트워크 컴퓨터를 사용하는 것이 유리한 사용 시나리오를 설명하시오.


- 전통적 개인용 컴퓨터는 네트워크 컴퓨터보다 원격 접근이나 이동성이 현저하게 낮습니다. 하지만 전통적 개인용 컴퓨터는 네트워크 컴퓨터보다 높은 보안이나 보수하는 것이 쉽습니다.


네트워크 컴퓨터를 이용하면 웹 기반으로 통해서 다양한 클라이언트들이  웹으로 통해서 원격 접근이 가능하고 어디서든 이용 가능한 이용성이 높다는 특징이 있습니다. 이를 이용해서 원거리의 회사 간의 메신저로 메시지를 주고받거나 회사 직원들이 회사 내부서버의 자료를 웹으로 쉽고 간단하게 이용하는데 네트워크 컴퓨터를 사용하는 것이 유리합니다.


1.8 인터럽트의 목적은 무엇인가? 트랩과 인터럽트의 차이점은 무엇인가? 트랩은 사용자 프로그램에 의해 의도적으로 발생할 수 있는가? 만일 그렇다면 그 목적은 무엇인가?


- 인터럽트는 I/O가 CPU에게 자기 자신의 상태를 알리기 위해 존재한다. CPU와 I/O는 각각의 프로세스로 동작하기 때문에 CPU는 I/O에 대한 상태를 알지 못한다. 예로 들어 I/O는 할당 받은 일을 끝냈을 때 이와 같은 상태를 CPU에게 알려야하고 알리는 방식으로 인터럽트를 사용한다. 


- 인터럽트는 외부(I/O)에서부터 신호를 받는다고 하면 트랩은 내부에서 신호를 받는다. CPU내부에서 명령어를 수행 중 해당 주소에 명령어가 없거나 명령어 자체가 잘못되었을 때 트랩이 발생한다.


- 발생할 수 있다. 대표적으로 코드의 오류를 찾기 위한 디버깅용으로 사용된다.


1.9 CPU의 실행 부하가 증가하는 것을 피하기 위하여 직접 메모리 액세스 방식이 고속입출력 장치에 사용된다.

 a. 전송을 조율하기 위하여 CPU는 어떻게 장치와 인터페이스 하는가?

  -cpu가  특별한 레지스터를 사용하여 DMA를 조작한다. 그 장치는 cpu에서 명령을 받아     서 수행한다

 b. CPU는 메모리 연산이 종료되었음을 어떻게 알 수 있는가?

  - 수행이 끝나면 cpu에게 종료를 알리는 인터럽트를 보낸다.

 c. DMA가 데이터를 전송하는 동안 CPU는 다른 프로그램을 실행할 수 있다. 이 프로세스는 사용자 프로그램의 실행을 방해하는가? 만일 그렇다면, 어떤 형태의 방해가 발생하는지 설명하시오

  - DMA 장치와 CPU가 동시에 메모리에 접근하므로 최고속도가 나오지 않는다.


1.10 일부 컴퓨터 시스템은 모드 연산을 하드웨어로 제공하지 않는다. 이러한 컴퓨터에 안전한 운영체제를 구축할 수 있는지를 고려해 보자, 그것의 가능, 불가능 모두에 대한 논거를 제시하시오.


모드 연산을 소프트웨어적으로 제공한다는 것은 운영체제에서 소프트웨어적으로 모드 연산을 수행할 수 있다는 것과 같다. 운영체제의 본질은 결국 하드웨어에서 동작하는 소프트웨어이기 때문에 사용자 프로세스가 모드 연산에 접근하는 것을 방지하지 않는 운영체제를 사용자가 직접 시스템에 설치하여 구동하면 해당 컴퓨터 시스템은 얼마든지 사용자 프로세스에 의해 모드 연산이 수행될 수 있다.

만약 컴퓨터 시스템에 특정 운영체제만 설치할 수 있다면, 사용자 프로세스가 모드 연산에 접근하는 것을 방지하는 운영체제만 설치할 수 있도록 설정하면 된다. 그러나 이것은 운영체제에서 구현할 수 있는 기능이 아니라, 하드웨어적으로나 바이오스에서만 구현이 가능하다. 따라서 모드 연산을 소프트웨어적으로 제공하는 컴퓨터 시스템은 안전하지 않다.


1.11 > 많은 SMP 시스템은 다른 수준의 캐시를 갖는다. 한 수준은 각 처리 코어에 로컬하고 다른 수준은 모든 처리 코어가 공유한다. 왜 캐싱 시스템을 이렇게 설계했는가?


- 어떠한 A의 데이터 값이 모든 코어에 동시에 접근하게 되면 한 캐시에 A의 값이 변경될 경우 A가 있는 모든 코어의 캐시에 반영되어야 하기 때문에 캐시의 일관성의 문제에 어긋나게 됩니다. 결국 캐시의 일관성을 지키기 위해 메모리에 있는 A이 변경되고 이에 따라 다른 CPU 역시 변경됩니다. 이때 메모리의 접근 시간이 오래 걸리기 때문에 CPU들이 공유하는 중간 캐시를 두어 캐시의 값을 변경하고 해당 변경에 대한 각 cpu내부의 캐시들이 반영하는 식으로 속도를 줄일 수 있습니다.


1.12 그림1.6에 보인 것과 비슷한 SMP 시스템을 고려해 보자. 메모리에 저장된 데이터가 각 로컬 캐시에서 다른 값을 가질 수 있는 지를 예를 들어 그림으로 보여라



 - 위 그림의 대칭적 다중처리 방식을 볼 때 CPU들이 각각 다른 프로그램이 실행되고 있다고 한다면 CPU내  캐시메모리는 메인 메모리에 Load되어 있는 각각의 해당 프로그램의 자주 사용하는 데이터들이 들어 있다.

  

1.13 아래와 같은 처리 환경에서 어느 경우 캐시 데이터의 일관성 문제가 발생하는지 예를 들어 설명하시오.

a. 단일 처리기 시스템

  -어떤 시간에 하나의 프로세스만 실행하는 환경은 문제가 없다. 멀티태스킹 환경에서는 여러 프로세스가 어떤 값에 접근하기를 원할 때 프로세스들이 가장 최근에 갱신된 값을 얻는 거것을 보장해줘야 문제가 일어나지 않는다.

b. 다중 처리기 시스템

  -다른 프로세서에서 접근 할 수 있으므로 복사본 중 하나의 값이 갱신 될 경우 , 그 복사본이 존재하는 모든 캐시에 즉각 반영되어야한다.

c. 분산 시스템

  - 동일한 파일의 여러 개의 복사본이 병렬로 접근되고 갱신될 수 있으므로 , 한 곳에서 갱신될 경우 가능한 빨리 모든 복사본이 갱신될 것을 보장해야한다.


1.14 한 프로그램이 다른 프로그램이 사용하는 메모리르 변경하는 것을 막기 위하여 사용되는 메모리 보호 기법을 설명하시오.


대표적인 메모리 보호 기법은 아래와 같다.

1) 세그먼트 방식 : 컴퓨터 메모리를 여러 개의 크기가 다른 작은 세그먼트 (조각)로 분할하여 각각의 프로세스에게 세그먼트를 할당하고, 다른 세그먼트에 대한 접근을 제한하는 방식으로 메모리를 보호하는 기법이다. 이 때, 메모리 상한 레지스터와 메모리 하한 레지스터를 이용하여 프로세스가 접근할 수 있는 메모리 주소를 제한한다.


2) 페이징 : 페이징 기법은 가상 메모리를 물리 메모리에 매핑하여 메모리 공간을 사용하는 기법을 말한다. 일반적으로 프로세스는 페이지 테이블에 접근할 수 없기 때문에, 프로세스는 자신에게 할당된 페이지만 사용할 수 있다. 이러한 특성은 프로세스가 자신에게 할당된 페이지에만 접근할 수 있도록 하기 때문에 메모리 보호 기능을 수행할 수 있도록 한다. 페이징을 이용한 메모리 보호 기법은 x86 아키텍처와 같은 페이지 기반의 많은 컴퓨터 아키텍쳐에서 채택하고 있는 방법이다.


3) 보호키 : 물리 메모리를 특정 크기를 분할하여 각각 보호키를 할당한다. 시스템 하드웨어는 각 프로세스에 할당된 보호키에 대한 정보를 갖고 있다. 프로세스의 메모리 접근 시, 시스템 하드웨어는 프로세스가 접근하려는 메모리의 보호키와 프로세스가 갖고 있는 보호키를 비교하여 만약 보호키가 다르면 메모리 접근을 거부한다.


1.15 >  LAN과 WAN 중에서 아래의 환경에 가장 적합한 네트워크 구성은 무엇인가?


a. 대학 캠퍼스의 학생회관

        - 근거리 통신에 이용되는 LAN이 적합합니다.


b. 전체 주에 퍼져있는 다수의 대학의 캠퍼스

        - 대학 캠퍼스 사이의 거리가 멀기 때문에 LAN보다는 WAN을 이용하는 것이 적합    합니다.


c. 하나의 동네(예로 하나의 동 단위)

        - 하나의 동단위인 동네에서는 근거리 통신인 LAN이 적합합니다.


1.16 휴대용 장치의 운영체제를 설계할 때의 고려 사항을 전통적 PC의 운영체제 설계와 비교하여 설명해 보시오.

 - 휴대용 장치는 일반적인 전통적 PC와 다르게 전원 공급이 한정적이다. 그렇기 때문에 휴대용 장치의 운영체제는 한정적인 자원인 에너지를 얼마나 효율적으로 사용할 것인지 고려해서 설계되어야한다.


1.17 클라이언트 서버 시스템에 비해 피어 간 시스템의 장점은 무엇인가?

각 피어가 서비스를 요청/제공 하느냐에 의해 서버와 클라이언트로 동작한다.

클라이언트 서버 시스템은 서버가 제공하는 것만 받을 수 있지만 피어 간 시스템은 각자 필요한 것을 요청, 제공 할 수 있다.


1.18 피어간 시스템에 적합한 분산 응용을 다수 설명해 보시오.

먼저, P2P (Peer-to-Peer)방식의 장점으로는 클라이언트가 서버 역할을 할 수 있기 때문에 네트워크에 속한 클라이언트들이 자유롭게 애플리케이션과 파일 등을 공유할 수 있다는 것이 있다. 또한, P2P 네트워크는 무한대의 동시접속자 수용량을 갖으며, 수신을 원하는 수신자에게만 데이터를 전송하여 네트워크의 자원 낭비를 최소화한다.


1) 누텔라 (Gnutella) : 중앙 집중식 서버를 두지 않고, P2P 파일 공유 네트워크를 구성하기 위한 분산 소프트웨어 프로젝트이다.


2) 비트코인 : 특정 개인이나 기업이 운영하는 전자 화폐가 아니라, P2P 방식으로 여러 이용자의 컴퓨터에 분산되어 있는 가상 화폐이다. P2P 방식의 네트워킹 방식을 이용하여 은행같은 중간 단계를 거치지 않고 개인과 개인이 직접 거래할 수 있다. 또한, 화폐는 각각의 peer에서 특정한 알고리즘에 의해 생성된다.


3) 아발란셰 (Avalanche) : 파일을 각각의 peer에 특정 크기의 블록만큼 할당하여 네트워크상에서 파일을 공유하는 시스템이다. network codeing이라는 네트워킹 기술을 이용하여 파일 공유의 효율성을 향상시킨 것이 가장 큰 특징이다.


4) 프라우드넷 : 대한민국의 넷텐션에서 개발한 온라인 게임용 네트워크 서버 엔진이다. 소규모 및 대규모 다중 사용자 온라인 게임을 위한 서버 및 네트워크 엔진이다. 분산 서버 기능을 제공하여 서버의 편의성보다는 성능, 안전성, 유연성에 초점을 맞추어 개발되었다. 현재 출시된 많은 모바일 게임에서 이용하고 있는 서버 소프트웨어이다.


5) 프리넷 (Freenet) : 전자 우편, 정보 서비스, 대화식 통신, 그리고 회의가 가능한 공공 BBS (Bulletin Board System)이다.


1.19 > 오픈소스 운영체제의 여러 장점과 여러 단점을 열거하시오. 각 측면을 장점 또는 단점이라고 생각할 수 있는 사람들의 유형도 포함시키시오.


- 오픈 소스 운영체제 의 장점은 무료로 다운로드가 가능하고 수정이 요긴하기 때문에 개발비용이 매우 낮아지게 됩니다. 그리고 오픈소스는 여러 개발자들로 인해서 수정되고 개발되었기 때문에 코드의 안정성이 높아지게 됩니다. 그리고 오픈소스 운영체제로 인해서 코드의 체계가 더 탄탄해지면서 기술의 개발 발전 속도 가 높아지게 됩니다.

오픈 소스 운영체제의 단점은 일반 컴퓨터 이용자들에게는 익숙하지 않다는 것입니다 그리고 영리 회사가 아니기 때문에 갑작스럽게 지원의 보장이 되지 않을 수도 있다는 것입니다.


- 오픈 소스 운영체제를 장점이라고 생각하는 사람들의 유형들은 오픈소스 운영체제를 이용해서 비용도 줄여주고 프로그래머들에게 디버깅에 쉽고 용이하고 코드를 더 탄탄하게 만들 수 있기 때문에 컴퓨터를 공부하는 학생들, 개인 개발자들 그리고 간단하게 구현하고자 할 때 오픈소스 운영체제를 이용하는 것이 장점이라고 생각할 것입니다.

오픈 소스 운영체제를 단점이라고 생각하는 사람은 오픈소스 운영체제 보단 돈을 주고 구입한 MS같은 운영체제가 더 쉽고 용이하기 때문에 일반적인 프로그래밍 개발자 보다는 GUI에 익숙한 일반 컴퓨터 이용자들에게는 오픈소스 운영체제가 단점으로 생각할 것입니다.




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

OS - 3. Process 연습문제  (4) 2016.07.05
OS - 2. Operating System Structures 연습문제  (1) 2016.07.05
OS - 12. Mass-Storage System  (2) 2016.06.11
OS - 11. File-System implementation  (0) 2016.06.10
OS - 10. File-System  (0) 2016.06.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함