2023. 1. 16. 15:15ㆍc
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 세마포어와 뮤텍스
공유 자원을 어떻게 처리하는지 를 설명하는 내용으로
포크와 철학자로 표현되는 쉬운 이야기 임으로 넘어가도록 하겠다.
위 내용을 지속적으로 반복하여 설명하는데
더이상의 정리는 무의미 하다고 여겨져 정리를 마치도록 한다.