14

2023. 1. 16. 15:15c

14동시성 문제 

 

14장의 경우 어떤 문제들이 발생하는지 처리하도록 한다. 

여기서 사실 14장의 경우 식사하는 철학자 라는 고전적인 문제를 풀어보는것이 

훨씬 효율적인 방식 이라고 할 수 있을듯 하다 .

 

동시성 제어 매커니즘이 없는 경우 전체 상대를 다르게 만들 때 동시성 제어 문제가 발생한다.

 

데이터 자원에 데이터 경쟁이 발생 했을 때 이를 기아 상태라고 하며 

여기서 어떤 문제를 처리할수 있을지 확인 하는 장이 될듯하다 .

 

고유한 동시성 문제

 

하나이상의 작업이 있는 모든 동시성 시스템은 다수의 안티리빙이 일어 날 수 있으며 

이는 시스템의 고유한 속성이다 .

 

안티리빙 자체로는 문제가 되지 않으나 위에 기술한 내용들에 의해서 

안티리빙으로 인한 문제가 발생할 수 있다는것이다. 

위와 같은 점을 알아 보는 가장 좋은 문제가 식사하는 철학자 이다.^^

 

일단 더욱 지속하면서 넘어가면 제약조건이 변경되지 않으며 불변함을 유지하도록

동기화 메커니즘을 도입하는것을 의미한다.

이를 통해 안티리빙이 발생했을 경우에도 각자의 상태로 인해 데이터의 손실을

걱정하지 않는 상태를 유지하는 것을 의미한다 .

 

이때 이러한 제약조건을 불변 제약 조건이라고 하며 간단할 수 있으나 또는

매우 복잡해 질 수 있음을 명시 하여야 한다.

 

경쟁 상태를 감지하기 위해서는 일반적으로 경쟁 탐지기를 통해서 검지할 수 있다.

변경되지 않는 공유데이터를 사용한다면 위와 같은 내용을 고민 할 필요 도 없다 는것을 

책 전반에 대해 설명하고 있다.

 

동기화 이후의 문제 

 

새로운 고유한 문제 제어 메커니즘은 명령어 간의 순서를 강제함으로 새로운 문제를 떠오르게 할 수 있다.

 

기아상태 : 선점을 우선적으로 하려다 보니 결국 실행은 하지 못하고 대기만 하게 되는 상황

 

교착 상태 무한정 대기상태에 놓여있는 상황.

 

우선순위 역전 우선순위 역전이 올바르게 구현 되지 않았을 경우 .

 

14.4 동기화 기술 

 

바쁜대기 및 스핀락

 

작업 Q가 특정 조건이 충족될 때 까지 바쁜 대기를 하고 있다고 하는데

위와 같은 경우가 p => print a stable =true;

q => stable => print b

인 경우 q는 stable을 무한히 기다리기 때문에 이러한 상황을 듯한다.

 

14.42 잠자기 알림 매커니즘

 

Q => stable => print b 를 

queue에다 집어넣고 다른 작업들을 처리 할 수 있도록 하는 방식을 의미한다.

 

14.43 세마포어와 뮤텍스

 

공유 자원을 어떻게 처리하는지 를 설명하는 내용으로

포크와 철학자로 표현되는 쉬운 이야기 임으로 넘어가도록 하겠다.

 

위 내용을 지속적으로 반복하여 설명하는데 

더이상의 정리는 무의미 하다고 여겨져 정리를 마치도록 한다.

'c' 카테고리의 다른 글

동시성과 병렬성.  (0) 2023.01.02
10장 유닉스  (0) 2022.12.25
c 로 하는 추상화  (0) 2022.12.12
c언어의 상속  (0) 2022.12.10
7장정리.  (0) 2022.12.04