Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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 31
Archives
Today
Total
관리 메뉴

미래학자

[운영체제] Operating System Concepts 9th 연습문제 - 1 본문

전산 지식

[운영체제] Operating System Concepts 9th 연습문제 - 1

미래학자 2016. 12. 19. 16:28

공룡 책으로 유명한 Operating System Concepts 7th 연습문제 풀이 입니다. 개인적인 목적을 위해 작성했으며 작성한 해답에 오류가 있을 가능성이

다분히 있습니다. 댓글로 의견을 주시면 고치도록 하겠습니다.



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


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

-> 다른 프로세스의 자원에 접근할 수 있다. 다른 프로세스가 컴퓨터 자원을 사용 못하도록 독점할 수 있다.(웜 바이러스)


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

-> 동일한 수준으로 보장할 수 없다. 그 이유는 첫 째로 다수의 사용자가 하나의 컴퓨터 시스템에 물리적/가상적으로 연결되어 있기 때문에 연결되어 있는 점이다. 둘 째로 시스템의 효율을 위해서 운영체제는 다양한 기능을 제공한다. 예를 들면, 통신, 시스템 호출, 특권 명령 이다. 이러한 기능을 악의적으로 사용할 가능성이 있다.



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

  1. 메인 프레임 또는 미니컴퓨터 시스템(터미널) : 서버와 워크스테이션간 통신. 효율적인 통신을 위한 응답성을 최대로 고려(입/출력). 다수의 클라이언트의 요청에 대한 처리효율(CPU, 디스크, 메모리) 또 다른 사용자에게 영향을 미치지 않도록. 한 사용자가 자원을 독점하지 않게 해야함. 제한된 자원을 효율적으로 관리해야함
  2. 서버에 연결된 워크스테이션 : 사용자는 전용 자원을 가짐. 그러나 네트워킹, 계산 및 프린트 서버를 공유한다. 공유하는 자원은 신중히 관리해야 한다.
  3. 휴대용 컴퓨터 : 적재할 수 있는 메모리가 제한되기 때문에 메모리 효율이 좋아야 한다. 배터리 관리를 위해 느린 CPU를 사용한다. 
* 휴대용 컴퓨터에서 책에 언급된 입/출력 문제는 현재 시스템에 단점이라 보기 어렵다고 생각됨.

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

컴퓨터 자원이 충분히 다수의 사용자의 처리를 감당할 수 있을 때. 특정 시스템을 사용할 때. 사용자가 가끔 컴퓨터 자원을 필요할 때, 강력한 컴퓨팅을 사용할 때. 컴퓨터 공간이 없을때, 여러 컴퓨터를 살 돈이 없을때.


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


대칭적 다중 처리기는 처리기 모두 동등한 권한으로 서로를 감시 및 각자 연산을 처리. 비대칭적 다중 처리기는 하나의 주 처리기가 되어 다른 처리기들을 감시.

장점 : 다중 처리기 시스템은 더 많은 처리를 할 수 있다. 정확도를 높일 수 있다. 일부 처리기가 고장나도 시스템이 멈추지 않는다.

단점 : 여러 처리기에 캐시의 일관성을 보장하기 위한 처리가 필요. 다른 시스템 감시하기 때문에 오버헤드가 있다. (N개의 처리기를 추가해도 N배 만큼 효율이 나올수 없다.)



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


다중 처리기는 단순 CPU가 여러개이며 여러 자원을 공유(버스, 메모리, 주변 장치)

클러스터형은 독자적인 시스템이 연결되어 하나의 목적을 수행하는 것, 저장 장치를 공유. 소프트웨어 계층에서 클러스터 노드들을 감시하여 고장이 발생하면 다른 노드가 고장난 노드의 작업을 인수인계 받아서 처리



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

  • 접근 제어 : 공유하는 소프트웨어 계층에서 하나의 기계만 접근하도록 관리. 시스템간 충돌이 발생하지 않음. 각 기계는 접근을 하기 위해 대기해야 함. 안전함
  • 잠금 기법 : 각 기계에서 데이터 베이스 사용권을 제어. 별도의 소프트웨어 없기 때문에 성능에 좋으나, 각 기계에서 제대로된 Locking을 안하면 안전성에 문제가 있음



1.7 네트워크 컴퓨터와 전통적인 개인용 컴퓨터의 차이는 무엇인가? 네트워크 컴퓨터를 사용하는 것이 유리한 사용 시나리오를 설명하라.


개인용 컴퓨터는 사용자의 요청을 자체 CPU의 처리 능력으로 해결한다. 네트워크 컴퓨터는 네트워크로 연결된 강력한 성능의 CPU를 이용할 수 있기 때문에, 복잡한 요청에 대해서 빠르게 처리할 수 있는 장점이 있다. (모든 요청에 대해 비슷한 속도로 응답받을 수 있다)

네트워크 연결이 잘된 환경에서 사용하는 것이 유리 하다. 또 웹 기반을 사용하면 인터페이스도 편리하게 이용할 수 있는 장점이 있다.



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


운영체제는 다양한 기능을 보장하고 전체를 관리한다. 거의 모든 작업은 CPU가 관여를 하게 되는데, 입/출력에서 작업이 끝났을 때, 또는 각 단계에서 적절한 제어가 필요할 때 인터럽트를 발생시켜 CPU가 처리를 할 수 있도록 한다. 인터럽트에는 레벨 또는 우선순위가 있기 때문에 중요한 처리를 우선적으로 처리할 수 있다.

