Data Synchronization


<aside> 💡 NOTE

  1. 하나의 카운터를 올릴때 1. 로딩, 2. 상승, 3. 저장을 진행하는 과정에서 인터럽트가 발생한 것(이때 1 증가한 것만 적용이 된다.)

    스크린샷 2024-03-09 오후 1.52.17.png

    스크린샷 2024-03-09 오후 1.52.55.png

  2. 시스템 콜과 할당시간이 있는 경우, 카운트가 분리된 경우 P(b)가 적용되지 않음

    → 커널 모드에 있을때에는 할당시간이 끝나도 시간이 종료하지 않는 방법을 택한다.

  3. cpu가 여러개일때, 접근한 것에대해 lock을 걸어 처리한다.

</aside>

임계구역

<aside> ✍️ NOTE

</aside>


9강

프로그램적 해결법의 충족 조건


<aside> 💡 NOTE

</aside>

생길 수 있는 문제

<aside> ✍️ NOTE

하드웨어적으로 atomic하게 수행할 수 있도록 지원하는 경우 간단하게 해결할 수 있다.

스크린샷 2024-03-09 오후 2.44.11.png

test_and_set이 하나의 락으로 작동하기만 하면되는것

Synchronization variable:

boolean lock = false;

Process
do {
	while(Test_and_Set(lock));
	lock= false;
} 

하지만 프로그래머가 이렇게 만드는 것은 오래걸리고 고려할것이 많기 때문에 방법을 만들어둠

</aside>


10강