5. 프로세스 동기화
2023. 4. 14. 21:45ㆍ운영체제
728x90
1. 프로세스 간 통신
1-1. 통신의 종류
프로세스 내부 통신
- 하나의 프로세스 내에서 스레드 사이 통신
- 전역 변수나 파일을 이용
프로세스 간 통신
- 같은 컴퓨터 내 여러 프로세스 사이 통신
- 공용 파일 또는 운영체제가 제공하는 파이프를 사용
네트워크 이용한 통신
- 여러 컴퓨터가 네트워크로 연결되어 있을 때 통신
- 소켓을 이용
1-2 통신 방향에 따른 분류
양방향 통신
- 데이터를 동시에 양쪽 방향으로 전송할 수 있는 구조
- 예) 소켓 통신
반양방향 통신
- 양쪽 방향으로 전송할 수 있지만 동시 전송은 불가능하고 특정 시점에 한쪽 방향으로만 전송
- 예) 무전기
단방향 통신
- 한쪽 방향으로만 데이터를 전송할 수 있는 구조
- 예) 파이프, 전역 변수
1-3 통신 구현 방식에 따른 분류
동기화를 지원하는 통신 방식
- 데이터를 받는 쪽은 데이터가 도착할 때까지 자동으로 대기 상태에 머물러 있음
- 예) 파이프, 소켓
동기화를 지원하지 않는 통신 방식
- 데이터를 받는 쪽은 데이터가 도착했는지 여부를 직접확인
- 예) 전역 변수, 파일
전역 변수를 이용한 통신
- 보내는 쪽에서는 전역 변수에 값을 쓰고, 받는 쪽에서는 읽음
파일을 이용
- 보내는 쪽에서는 파일에 값을 쓰고, 받는 쪽에서는 읽음
파이프 이용
- 양방향 통신을 하려면 파이프 2개 사용
-> 하나는 읽기용, 하나는 쓰기용 - 일반 파이프는 부모와 자식 프로세스 사이에서만 통신가능
-> 익명 파이프라고도 함 - FIFO는 서로 관련 없는 프로세스 간 통신에 사용
-> 지명 파이프라고도 함
소켓 이용
- 통신하고자 하는 프로세스는 자신의 소켓과 상대의 소켓을 연결

2. 공유 자원과 임계영역
2-1 공유 자원의 접근
경쟁 조건 (Race Condition)
- 2 개 이상의 프로세스가 공유 자원을 동시에 읽거나 쓰는 상황
- 공유 자원 접근 순서에 따라 실행 결과가 달라질 수 있음
2-2 임계 구역
- 공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역
- 임계구역에서는 프로세스들이 동시에 작업하면 안 됨
2-3 임계 구역 해결 조건
상호 배제(Mutual Exclusion)
- 한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역에 들어갈 수 없는 것
한정 대기
- 어떤 프로세스도 무한 대기하지 않아야 함
3. 임계구역 해결 방법
피터슨 알고리즘
- 2 개의 프로세스만 사용 가능하다는 한계가 있음
데커 알고리즘
- 1. 프로세스 P1은 잠금을 검
- 2. 프로세스 p2의 잠금이 걸렸는지 확인
- 3. 만약 프로세스 p2도 잠금을 걸었다면 누가 먼저인지 확인
p1의 차례라면 임계구역으로 진입, p2의 차례라면 4번으로 이동 - 4. 프로세스 p1은 잠금을 풀고 프로세스 p2가 작업을 마칠 때까지 기다림
p2가 작업을 마치면 잠금을 걸고 임계구역으로 진입

세마포어
- 임계구역에 진입하기 전에 스위치를 사용 중으로 놓고 임계구역으로 들어감
- 이후에 도착하는 프로세스는 앞의 프로세스가 작업을 마칠 때까지 기다림
- 프로세스가 작업을 마치면 다음 프로세스에 임계구역을 사용하라는 동기화 신호를 보냄
모니터
- 공유 자원을 내부적으로 숨기고 공유 자원에 접근하기 위한 인터페이스만 제공함으로써
자원을 보호하고 프로세스 간에 동기화를 시킴 - 임계구역으로 지정된 변수나 자원에 접근하고자 하는 프로세스는 직접 wait(), wake_up()
를 사용하지 않고 모니터에게 작업 요청 - 모니터는 요청받은 작업을 모니터 큐에 저장한 후 순서대로 처리하고 그 결과만 해당 프로세스에게 알려줌
728x90
'운영체제' 카테고리의 다른 글
| 물리 메모리 관리 (0) | 2023.06.01 |
|---|---|
| 교착상태 (deadlock) (1) | 2023.05.29 |
| 4. CPU 스케줄링 (0) | 2023.04.14 |
| 3. 프로세스와 스레드 (2) | 2023.04.13 |
| 2. 컴퓨터 구조와 성능 향상 (2) | 2023.04.13 |