모니터 질문
307
작성한 질문수 83
안녕하세요 교수님, 모니터 관련 질문 드릴 게 있습니다.
질문 1. 모니터와 세마포어의 정확한 차이를 모르겠습니다.
모니터 방식이 "프로그래머가 정의한 특정 영역에 접근하려면 모니터 락을 얻어야 한다" 라는 방식이라고 설명하셨는데.. 이는 결국 임계영역에 들어가기 위해 sleep(), wakeup() 하는 세마포어와 동일한 것 아닌가요?
정확히 어떤 차이점이 있는지 와닿지가 않습니다.
(질문 1 보충 설명)
자바 동기화를 생각했을 때는 차이점이 인지가 됩니다.
"세마포어는 프로그래머의 실수로 인해 타이밍 오류가 발생할 수 있지만 자바에서 synchronized 키워드를 사용하면 JVM이 모니터 락을 알아서 관리해주니까 세마포어에서 발생하는 실수에 대한 걱정이 없다"
정도로요.
그런데, conditional variables 을 사용하는 경우에서는 모니터와 세마포어의 차이를 모르겠다는 이야기입니다.
condition x;
x.wait(), x.signal()
이러한 호출도 결국 프로그래머가 직접 해주는 것 아닌가요? 그렇다면 이게 세마포어와 어떤 차이점이 있는 것인지...
요런 질문입니다.
질문 2. 컨디션 변수의 작용 범위?
컨디션 변수를 사용한 모니터 구현 방식에서.. 각 컨디션 변수의 wait, signal은 하나의 공유 자원에 대해 동작하는 건가요?
아니면 모니터 내부에서 미니 모니터(?)같은 느낌으로 또 다시 영역을 나누고 그 영역에 대해서 동작하는 건가요?
질문 3. 컨디션 변수가 하나만 있는 경우?
만약 컨디션 변수가 하나만 있다고 한다면.. 이러한 경우에서는 이 역시 결국 세마포어와 완전히 동일한 것 아닌가 하는 생각이 드는데요.
제가 이해하지 못한 다른 차이점이 있을까요?
지금까지는 강의 내용을 이해하는 것에 큰 무리는 없었는데.. 이번 강의는 뭔가 난이도가 확 올라간 느낌이네요;
답변 부탁드립니다.
감사합니다!!
답변 1
0
비유적으로 설명하는 것은 오해의 소지가 많기 때문에 경계해야 하지만,
이 경우는 비유적 설명이 필요할 것 같습니다.
C++ 언어로 스택을 구현한다고 해 봅시다.
전역 변수로 스택을 두고, push() 함수와 pop() 함수를 구현할 수 있겠지요?
이 경우는 세마포어라고 보면 되겠습니다.
대신, class Stack을 선언하고, 멤버 변수로 스택을 두고
push(), pop()을 메서드로 선언해도 되겠지요?
이 경우는 모니터라고 보면 되겠습니다.
이렇게 개념을 잡고 다시 모니터 부분을 들여다 보면 나머지 문제는 해결이 될 것 같습니다.
노파심에서 말하지만, 비유는 비유일 뿐, 이 설명이 정확하다고는 생각마시고,
교재 내용을 천천히 음미하면서 읽어보면 좀 더 깊은 이해가 가능할 것 같습니다.
퀴즈 7번의 답에 대한 질문입니다.
0
554
1
이해하고 있는것이 맞는건지 궁금합니다 ㅠㅠ
0
821
1
타우시간
0
553
1
퀴즈1 1번 질문합니다 !
1
611
1
Page는 Text Data이외에 다른 메모리도 포함하나요?
1
373
0
IPC shared memory 코드
0
519
1
[간단한 질문 ]banker's algorithm 을 linux 에서 실제로 프로세스 관리할때 쓰이나요?
0
402
0
user mode i/o 관련 질문
0
283
1
shared memory 관련해서 질문 드립니다.
0
521
1
교수님 fork()함수에 대해 질문이 있습니다.
0
896
2
process 와 thread
0
375
1
교수님 Docker 로 실습해도 괜찮을까요?
1
867
1
Mac OS에서 Docker 이용하여 Ubuntu 20.04 환경설정 방법 공유
22
3329
2
moniter, condition variable, synchronized에 대해서 궁금한점이 있습니다..
0
675
1
왜 무료인지 이해를 못 하겠네요..
3
433
1
7.1 Classic Problems of Synchronization 질문이 있습니다
0
307
1
공룡책 8판과 10판중
0
610
1
6.3 peterson's solution 질문이 있습니다
0
222
1
08-01 연습문제 8번 질문있습니다!
0
280
0
06. 프로세스간 통신의 실제: Chapter 3. Processes (Part 4) 에 그림 3.16 3.17 실습 오류
0
263
1
안녕하세요 교수님 실습 해봤는데 LINE J가 실행이 됩니다
1
356
1
2강 실습을 위한 개발환경 구축(Windows 10 + WSL 2 + Visual Studio Code)에서 출력오류
0
344
1
아래 질문 관련하여 다시 문의드립니다
0
199
1
Thread & Concurrency (Part 2) 질문드립니다
0
186
1