트랩은 사용자 프로그램에서 발생된 인터럽트의 유형이다. (0으로 나누기 또는 잘못된 메모리 접근)

의도적으로 발생할 수 있다. 시스템 호출을 통해 커널모드로 특정 기능을 수행하도록 요청하기 위함.



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


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

->  장치드라이버가 CPU와 장치간 인터페이스로 사용된다. 장치 드라이버는 장치 제어기의 적절한 레지스터에 필요한 값을 적재한다. 장치의 자료(키보드 입력과 같은)를 장치 제어기의 버퍼로 전송한다. 장치 제어기는 장치 드라이버로 인터럽트를 보내고, 장치드라이버는 제어를 운영체제에 반환한다.


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

-> 블록 단위로 데이터를 전송하고 입/출력 장치 제어기에서 인터럽트 발생


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

-> CPU, 장치들은 공통의 버스를 사용한다. 버스는 전송가능한 대역폭이 있는데, 다른 프로그램이 필요한 메모리의 연산을 하는데 DMA가 같은 버스를 사용하기 때문에 속도가 느려질 수 밖에 없다.



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

불가능 : 사용자 프로그램에서 치명적인 작업을 할 경우 소프트웨어적으로 특권 모드를 제공한다 해도 허점을 이용할 수 있다.
가능 : 특권 모드를 소프트웨어적으로 제공한다. 예를 들면 특권 모드를 API를 통하여 특권 모드 연산을 할 수 있도록 제공한다.


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

캐시의 일관성문제 때문이다. 각 CPU는 로컬 캐시를 이용하여 빠르게 연산을 한다. 한 처리기에서 캐시값을 참조할 때 여러 로컬 캐시에 해당 값이 있고, 심지어 각각의 값이 다를 수 있다. 이러한 문제를 해결하기 위해 공유되는 캐시에 최신값을 갱신하여 이 문제를 해결한다.


1.12 X

 
1.13 다음과 같은 처리 환경에서 어느 경우 캐시 자료의 일관성 문제가 발생하는지 예를 들어 설명하라.


a. 단일 처리기 시스템

-> q발생하지 않음

b. 다중 처리기 시스템 

-> 발생 가능성 있음

c. 분산 시스템 

-> 발생 가능성 큼



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


운영체제는 프로그램이 사용할 수 있는 메모리 공간을 정해준다. 그 이상의 접근을 하게 되면 운영체제에서는 잘못된 메모리 접근으로 판단하여 트랩을 발생시킨다. 트랩을 통해 서비스 루틴이 호출되고 해당 프로그램은 비정상적으로 종료되며 메모리는 덤프되어 사용자가 나중에 어떤 문제로 프로그램이 종료되었는지 확인할 수 있다.


1.15 아래의 환경에 가장 적합한 네트워크 구성은 무엇인가?
  1. 기숙사의 한층  LAN
  2. 하나의 도( 예 : 경기도) MAN
  3. 대학의 캠퍼스 LAN
  4. 한 국가 WAN

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


휴대용 장치는 배터리로 전원 공급이 된다. 저전력 시스템을 고려해야 한다. (전원 관리, 불필요한 프로세스 중지) 또 적재할 수 있는 메모리가 작기 때문에 메모리를 효율적으로 사용해야 한다. 또 작은 화면을 통해 사용자가 조작해야 하기 때문에 편리한 방식의 인터페이스를 제공해야 한다.



1.7 클라이언트 서버 모델과 피어간 모델을 비교하라.


클라이언트 서버 모델은 두 호스트의 역할이 분명하다. 클라이언트는 서비스를 요청, 서버는 서비스를 제공한다. 피어간 모델은 서로가 클라이언트이며 동시에 서버의 역할을 한다. 명확히 구분하지 않음



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에 익숙한 일반 컴퓨터 이용자들에게는 오픈소스 운영체제가 단점으로 생각할 것입니다.


---------------- 7 th Edition 에 있던 문제

Q1 캐시가 유용한 두 가지 이유를 들어보라. 그들이 어떠한 문제점을 해결하는가? 그들이 일으킬 수 있는 문제점은 무엇인가? 만약 캐시가 자기가 캐싱하는 장치만큼 크게 만들 수 있다면 왜 그렇게 만들어 그 장치를 제거하지 않는가?

->캐시가 유용한 두 가지 이유는 시간적 지역성, 공간적 지역성 때문이다. CPU에서 필요한 데이터를 캐시를 이용하여 80%가량 가져올 수 있고 이렇게 되면 속도가 훨씬 빠르다. 그러나 캐시 공간의 크기가 너무 작거나 비정상적으로 새로운 데이터를 참조해야 한다면, 오히려 캐시에 데이터 교환이 빈번하게 이뤄져 오히려 오버헤드 때문에 느려질 수 있다. 비용의 문제다. 빠른 저장 장치는 그 만큼 비싸다.


Q2 아래 유형의 운영체제들의 중요한 성질을 정의하라.


  1. 일괄처리 : 다양한 요구를 효율적 처리
  2. 대화형 : 인터페이스
  3. 시분할 : 다수의 사용자를 위한 병행처리
  4. 실시간 : 응답성을 최대화
  5. 네트워크 : 여러 시스템간 통신
  6. 병렬 : 다수 처리기를 이용한 동시 처리
  7. 분산 : 
  8. 클러스터형 : 독자적 시스템의 연결
  9. 휴대용 : 크기


Comments