운영체제 기본/동시성: 두 판 사이의 차이

한글 폰트 폭 차이로 흐트러지지 않도록 ASCII 도식 표기 정리
코드 앞의 불필요한 자기해설·면책성 문장 제거
9번째 줄: 9번째 줄:
== 실행 순서보다 먼저 정해야 하는 불변식 ==
== 실행 순서보다 먼저 정해야 하는 불변식 ==


재고가 한 개 남았고 두 주문을 처리한다고 하자. 아래는 각 줄이 하나의 단계로 실행된다고 가정하는 '''추상 의사코드'''다.
재고가 한 개 남았고 두 주문을 처리한다고 하자.


<pre>
<pre>
43번째 줄: 43번째 줄:
== 원자 연산으로 잠금 만들기 ==
== 원자 연산으로 잠금 만들기 ==


공유 RAM에 놓인 잠금 변수의 0을 비어 있음, 1을 사용 중이라고 하자. 이 변수는 원자 연산이 요구하는 크기와 정렬 조건을 만족해야 한다. 아래는 논리적 의사코드이며, 실제 C 원자 연산의 함수 서명이나 실무용 잠금 구현은 아니다. 비교 후 교환(CAS)은 현재 값이 0일 때만 1로 바꾸는 일을 하나의 원자적 연산으로 수행하고, 성공 여부를 반환한다.
공유 RAM에 놓인 잠금 변수의 0을 비어 있음, 1을 사용 중이라고 하자. 이 변수는 원자 연산이 요구하는 크기와 정렬 조건을 만족해야 한다. 비교 후 교환(CAS)은 현재 값이 0일 때만 1로 바꾸는 일을 하나의 원자적 연산으로 수행하고, 성공 여부를 반환한다.


<pre>
<pre>