쉽게 배우는 운영체제_ch5_프로세스 동기화

shon4bw·2021년 10월 2일
0

📝Quick Study

목록 보기
11/12
post-thumbnail

연습문제

01

프로세스 간 통신에서 데이터를 양방향으로 전송 가능하지만 동시 전송은 불가능하고 특정 시점에 한쪽 방향으로만 전송할 수 있는 통신 방식은?
반양방향 통신half-duplex communication
대표적인 예는 무전기

02

상태 변화를 살펴보기 위해 반복문을 무한 실행하며 기다리는 것은?
바쁜 대기busy waiting

전역 변수를 사용하는 통신 방식의 가장 큰 문제는 언제 데이터를 보낼지 데이터를 받는 쪽에서는 모른다는 것. 그러므로 데이터를 받는 쪽에서는 반복적으로 전역 변수의 값을 점검하는 수밖에 없다. 우편함에 편지가 있는지 수시로 열어보는 것처럼 상태 변화를 살펴보기 위해 반복문을 문한 실행하며 기다리는 것을 바쁜 대기라고 한다. 시스템 차원에서 큰 자원 낭비인 바쁜 대기는 안 좋은 프로그램의 전형적인 예이다.

03

프로세스 간 통신에서 대기가 없는 통신과 대기가 있는 통신의 예를 각각 제시하시오.
통신 구현 방식에 따른 분류
1. 대기가 있는 통신(동기화 통신)
: 파이프, 소켓
: 데이터를 받는 쪽은 데이터가 도착할 때까지 자동으로 대기 상태에 머물러 있다.
2. 대기가 없는 통신(비동기화 통신)
: 전역 변수, 파일
: 데이터를 받는 쪽은 바쁜 대기를 사용하여 데이터가 도착했는지 여부를 직접 확인한다.

04

파이프를 이용하여 통신할 때 파이프를 2개 사용하는 이유는?
파이프를 이용한 통신은 단방향이기 때문에,
양방향 통신을 위해서는 파이프가 2개 필요하다.

05

공유 자원을 병행적으로 읽거나 쓰는 상황을 무엇이라 하는가?
경쟁 조건race condition

06

공유 자원의 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역은?
임계 구역critical section
critical 앞으로의 상황에 영향을 미친다는 점에서 대단히 중요한이라는 뜻으로, 프로세스 실행 상황에서는 공유할 수 없는 자원이 중요한 자원이다.

07

임계구역 해결 조건 중 한 프로세스가 임계구역에 들어갔을 떄 다른 프로세스는 임계구역에 들어갈 수 없는 조건은?
상호 배제mutual exclusion

임계구역 문제를 해결하기 위한 세 가지 조건 중 하나(1)
한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계꾸역에 들어갈 수 없다. 이것이 지켜지지 않으면 임계꾸역을 설정한 의미가 없다. 두 요리사가 한 믹서에 각자 사용할 재료를 한 번에 넣고 갈면 안되는 것처럼 임계구역 내에는 한 번에 하나의 프로세스만 있어야 한다.

08

임계구역 해결 조건 중 한 프로세스가 다른 프로세스의 진행을 방해해서는 안 된다는 조건은?
진행의 융통성progress flexibility

임계구역 문제를 해결하기 위한 세 가지 조건 중 하나(2)
두 요리사가 번갈아가며 믹서를 사용하기로 햇다고 가정했을 때, 요리사 B는 믹서를 사용한 후 요리사 A가 믹서를 사용할 일이 있든 없든 믹서를 사용할 떄까지 기다려야 하는데 이는 매우 비효율적이다. 요리사 B는 요리사 A의 작업 속도와 관계없이 믹서가 비어있으면 언제든 사용할 수 있어야 한다. 진행의 융통성은 한 프로세스가 다른 프로세스의 진행을 방해해서는 안 된다는 것을 의미한다.
임계구역 문제를 해결하기 위한 세 가지 조건 중 하나(3)
한정 대기bounded wating
한 요리사가 믹서를 계속 사용하여 다른 요기사가 믹서를 사용하지 못한 채 계속 기다리면 안 되는 것처럼 어떤 프로세스도 무한 대기infinite postpone하지 않아야 한다. 즉 특정 프로세스가 임계구역에 진입하지 못하면 안 된다.

09

임계구역 문제를 하드웨어적으로 해결한 방식으로, 하드웨어의 지원을 받아 명령어를 실행하는 도중에 타임아웃이 걸리지 않도록 하는 방식은?
검사와 지정 코드, Test and Set 방식

10

세마포어의 Semaphore(n)에서 n은 무엇을 가리키는가?
공유 가능한 자원의 수

11

세마포어에서 내부 변수를 RS라고 할 때 세마포어 P()의 내부 코드를 쓰이오.

if RS>0 then RS=RS-1;
else block();

12

세마포어에서 내부 변수를 RS라고 할 때 세마포어 V()의 내부 코드를 쓰이오.

RS = RS + 1;
wake_up();

13

세마포어가 제대로 작동하지 않는 경우를 설명하시오.

  • 프로세스가 세마포어를 사용하지 않고 바로 임계구역에 들어간 경우 임계구역을 보호할 수 없다.
  • P()를 두 번 사용하여 wake_up 신호가 발생하지 않는 경우이다. 프로세스 간의 동기화가 이루어지지 않아 세마포어 큐에서 대기하고 있는 프로세스들의 무한대기에 빠진다.
  • P()와 V()를 반대로 사용하여 상호 배제가 보장되지 않은 경우로 임계꾸역을 보호할 수 없다.

