개발
home
🐳

Chapter 5 프로세스 동기화

Created
2022/02/14 05:12
Tags

Part 2 프로세스 관리

Chapter 5 프로세스 동기화

요약

1.
프로세스 간 통신의 개념
a.
프로세스가 다른 프로세스와 데이터를 주고 받는 것을 의미하며 프로세스 내부 데이터 통신, 프로세스 간 데이터 통신, 네트워크를 이용한 데이터 통신이 있다.
2.
프로세스 간 통신의 분류
분류방식
종류
통신 방향에 따른 분류
양방향 통신
일반적 통신, 소켓
반양방향 통신
무전기
단방향 통신
전역 변수, 파일, 파이프
통신 구현 방식에 따른 분류
대기가 있는 통신 (동기화 통신)
파이프, 소켓
대기가 없는 통신 (비동기화 통신)
전역 변수, 파일
3.
프로세스 간 통신의 종류
a.
전역 변수를 이용한 통신: 공동으로 관리하는 메모리를 사용하여 데이터를 주고받는 것이다.
b.
파일을 이용한 통ㅇ신: 저장장치에 파일을 읽고 쓰는 방법으로 데이털르 주고 받는 것이다.
c.
파이프를 이용한 통신: 운영체제가 제공하는 동기화 통신 방법으로, 파이프에 쓰기 연산을 하면 데이터가 전송되고 읽기 연산을 하면 데이터를 받는다.
d.
소켓을 이용한 통신: 여러 컴퓨터에 있는 프로세스와 프로세스를 소켓으로 연결하여 데이터를 주고 받는 것이다. 소켓에 쓰기 연산을 하면 데이터가 전송되고 읽기 연산을 하면 데이터를 받는다.
4.
공유 자원
a.
여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말한다. 공유 자원은 공동으로 이용되기 때문에 누가 언제 데이터를 읽거나 쓰느냐에 따라 그 결과가 달라질 수 있다.
5.
임계구역
a.
공유 자원 접근 순서에 따라 실행 결과가 달리지는 프로그램의 영역을 말한다.
6.
임계구역 해결 조건
a.
상호 배제: 한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역에 들어갈 수 없다.
b.
한정 대기: 어떤 프로세스도 무한 대기하지 않아야 한다.
c.
진행의 융통성: 한 프로세스가 다른 프로세스의 진행을 방해해서는 안된다.
7.
임계구역 해결 방법
a.
피터슨 알고리즘, 데커 알고리즘: 임계구역 해결 조건을 모두 만족하는 소프트웨어적인 해결 방법이다.
b.
세마포어: 임계구역에 진입하기 전에 스위치를 사용 중으로 놓고 임계구역으로 들어가는 방법으로, 피터슨 알고리즘이나 데커 알고리즘보다 간단하고 사용하기가 쉽다.
c.
모니터: 세마포어 알고리즘을 자동으로 처리하도록 설계한 코드이다. 보호할 자원을 임계구역으로 숨기고 임계구역ㄷ에서 작업할 수 있는 인터페이스만 제공하여 자원을 보호한다.

연습문제

1.
프로세스 간 통신에서 데이터를 양방향으로 전송 가능하지만 동시 전송은 불가능하고 특정 시점에 한쪽 방향으로만 전송할 수 있는 통신 방식은 무엇인가?
반양방향 통신
2.
상태 변화를 살펴보기 위해 반복문을 무한 실행하며 기다리는 것을 무엇이라 하는가?
바쁜 대기(busy waiting)
3.
프로세스 간 통신에서 대기가 없는 통신과 대기가 있는 통신의 예를 각각 제시하시오.
대기가 없는 통신(비동기화 통신): 전역 변수, 파일
대기가 있는 통신(동기화 통신): 파이프, 소켓
4.
파이프를 이용하여 통신할 때 파이프를 2개 사용하는 이유는 무엇인가?
파이프는 단방향 통신이다. 이를 극복하여 파이프를 2개 사용하여 양방향으로 통신하기 위해서
5.
공유 자원을 병행적으로 읽거나 쓰는 상황을 무엇이라 하는가?
경쟁 조건 (race condition)
6.
공유 자원의 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역은 무엇인가?
임계구역
7.
임계구역 해결 조건 중 한 프로세스가 임계구역에 들어갔을 때 다른 프로세스는 임계구역에 들어갈 수 없는 조건을 무엇이라 하는가?
상호 배제
8.
임계구역 해결 조건 중 한 프로세스가 다른 프로세스의 진행을 방해해서는 안 된다는 조건을 무엇이라 하는가?
진행의 융통성
9.
임계구역 문제를 하드웨어적으로 해결한 방식으로, 하드웨어의 지원을 받아 명령어를 실행하는 도중에 타임아웃이 걸리지 않도록 하는 방식을 무엇이라 하는가?
하드웨어적인 해결 방법. 검사와 지정 (test-and-set)
10.
세마포어의 Semaphore(n)에서 n은 무엇을 가리키는가?
공유 가능한 자원의 수
11.
세마포어에서 내부 변수를 RS라고 할 때 세마포어 P()의 내부 코드를 쓰시오.
if RS > 0 then RS = RS - 1else block()
C
복사
12.
세마포어에서 내부 변수를 RS라고 할 때 세마포어 V()의 내부 코드를 쓰시오.
RS = RS + 1 wake_up()
C
복사
13.
세마포어가 제대로 작동하지 않는 경우를 설명하시오.
세마포어를 사용하지 않고 임계구역에 들어간 경우
P()를 두 번 사용하여 wake_up 신호가 발생하지 않은 경우. 세마포어 큐에 대기하고 있는 프로세스가 무한 대기에 빠진다
P()와 V()를 반대로 사용하여 상호 배제가 보장되지 않은 경우
14.
세마포어의 내부 코드도 타임아웃이 걸리면 문제가 발생할 수도 있다. 그래서 내부 코드는 무엇으로 보호받는가?
검사와 지정 (test-and-set)
15.
공유 자원을 내부적으로 숨기고 공유 자원에 접근하기 위한 인터페이스만 제공함으로써 자우너을 보호하고 프로세스 간에 동기화를 시키는 것으로, 세마포어의 단점을 해결하면서 임계구역 문제를 해결한 방시은 무엇인가?
모니터