본문 바로가기

개인공부

프로세스 동기화 방법

반응형

Process Synchronizeation (동기화)

 

다중 프로그래밍 시스템

- 여러 개의 프로세스들이 존재

- 프로세스들은 서로 독립적으로 동작

- 공유 자원 또는 데이터가 있을 때 , 문제 발생 가능

 

동기화(Synchronization)

- 프로세스 들이 서로 동작을 맞추는 것

- 프로세스 들이 서로 정보를 공유 하는 것

 

 

 

비동기적

- 프로세스들이 서로에 대해 모름

 

병행적

- 여러 개의 프로세스들이 동시에 시스템에 존재

 

병행 수행중인 비동기적 프로세스들이 공유 자원에 동시 접근 할 때 문제가 발생 할 수 있음

 

 

용어정리

 

Shared data (공유데이터) = > 크리티컬 데이터

- 여러 프로세스들이 공유하는 데이터

 

Critical section (임계 영역)

- 공유 데이터를 접근하는 코드 영역(code segment)

 

Mutual exclusion (상호배제)

- 둘 이상의 프로세스가 동시에 critical section에 진입하는 것을 막는 것

 

- Atomicity (원자성) , Indivisible (분리불가능)

- 한 기계의 명령의 실행 도중에 인터럽트 받지 않음

 

 

 

Mutual Exclusion Methods

 

Mutual exclusion primitives    :: 프리미티브는 가장 기본이 되는 기본연산이라는 뜻

 

enterCS() primitive 크리티컬 섹션 진입

- Critical section 진입 전 검사

- 다른 프로세스가 critical section 안에 있는지 검사

 

exitCS() primitve 크리티컬 섹션 탈출

- Critical section 을 벗어날 때의 후처리 과정

- Critical seciton 을 벗어남을 시스템이 알림

 

조건 3가지

 

Mutal exclusion 상호배제

- 크리티컬 섹션에 프로세스가 있으면, 다르 프로세그의 진입금지

Progress 진행

- CS안에 있는 프로세스 외에는, 다른프로세스가 CS에 진입하는 것을 방해 하면 안됨

Bounded waiting 한정대기

- 프로세스의 CS진입은 유한시간 내에 허용되어야 함

 

 

turn이라는 변수를 이용해서 P0 고 P1이 while 문으로 turn 에 따라 while이 계속 진행된다.

이런식으로 상호배제 크리티컬 섹션을 구현한다.

근데 조건위배 P0이 크리티컬 섹션에 진입 하지 않는 경우  한프로세스가 두번 연속 cs에 진입불가

 

 

 

 flag(깃발)같은 신호를 이용해서 while을 돌린다. 앞에 turn 방식과 유사한거임

 

이것도 문제가있다 while 들어가기전에 깃발을 두개다 들게된다면 둘다 한정 대기를 한다.

 

반응형

'개인공부' 카테고리의 다른 글

크리티컬섹션 HW 솔루션  (0) 2020.06.21
크리티컬 섹션 해결 알고리즘  (0) 2020.06.21
SPN / SRTN / HRRN  (0) 2020.06.21
FCFS/RR  (0) 2020.06.21
프로세스 스케줄링  (0) 2020.06.21