본문 바로가기

컴퓨터와 보안/OS(운영체제)

william stallings OS(운영체제) Chapter 5 문제풀이

5.1 병행성 개념과 관련된 4가지 설계 이슈를 기술하시오.

  1. 상호배제: 특정 프로세스가 공유 자원을 사용 중일 때 다른 프로세스가 이 자원에 접근하지 못하도록 막는 것.
  2. 동기화: 프로세스 또는 스레드들이 shared data를 접근하는 경우에 수행되는 시점을 조절하는 것.
  3. 데드락: 여러개의 프로세스가 더 이상 진행될 수 없는 자원의 할당, 해제 과정을 기다리고 있는 상태
  4. 기아: 병행 프로세스에서 프로세스가 실행되는데에 필수적인 자원을 끊임없이 사용하지 못하는 상태.

 

5.2 병행성이 발생하는 3가지 문맥은 무엇인가?

  1. 다수의 응용프로그램 : 멀티프로그래밍은 처리 시간을 동적으로 공유하기 위해 실행되는 응용 프로그램의 동시성이 필요하다.
  2. 구조화된 응용프로그램: 동시성(concurrency)은 구조화된 응용프로그램을 concurrent processes의 집합으로 돌아가게끔 한다.
  3. 운영체제 구조: 다른 응용프로그램처럼, 동시성(concurrency)을 사용하면 여러 스레드를 동시에 실행할 수 있도록 시스템 프로그램을 실행할 수 있습니다.

 

5.3 경쟁상태(race condition)란 무엇인가?

다수의 프로세스나 쓰레드가 공유 자원을 동시에 읽거나 쓰려고 하는 상태를 말한다.

 

5.4 프로세스 간 인식 정도를 3가지로 구분하고, 각각을 정의하시오.

  1. 서로를 인지 못함 – 경쟁관계
  2. 서로를 간접적으로 인식 – 공유를 통한 협력
  3. 서로를 직접적으로 인식 – 통신을 통한 협력

 

5.5 경쟁하는 프로세스와 협동하는 프로세스의 차이는 무엇인가?

경쟁하는 프로세스들에선, 한 프로세스의 수행 결과가 다른 프로세스들의 행위와 독립된다.

예를들어, 두개의 프로세스가 모두 단일 자원에 접근을 희망한다면, 한 프로세스는 운영체제에 의해 자원을 할당받고 다른 프로세는 기다려야 할 것이다.

하지만 협동하는 프로세스는 한 프로세스의 수행 결과가 다른 프로세스의 행위에 의해 영향을 받을 수 있다.

 

5.6 경쟁하는 프로세스들과 연관된 3가지 제어 문제를 나열하고, 각각을 정의하시오.

 Mutual exclusion(상호 배제), dead lock(교착 상태), starvation(기아) 가 있다.

  • 상호 배제는 특정 프로세스가 공유 자원을 사용 중일 때 다른 프로세스가 이 자원에 접근하지 못하도록 막는 것이다.
  • 교착 상태는 여러개의 프로세스가 더 이상 진행될 수 없는 자원의 할당, 해제 과정을 기다리고 있는 상태이다.
  • 기아는 교착 상태는 아니지만 병행 프로세스에서 프로세스가 실행되는데에 필수적인 자원을 끊임없이 사용하지 못하는 상태.

 

5.7 상호 배제를 통한 병행성 제어 측면에서 기아란 무엇인가?

프로세스가 임계영역에서 빠져나왔을 때 대기하고 있던 프로세스가 여러 개라면, 그 중 하나의 프로세스만이 다시 임계영역에 진입할 수 있다.

이때 프로세스들의 특성이나 기다린 대기시간 등을 고려하지 않으므로 기아(starvation)이 발생할 수 있다.

 

5.8 세마포어에서 수행되는 연산에는 어떤 것이 있는가?

세마포어 초기화: 세마포어는 음이 아닌 값으로 초기화된다.

semWait 연산: 세마포어 값을 감소시킨다. 만일 값이 음수가 되면 semWait를 호출한 프로세스는 블록된다. 음수가 아니면, 프로세스는 계속 수행될 수 있다.

semSignal 연산: 세마포어 값을 증가시킨다. 만약 값이 양수가 아니면(0이거나 음수면), semWait 연산에 의해 블록된 프로세스들을 깨운다.

 

 

5.9 이진 세마포어와 일반 세마포어의 차이는 무엇인가?

유지할 수 있는 값의 범위에 따라 나뉘는데 이진 세마포어는 오직 01만을 가질 수 있으나 일반 세마포어는 정수값을 가진다.

 

5.10 뮤텍스와 이진 세마포어의 핵심적인 차이는 무엇인가?

Mutual exclusion lock(뮤텍스)는 객체를 얻거나 반납할 때 사용하는 프로그래밍 플래그이다. 핵심 차이는 mutex의 경우 락을 설정한 프로세스만이 락을 해제할 수 있지만, 이진 세마포어의 경우 락을 설정한 프로세스와 해제하는 프로세스가 서로 다를 수 있다.

 

5.11 모니터의 어떠한 특징들이 이것을 고급 동기화 도구로 사용되게 만들었는가?

세마포어와 동일한 기능을 제공하며 보다 사용하기 쉽기 때문이다. 특정 언어 수준이 아닌 라이브러리 수준에서 구현될 수도 있고 보호하려는 어떠한 객체에도 모니터 락을 설정할 수 있다.

 

5.12 메시지 전달에서 직접 주소와 간접 주소의 차이를 비교하라.

직접 주소 지정은 프로세스의 식별자를 지정하는 것이나 간접 주소 지정은 송신자가 수신자에게 메시지를 바로 보내는 것이 아니라, 잠시 메시지를 보관하는 공유 큐로 보낸다.

 

5.13 판독자/기록자 문제와 연관된 조건은 무엇인가?

  1. 여러 판독자가 공유 데이터를 동시에 읽을 수 있다.
  2. 한 순간에는 단 하나의 기록자만이 공유 데이터를 변경할 수 있다.
  3. 기록자가 데이터를 변경하고 있는 동안에는 판독자가 그 파일을 읽을 수 없다.