turn에 접근할 때 인터럽트가 발생한다면?
284
投稿した質問数 83
안녕하세요 교수님, Race Condition 관련하여 질문을 드리고 싶습니다.
Peterson2에서 AtomicBoolean을 사용하여 Race Condition을 해결하고 항상 0이라는 결과가 출력되는 것을 확인하였습니다.
그런데.. busy waiting을 위한 조건문에는 turn에 대한 검사도 들어가있지 않습니까?
turn은 AtomicBoolean과 다르게 그냥 일반적인 int입니다.
만약 이 turn에 대한 할당 작업이 기계어 레벨에서 수행되는 중에 interrupt가 발생하면 또다시 Race Condition이 발생할 수도 있는 것 아닌가 하는 생각이 듭니다.
하지만 결과는 당연히 강의에서 교수님이 보여주신대로 count는 항상 0을 유지하겠지요.
어째서 int turn이 Race Condition을 발생시키지 않을 수 있는 것인지가 궁금합니다.
감사합니다!
回答 2
0
제가 질문 상황을 정확히 이해하기 어렵지만, 일반론으로 답변을 드리겠습니다.
먼저, count 변수가 공유 변수라면 이 변수에 대한 접근에서 race condition이 발생합니다.
따라서 상호 배제를 통해 "동시에" critical section에 진입하는 것을 막아야 합니다.
그리고 turn을 통해서 "동기화"하는 것은 critical section 내부에서 일어난다고 보면
이미 turn 변수에 대해서는 race condition이 발생하지 않는다고 할 수 있겠죠?
따라서, Peterson 알고리즘을 통해 wait(), signal()을 구현하는 것은
H/W, S/W 인터럽트와는 무관하게 여러 프로세스가 "동시에" 하나의 자원을 공유하면서 "동기화"를 할 수 있는 기법이 될 수 있습니다.
퀴즈 7번의 답에 대한 질문입니다.
0
541
1
이해하고 있는것이 맞는건지 궁금합니다 ㅠㅠ
0
802
1
타우시간
0
533
1
퀴즈1 1번 질문합니다 !
1
593
1
Page는 Text Data이외에 다른 메모리도 포함하나요?
1
369
0
IPC shared memory 코드
0
509
1
[간단한 질문 ]banker's algorithm 을 linux 에서 실제로 프로세스 관리할때 쓰이나요?
0
394
0
user mode i/o 관련 질문
0
274
1
shared memory 관련해서 질문 드립니다.
0
509
1
교수님 fork()함수에 대해 질문이 있습니다.
0
878
2
process 와 thread
0
360
1
교수님 Docker 로 실습해도 괜찮을까요?
1
857
1
Mac OS에서 Docker 이용하여 Ubuntu 20.04 환경설정 방법 공유
22
3313
2
moniter, condition variable, synchronized에 대해서 궁금한점이 있습니다..
0
660
1
왜 무료인지 이해를 못 하겠네요..
3
421
1
7.1 Classic Problems of Synchronization 질문이 있습니다
0
293
1
공룡책 8판과 10판중
0
589
1
6.3 peterson's solution 질문이 있습니다
0
218
1
08-01 연습문제 8번 질문있습니다!
0
276
0
06. 프로세스간 통신의 실제: Chapter 3. Processes (Part 4) 에 그림 3.16 3.17 실습 오류
0
259
1
안녕하세요 교수님 실습 해봤는데 LINE J가 실행이 됩니다
1
347
1
2강 실습을 위한 개발환경 구축(Windows 10 + WSL 2 + Visual Studio Code)에서 출력오류
0
338
1
아래 질문 관련하여 다시 문의드립니다
0
193
1
Thread & Concurrency (Part 2) 질문드립니다
0
181
1

