일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- a tour of go
- C++ gui
- vim-go
- 자료구조
- tour of go
- C++ library
- Docker
- gui
- C언어
- JUCE
- c++ heap
- 알고리즘
- go
- OS
- JUCE 튜토리얼
- 공룡책
- JUCE library
- 운영체제
- C++
- 프로그래밍
- go channel
- 코딩
- 백준
- LOB
- BOJ
- C++ gui 라이브러리
- 리듬게임
- 연결리스트
- JUCE라이브러리
- Nebula
- Today
- Total
CafeM0ca
[OS]공룡책 Chapter1 연습문제 본문
Operating System Concepts 8판 -한국어
답은 모카의 주관적인 생각이다. 참고만 하고 오타, 문제가 있으면 댓글로 남겨주시길
1.1 네트워크 컴퓨터와 전형적인 개인용 컴퓨터의 차이는 무엇인가? 네트워크 컴퓨터를 사용하는 것이 유리한 사용 시나리오를 설명하시오.
- 결정적인 차이는 '효율'이다. 네트워크 컴퓨터는(Network Computer 이하 NC) 작은 메모리와 최소한의 연산이 가능한 CPU(성능이 떨어지는)를 가지고 있다. NC의 핵심은 모든 처리를 서버에 넘기는 점이다. 이 때, 서버 컴퓨터는 '어마어마한 성능을 가지고 있다'고 가정한다. 때문에 개인용 컴퓨터(Personal Computer 이하 PC)의 고성능 CPU를 사용하지 않아도 서버 컴퓨터를 통해 작업할 수 있어서 가격이 저렴하다. 그것도 한 명이 아니라 여러 명이 말이다.(PC 살 돈으로 NC 사고 남은 돈으로 서버 컴퓨터 사는 느낌)
이를 토대로 시나리오를 구성해본다면 어느 A회사와 B회사에서 200명(혹은 그 이상)이 컴퓨터를 사용한다고 하자.(사원은 동일) A회사는 NC를 사용하고 B회사는 PC를 사용한다. A회사의 CPU 사용 시간을 nt라 하고 B회사의 PC CPU 사용 시간을 pt라고 하자(전체 pt=nt) A회사는 200명의 사원들이 일부는 쉬는 동안에도 나머지 사원들이 서버 컴퓨터를 계속 사용할 것이다. 이는 nt값이 감소하지 않음을 뜻한다. 하지만 B회사는 PC를 사용하므로 A회사와 같이 일부가 쉬면 pt의 값이 감소한다. 이 감소 값을 pm이라 하자. (cpu가 놀고 있기 때문. 서버 컴퓨터는 쉬지않고 일하는 중) 결국 nt의 값은 유지 되지만 (전체)pt-=전체pm이므로 nt >= (전체)pt
1.2 아래 환경에 가장 적합한 네트워크 구성은 무엇인가?
a. 기숙사의 한층 b. 대학의 캠퍼스 c. 하나의 도(예, 경기도) d.한 국가
- a,b는 비교적 소규모니까 LAN을, c,d는 비교적 중,대규모니까 WAN
1.3 캐시가 유용한 두 가지 이유를 들어 보라. 캐시가 어떠한 문제점을 해결하는가? 캐시가 일으킬 수 있는 문제점은 무엇인가? 만약 캐시를 자기를 캐싱하는 장치만큼 크게 만들 수 있다면(예를 들면, 디스크만큼 큰 캐시), 왜 그렇게 만들어 그 장 치를 제거하지 않는가?
- 유용한 이유 1. RAM보다 캐시가 더 빠르다 2. 명령 캐시에 명령이 있어서 CPU가 바로 가져다 쓸 수 있다.
- CPU가 다음 명령을 인출할 동안 기다리는 시간을 줄일 수 있다.
- 멀티테스킹 환경에서는 캐시와 CPU가 여러개 일 수 있다. 예를 들어, a,b,c캐시와 A,B,C CPU가 쌍을 이룬다고 가정하자. A와 B CPU가 동일한 작업을 한다. 이 때 A로 하여금 a의 내용이 수정되었다. B의 내용은 A와 같으므로 b도 내용의 수정이 필요하다. 만약 같지 않다면 A,B는 같은 일을 진행하나 a,b가 다르므로 모순이 생긴다.(같은 내용이 각각의 캐시에 있으면 어느 한 캐시를 통해 변화가 생기면 나머지 캐시들도 변화가 생겨야함)
-캐시를 장치만큼 크게 만들면 돈이 많이 든다. CPU도 레지스터 많이 넣으면 좋다고 생각하지만 그만한 비용이 든다.
1.4 어떠한 상황에서 개인용 컴퓨터 또는 단일 사용자 워크스테이션을 사용하는 것보다 시분할 시스템을 사용하는 것이 더 좋은가?
- 복수의 사용자로부터 요청이 들어왔을 때
1.5 오직 하나의 프로그램만을 실행시킬 수 있는 컴퓨터를 의미하는 완전한 전용 기계에서 프로그램을 실행시키는 데 필요한 4단계의 작업을 나열하시오.
- 전력공급,부팅,입력 대기,이벤트 처리 -> 프로그램 실행
1.6 보호(보안)시스템의 기본적인 형태로서 커널 모드와 사용자 모드의 구분은 어떻게 동작하는가?
- 모드 비트의 값에 따라 0이면 커널 모드, 1이면 사용자 모드이며 사용자 모드에서 트랩,인터럽트 발생시 모드 비트를 0으로 전환하고 사용자가 프로그램으로 제어를 넘기기 전에 모드 비트를 1로 전환한다.
1.7 다중 프로그래밍과 시분할 환경에서, 다수의 사용자 동시에 시스템을 공유한다. 이러한 상황은 여러 가지 보안 문제를 일으킬 수 있다.
a. 그러한 문제점 두 가지는 무엇인가?
b. 우리가 전용 컴퓨터에서 갖는 동일한 수준의 보안을 시분할 시스템에서도 보장할 수 있는가?
-a 명의 사용자가 시스템에 영향을 주면, 나머지 사용자도 영향을 받는다. (내부 영향)
-a 여러 사용자중에 한명이라도 해킹 당하면 나머지 사용자도 피해를 입는다. (외부 영향)
-b 보장 할 수 없다. 전용 컴퓨터는 기능이 한정되어 있기 때문에 상호작용의 영향을 덜 받기 때문이다.
1.8 한 프로그램이 다른 프로그램이 사용하는 메모리를 변경하는 것을 막기 위하여 사용되는 메모리 보호 기법을 설명하시오.
-DEP(data excution prevention) 데이터 실행방지. 메모리 페이징을 실행 불가능 상태로 만든다. -> 페이징부터 공부하자.
1.9 휴대용 컴퓨터가 본질적으로 갖는 절충 사항들(tradeoffs)은 무엇인가?
- 적은 메모리와 적은 전력 소모를 위한 작고,느린 처리기 사용
1.10 분산 시스템의 클라이언트 서버 모델과 피어간 모델을 비교하라.
-클라이언트 서버 모델은 클라이언트와 서버의 역할이 명확하게 분리 되어 있다. 즉 서버는 클라이언트의 세부 기능이 필요없고. 클라이언트는 서버의 세부 기능이 필요없다. 게임에서의 전직을 생각해보면 이해하는데 무리가 없다. 이에 대조해 피어간 모델은 서버와 클라이언트의 구분이 불분명하다. 사용에따라 클라이언트가 서버가 될 수 있고 서버가 클라이언트가 될 수 있다.(대표적인 p2p 프로토콜인 토렌트를 생각해보아라.)
1.11 일부 컴퓨터 시스템은 특권 모드 연산을 하드웨어로 제공하지 않는다. 이러한 컴퓨터에 안전한 운영체제를 구축할 수 있는지를 고려해 보라. 그것의 가능, 불가능 모두에 대한 논거를 제시하시오.
-가능: 튼튼한 소프트웨어로 제어한다.
-불가능: 튼튼한 소프트웨어를 만들기가 어렵다. 운영체제와 상호작용하기 때문에 조금의 결점만으로 신뢰성이 무너진다.
1.12 메인프레임 컴퓨터 운영체제와 개인용 컴퓨터 운영체제의 주요 차이점은 무엇인가?
- 메인프레임 운영체제는 데이터 관리쪽 용도로 제작되었고 개인용 컴퓨터 운영체제는 범용으로 잡다한 기능을 포함한다.
1.13 다음 중 특권이 주어져야만 하는 명령어는 무엇인가?
a.타이머 값 지정 | b.클록 읽기 | c. 메모리 내용 지우기 | d. 트랩 명령어 발생 | e.인터럽트 끄기 | f.장치 상태 테이블 항목 변경 | g.사용자 모드에서 커널 모드로 전환 | h.입출력장치 접근
-a, c, e, g, h
b-소프트웨어로 읽을 수 있음 d-소프트웨어가 신호 보냄 f-소프트웨어로 처리
※클록(clock) 디지털 장치들을 on/off하는 신호
1.14 아래와 같은 처리 환경에서 어느 경우 캐시 데이터의 일관성 문제가 발생하는 지 예를 들어 설명하시오.
a.단일처리기 시스템 | b.다중처리기 시스템 | c.분산 시스템
-b.다중처리기 시스템에서 이중 코어 설계일 경우 한쪽 cpu의 캐시에서 내용이 바뀌면 다른쪽 cpu의 캐시와 데이터가 달라진다.
1.15 오픈소스 운영체제의 여러 장점과 여러 단점을 찾아내시오. 각 측면을 장점 또는 단점이라고 생각할 수 있는 사람들의 유형도 포함시키시오.
-장점: 다수의 사람들이 개입하기 때문에 여러 문제들을 빠르게 해결 할 수 있다. FSF(free software foundation)과 같은 부류.
단점: 오픈소스인 만큼 커널이라든가 중요한 부분의 소스가 그대로 들어나기 때문에 보안에 취약해 질 수 있다. 기밀,보안 혹은 이윤을 중요시하는 부류.
1.16 클러스터형 시스템과 다중처리기 시스템의 차이점은 무엇인가? 고가용 서비스를 제공하기 위하여 한 클리스터에 속한 두 컴퓨터가 협력하는데 필요한 것은 무엇인가?
-클러스터형은 독자적으로 분류되어있고 다중처리기는 분류되어있지 않다. 클러스터에 속한 두 컴퓨터가 협력하는데 필요한 것은 연결망이다. LAN이나 WAN.
1.17 실시간 환경을 위한 운영체제를 구현할 때 프로그래머가 극복해야 할 주요 난제는 무엇인가?
- 그때 그때의 처리가 중요한 실시간 시스템에서는 입력에 따른 올바른 결과를 내야한다. 즉 데이터 처리에 있어서 결점이 있으면 큰 오류로 이어지니 결점없이 프로그래밍 해야한다.
1.18 CPU의 실행 부하가 증가하는 것을 피하기 위하여 직접 메모리 액세스 방식이 고속 입출력장치에 사용된다.
a.전송을 조율하기 위하여 CPU는 어떻게 장치를 방해하는가?
- 장치 드라이버를 사용한다.
b.CPU는 메모리 연산이 종료되었음을 어떻게 알 수 있는가?
- 연산이 종료되었다는 인터럽트를 받는다.
c.DMA(direct memory access)가 데이터를 전송하는 동안 CPU는 다른 프로그램을 실행할 수 있다. 이 프로세스는 사용자 프로그램의 실행을 방해하는가? 만일 그렇다면, 어떤 형태의 방해가 발생하는 지 설명하시오.
-방해한다. CPU, 장치들은 버스를 이용하는데 DMA도 같은 버스를 이용하기 때문이다.
1.19 아래에 열거된 기능 중에서 다음 두 환경을 위한 운영체제에서 지원되어야 하는 기능을 쓰시오 (a) 휴대용 장치 (b) 실시간 시스템
a. 일괄 프로그래밍 | b. 가상 메모리 | c.시분할
-b( 휴대용 장치는 전형적인 PC와 크게 대비됨) a는 실시간 시스템과 거리가 멀다. 바로바로 처리해야 하는데 일괄로 묶어서 처리하다보면 묶이는 블럭 동안의 손실이 생기고 c는 혼자서 사용하니까 필요없다.
1.20 몇몇 CPU는 두 개 이상의 동작 모드를 제공한다. 이 다중 모드를 이용할 수 있는 두 가지 가능한 예는 무엇인가?
- 1.세분화된 보안 정책. ring 1~2에 관리자권한을, ring 3에 게스트권한을 준다. 특정 모드로 USB 장치 드라이버를 ring 0를 통하지 않고 사용할 수 있다.
※여기서 말하는 동작모드는 ring 0~3를 말한다. ring 0는 커널이고 ring 1~2는 장치 드라이버, ring 3는 응용프로그램이다. 보통 ring 1~2는 잘 안쓰인다. ring 3-> ring 0로 접근하는게 대부분.
1.21 아래 타입의 운영체제들의 중요한 성질을 정의하시오.
a. 일괄처리 | b. 대화형 | c.시분할 | d.실시간 | e.네트워크 | f.병렬 | g.분산 | h.클러스터형 | i.휴대용
- a. 작업을 묶어서 처리하며 작업이 끝날 때 까지 아무것도 못함
- b. 입력이 들어올 때까지 대기하다 처리
- c. 프로세스, 사용자에게 할당하는 시간을 잘게 쪼개 배분하여 동시에 작업
- d.신뢰성이 보장되야함. 엄격해야함
- e.컴퓨터와 컴퓨터 사이의 통신이 보장되야하며 각각의 역할이 분명해야함
- f. 여러개의 처리기로 작업하여 효율과 신뢰성이 높음
- g. 네트워크로 연결되어 있어야 하며 네트워크에 의존함
- h. 다중처리기 시스템과 유사하나 여러 대의 컴퓨터가 모여서 LAN이나 WAN을 통해 CPU들이 작업함. 한 컴퓨터가 고장나도 컴퓨터들을 공유하기 때문에 높은 가용도를 보임
- i. 일반 PC나 워크스테이션보다 작음. 언제 어디서든 사용할 수 있기 때문에 접근성이 높음. 그러나 크기가 작은만큼 메모리도 작기 때문에 가상 메모리 사용이 필요함
1.22 대칭적 다중처리와 비대칭적 다중처리기의 이점을 설명하시오. 다중처리기 시스템의 세 가지 장점과 한 가지 단점은 무엇인가?
- 대칭적 다중처리는 다같이 대등하게 일한다. 비대칭적 다중처리는 주 처리기가 시스템을 제어하면서 다른 처리기들이 주 처리기들의 명령을 실행한다.
-장점 1.처리량이 증가(여러개의 처리기가 있기때문) 2.비용 절감(주변 기기를 공유하기 때문. 하나 하나 독립적이면 비용도 독립적임) 3.신뢰성 증가(처리기 하나 고장나도 나머지 처리기가 일함)
-단점 1.처리기가 여러개 있기 때문에 제어 관리가 필요하다.(이미 처리했는데 또 처리한다던가..) 더불어 한쪽 CPU에 작업이 부하될 수 있다.(균등하게 작업을 분배해야됨)
1.23 자원 활용의 문제는 운영체제의 유형별로 다른 모습을 나타난다. 다음과 같은 환경에서는 어떤 자원들이 신중하게 관리되어야 하는지 나열하시오.
a. 메인프레임 또는 미니컴퓨터 시스템 | b. 서버에 연결된 워크스테이션 | c. 휴대용 컴퓨터
-a. 메모리,CPU,네트워크
-b. CPU,네트워크
-c. 소비전력,메모리
1.24 인터럽트의 목적은 무엇인가? 트랩과 인터럽트의 차이점은 무엇인가? 트랩은 사용자 프로그램에 의해 의도적으로 발생할 수 있는가? 만일 그렇다면 그 목적은 무엇인가?
- 인터럽트는 오류,예외를 처리하기 위함
- 트랩은 소프트웨어가 보내는 신호. 인터럽트는 하드웨어가 보내는 신호.
- 의도적으로 발생할 수 있다. 예외나 오류를 처리하기 위해서
1.25 그림 1.6(대칭적 다중처리 구조)에 보인 시스템과 유사한 SMP(symmetric multiprocessing) 시스템을 고려하자. 메모리에 존재하는 데이터에 대해 각 지역 캐시에 두 개의 다른 값이 존재하는 것이 어떻게 가능한가를 예를 들어 설명하시오.
-다중처리기 시스템에서는 여러개의 CPU가 있다. 따라서 작업도 여러개로 나누어 각각 진행하게 된다. 이는 CPU에 따라 자주 쓰일 내용이 있으면 각각의 지역캐시에 독립적으로 필요한 데이터가 들어간다. 따라서 각 지역 캐시에 두 개의 다른 값이 존재 할 수 있다.
1.26 하나의 데이터베이스를 실행하는 두 개의 노드로 구성된 컴퓨팅 클러스터를 고려해 보자. 클러스터 소프트웨어가 디스크의 데이터에 대한 접근을 관리하는 두 가지 방법을 설명해 보시오. 각각의 장단점을 논의하시오.
- 데이터에 대한 공유 접근을 제공하기 위하여 접근 제어와 잠금 기법을 제공해야 한다. 접근 제어는 허가된 자만 데이터에 접근할 수 있도록 하는 것이고 잠금 기법(DLM)은 데이터에 접근하기 위하여 key를 필요로 한다. 먼저 접근하는 쪽에게 key를 주고 데이터에 접근 후 볼일이 끝나면 key를 반납
-접근제어는 신뢰성이 보증되지만 경쟁상태에 빠질 가능성이 있다. 잠금 기법은 신뢰성이 보증되지 않지만 경쟁 상태에 대한 걱정이 없다. 데이터에 접근하기 위한 순위 다툼이 없기 때문
※두 가지 방법을 동시에 쓰면 서로의 단점을 보완할 수 있다.
주관식이라 틀린 부분도 있을터다.
(이 챕터를 2번째 읽었는데 이제야 머리에 어느정도 정리가 되었다.)
'OS > 공룡책' 카테고리의 다른 글
[OS] 공룡책 챕터4 연습문제 (0) | 2021.01.22 |
---|---|
[OS] 공룡책 Chapter4 스레드 (0) | 2021.01.21 |
[OS] 공룡책 Chapter 3 연습문제 풀이 10th edition (0) | 2021.01.14 |
[OS] 공룡책 Chapter3 정리 프로세스, PCB, 스케쥴링 큐, context switch, IPC, RPC, PIPE (0) | 2021.01.07 |
[공룡책]임계 구역 (0) | 2018.02.02 |