대학원 일기

Chapter 05 프로세스 동기화 본문

School/Operation System

Chapter 05 프로세스 동기화

대학원생(노예) 2022. 4. 16. 01:34

1. 프로세스 간 통신

1-1 프로세스 간 통신의 개념

  프로세스 간 통신의 종류

- 프로세스 내부 데이터 통신

  • 하나의 프로세스 내에 2개 이상의 스레드가 존재하는 경우의 통신
  • 프로세스 내부의 스레드는 전역 변수나 파일을 이용하여 데이터를 주고 받음

- 프로세스 간 데이터 통신

  • 같은 컴퓨터에 있는 여러 프로세스끼리 통신하는 경우
  • 공용 파일 또는 운영체제가 제공하는 파이프를 사용하여 통신

- 네트워크를 이용한 데이터 통신

  • 여러 컴퓨터가 네트워크로 연결되어 있을 때 통신
  • 소켓을 이용하여 데이터를 주고 받음

 

2. 공유 자원과 임계구역

2-1 공유 자원의 접근

  공유 자원

- 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말함

 

  경쟁 조건

- 2개 이상의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황 (← 문제)

- 경쟁 조건이 발생하면 공유 자원 접근 순서에 따라 실행 결과가 달라질 수 있음

 

  공유 자원의 접근 예

문제

 

2-2 임계 구역

  임계 구역(Critical Section)

- 공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역

- 임계구역에서는 프로세스들이 동시에 작업하면 안됨

- 어떤 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역 밖에서 기다려야 하며 프로세스가 나와야 들어갈 수 있음

 

2-3 생산자-소비자 문제

  코드 및 샐행 순서에 따른 결과

- 생산자는 수를 증가시켜가며 물건을 채우고 소비자는 생산자를 쫓아가며 물건을 소비

- 생산자 코드와 소비자 코드가 동시에 실행되면 문제가 발생

 

 

2-4 임계구역 해결 조건(3조건)

  상호 배제(mutual exclusion)

- 한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역에 들어갈 수 없는 것

  한정 대기(bounded waiting)

- 어떤 프로세스라도 무한 대기하지 않아야 함

  진행의 융통성(progress flexibility)

- 한 프로세스가 다른 프로세스의 진행을 방해해서는 안된다는 것

 

3. 임계구역 해결 방법

3-1 기본 코드 소개

  임계구역 해결 방법을 설명하기 위한 기본 코드

 

3-2 임계구역 해결조건을 고려한 코드 설계

  전역 변수로 잠금을 구현한 코드

  1. 프로세스 P1은 while(lock==true); 문을 실행
  2. 프로세스 P2는 while(lock==true); 문을 실행
  3. 프로세스 P1은 lock=true; 문을 실행하여 임계구역에 잠금을 걸고 진입
  4. 프로세스 P2도 lock=true; 문을 실행하여 임계구역에 잠금을 걸고 진입(결국 둘다 임계구역에 진입)

- 이 경우, 상호 배제에 걸림

① 상호 배제 (P1 → P2) : 문제

② 한정 대기 (P1, P2 동시) : 

③ 진행의 융통성 (P1 → P1) : 

 

  상호 배제 조건을 충족하는 코드

  1. 프로세스 P1은 while(lock==true); 문을 실행한 후 자신의 CPU 시간을 다 씀(타임아웃), 문맥교환이 발생하고 프로세스 P2가 실행상태로 바뀜
  2. 프로세스 P2도 while(lock==true); 문을 실행한 후 자신의 CPU 시간을 다 씀(타임아웃), 문맥 교환이 발생하고 프로세스 P1이 실행 상태로 바뀜
  3. 프로세스 P2가 lock2=true; 문을 실행했기 때문에 프로세스 P1은 while(lock==true); 문에서 무한루프에 빠짐
  4. 프로세스 P1이 lock1=true; 문을 실행했기 때문에 프로세스 P2도 while(lock==true); 문에서 무한루프에 빠짐

- 이 경우, 한정 대기에 걸리게 됨

① 상호 배제 (P1 → P2) : 충족

② 한정 대기 (P1, P2 동시) : 문제

③ 진행의 융통성 (P1 → P1) : 

 

  상호 배제와 한정 대기 조건을 충족하는 코드

① 상호 배제 (P1 → P2) : 충족

② 한정 대기 (P1, P2 동시) : 충족

③ 진행의 융통성 (P1 → P1) : 문제

 

3-3 피터슨 알고리즘

  피터슨 알고리즘- 임계구역 해결의 세가지 조건을 모두 만족- 2개의 프로세스만 사용 가능하다는 한계가 있음

① 상호 배제 (P1 → P2) : 충족

② 한정 대기 (P1, P2 동시) : 충족

③ 진행의 융통성 (P1 → P1) : 충족

 

3-4 데커 알고리즘

  데커 알고리즘

① 상호 배제 (P1 → P2) : 충족

② 한정 대기 (P1, P2 동시) : 충족

③ 진행의 융통성 (P1 → P1) : 충족

 

3-5 세마포어

  세마포어 

- 임계구역에 진입하기 전에 스위치를 사용 중으로 놓고 임계구역으로 들어감- 이후에 도착하는 프로세스는 앞의 프로세스가 작업을 마칠 때까지 기다림- 프로세스가 작업을 마치면 다음 프로세스에 임계구역을 사용하라는 동기화 신호를 보냄

 

  세마포어 내부 코드

- Semaphore(n) : 전역 변수 RS를 n으로 초기화, RS에는 현재 사용가능한 자원의 수가 저장

- P( ) : 잠금을 수행하는 코드로 RS가 0보다 크면(사용 가능한 자원이 있으면) 1만큼 감소시키고 임계구역에 진입, 만약 RS가 0보다 작으면(사용 가능한 자원이 없으면) 0보다 커질 때까지 기다림

- V( ) : 잠금 해제와 동기화를 같이 수행하는 코드로, RS 깂을 증가시키고 세마포어에서 기다리는 프로세스에게 임계구역에 진입해도 좋다는 wake_up 신호를 보냄

 

3-6 모니터

  모니터 - 공유 자원을 내부적으로 숨기고 공유 자원에 접근하기 위한 인터페이스 제공함으로써 자원을 보호하고 프로세스 간에 동기화를 시킴

 

  모니터의 작동원리1. 임계구역으로 지정된 변수나 자원에 접근하고자 하는 프로세스는 직접 P( )나 V( )를 사용하지 않고, 모니터에 작업 요청2. 모니터는 요청받은 작업을 모니터 큐에 저장한 후 순서대로 처리하고 그 결과만 해당 프로세스에 알려줌

4. [심화] 파일, 파이프, 소켓 프로그래밍

4-1 파일

 

 

4-2 파이프

 

 

4-3 네트워킹

 

'School > Operation System' 카테고리의 다른 글

운영체제 7장  (0) 2022.06.09
운영체제 6장  (0) 2022.06.08
Chapter 04 CPU 스케줄링  (0) 2022.04.14
Chapter 03 프로세스와 스레드  (0) 2022.04.04
Chapter 02 컴퓨터의 구조와 성능 향상  (0) 2022.03.28
Comments