moniter, condition variable, synchronized에 대해서 궁금한점이 있습니다..
660
2 asked
자바에서 모든 객체는 모니터를 하나씩 가지고, 객체의 맴버변수에 스레드간 경합 없이 접근하기 위해서 synchronized 키워드를 사용해서 간접적으로 모니터를 사용하는것으로 이해했습니다. synchronized 를 매서드를 통해서 사용하는 경우 synchronized 매서드 안에서 임계구역에 접근 전에 위해 monitor에 있는 acquire을 호출해주고, 임계구역 연산 이후 release를 해주는것으로 알고있습니다. 이때 acquire안에서는 “조건변수(conditional variable)“의 wait을 호출해서 현재 임계구역에 있는 스레드의 작업이 끝날 때 까지 기다리고, release안에서는 “조건변수“의 signal을 호출해서 임계구역내에 작업을 끝마치고 대기큐에 있는 스레드를 깨워주는 것으로 이해했습니다.
Answer 1
1
안녕하세요?
조금 난해한 질문을 해주셨는데, Java에서 객체별 모니터에서 조건변수를 어떻게 처리하느냐 등에 대한 사항은 JVM Spec. 을 통해서 확인해 봐야 할 사항이고, Spec.에 명시 되어 있더라도 구현체에 따라 달라질 수 있습니다.
개념적으로는 질문하신대로 각 모니터별로 하나의 조건변수를 두어, 해당 조건변수를 이용해서 다중 쓰레드가 모니터 락을 획득하도록 가상머신 스케줄러가 조정해 주면 됩니다. 교재에서 예시로 든 x, y는 해당 모니터가 관리하는 자원의 수, 쓰레드 경쟁환경 등을 기준으로 생성하고 관리해 주면 됩니다. 이것은 개념 상의 문제이므로, 특별히 어떤 기준이 있다고 하기에는 좀 애매한 개념이라고 생각하시면 될 듯 합니다.
퀴즈 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
508
1
[간단한 질문 ]banker's algorithm 을 linux 에서 실제로 프로세스 관리할때 쓰이나요?
0
393
0
user mode i/o 관련 질문
0
273
1
shared memory 관련해서 질문 드립니다.
0
508
1
교수님 fork()함수에 대해 질문이 있습니다.
0
878
2
process 와 thread
0
360
1
교수님 Docker 로 실습해도 괜찮을까요?
1
855
1
Mac OS에서 Docker 이용하여 Ubuntu 20.04 환경설정 방법 공유
22
3313
2
왜 무료인지 이해를 못 하겠네요..
3
420
1
7.1 Classic Problems of Synchronization 질문이 있습니다
0
292
1
공룡책 8판과 10판중
0
589
1
6.3 peterson's solution 질문이 있습니다
0
217
1
08-01 연습문제 8번 질문있습니다!
0
275
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
337
1
아래 질문 관련하여 다시 문의드립니다
0
192
1
Thread & Concurrency (Part 2) 질문드립니다
0
181
1
vmware에 ubuntu 설치관련 질문드립니다
0
209
1