14

세마포어의 내부 코드도 타임아웃이 걸리면 문제가 발생할 수 있다. 그래서 내부 코드는 무엇으로 보호받는가?
검사와 지정

15

공유 자원을 내부적으로 숨기고 공유 자원에 접근하기 위한 인터페이스만 제공함으로써 자원을 보호하고 프로세스 간에 동기화를 시키는 것으로, 세마포어의 단점을 해결하면서 임계 구역 문제를 해결한 방식은?
모니터

심화문제

01

프로세스 간 통신을 통신 방향에 따라 분류하여 설명하시오.

  • 양방향 통신duplex communication
    : 데이터를 동시에 양쪽 방향으로 전송할 수 있는 구조, 일반적인 통신은 모두 양방향 통신
    : ex) (프로세스 간 통신) 소켓 통신
  • 반양방향 통신half-duplex communication
    : 데이터를 양쪽 방향으로 전송할 수 있지만 동시 전송은 불가능하고 특정 시점에 한쪽 방향으로만 전송할 수 있는 구조
    : ex) 무전기
  • 단방향 통신simplex communication
    :모스 신호처럼 한쪽 방향으로만 데이터를 전송할 수 있는 구조
    : ex) (프로세스 간 통신) 전역 변수와 파이프

02

대기가 있는 통신과 대기가 없는 통신의 의미를 설명하고 적절한 예를 제시하시오.
연습문제 3번참고

03

실생활의 예를 들어 임계구역 문제를 설명하시오.
주방에서 가스레인지는 공유가 가능한 자원이다. 가스레인지에는 보통 3~4개의 화구가 있어 한 번에 여러 요리를 할 수 있다. 이에 반해 믹서는 공유가 불가능한 자원으로서 주방의 임계구역이다. 믹서를 사용할 때는 순서를 지켜야 한다. 급하다고 수프에 넣는 쇠고기와 주스에 넣는 오렌지를 같이 갈 수는 없다.

04

다음 코드의 문제점을 설명하시오.

사진출처:본인
(임계구역을 해결하기 위한 코드) 프로세스 P1과 P2는 코드가 같으며 두 프로세스가 공유하는 변수인 lock의 초깃값은 false이다. 여기서 false는 잠금이 해제되었다는 의미.

프로세스 P1과 P2는 임계구역에 진입하기 전에 코드를 통해 임계구역에 잠금이 걸려 있는지 확인한다lock==true. 만약 잠겨 잇으면 다른 프로세스가 임계구역에서 작업하고 있다는 뜻이므로 잠금이 해제될 때까지 무한 루프를 돌면서 기다린다while(lock==true);. 임계구역에 있는 프로세스가 작업을 마치고 잠금을 해제하면lock=false;무한 루프를 빠져나와 작업을 한다. lock=false;는 임계구역을 사용해도 좋다고 다른 프로세스에 보내는 동기화 신호이다. 잠금이 풀려서 새로 임계꾸역에 진입하는 프로세스는 다른 프로세스가 진입하지 못하도록 잠금을 걸고lock=true;작업을 하며, 작업을 마치면 다른 프로세스가 사영할 수 있도록 잠금을 해제한다lock=false;.

위의 코드는 임계구역에 진입하기 전에 먼저 다른 프로세스가 사용 중인지 확인하며, 사용 중이면 끝날 때까지 기다리고 그렇지 않으면 잠금을 걸고 임계구역에 진입한다.

임계구역에 진입한 프로세스가 없다lock=false;는 상황에서 실행된다고 가정하자. 프로세스 P1은 while(lock==true);을 실행한다. 다음 문장을 실행하려는 순간 타임아웃이 발생해 준비상태로 옮겨진다. 문맥 교환이 발생하고 프로세스 P2가 실행상태로 바뀐다. 프로세스 P2는 while(lock==true);를 실행하고 아직 프로세스 P1이 잠금을 걸지 않아 lock=false;이며 프로세스 P2 또한 임계구역 접근가능하다. 프로세스 P1은 lock==true 실행하여 임계구역에 잠금을 걸고 실행한다. P2 또한 똑같이 실행한다. 두 프로세스가 동시에 임계구역에서 실행되므로 상호배제 mutual exclusion가 발생한다. 또한 잠금이 풀리기 기다리려면 바쁜 대기를 계속하여 시스템 자원을 낭비하게 된다.

05

다음 코드의 문제점을 설명하시오.

사진출처:본인
한 프로세스가 두 번 연달아 임계구역에 진입하고 싶어도 그럴 수가 없다. 프로세스의 우선순위에 상관없이 번갈아가며 임계구역에 진입한다. 프로세스 P1은 프로세스 P2가 임계구역에 진입했다가 나온 다음에야 다시 진입할 수 있으므로 프로세스 P2가 프로세스 P1의 진행을 방해하는 구조이다. 프로세스의 진행이 다른 프로세스로 인해 방해받는 현상을 경직된 동기화Lockstep Synchronization라고 한다. 진행의 융통성을 보장하지 못한다.

06

파일을 이용하여 Test라는 문자를 주고받는 코드를 작성하시오.
하드웨어직인 해결 방법

profile
cut_the_mustard

0개의 댓글