inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

운영체제 공룡책 강의

14. 모니터와 자바 동기화: Chapter 6. Synchronization Tools (Part 4)

모니터 질문

307

akakakakak

작성한 질문수 83

1

안녕하세요 교수님, 모니터 관련 질문 드릴 게 있습니다.

 

질문 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()을 메서드로 선언해도 되겠지요?

이 경우는 모니터라고 보면 되겠습니다.

 

이렇게 개념을 잡고 다시 모니터 부분을 들여다 보면 나머지 문제는 해결이 될 것 같습니다.

노파심에서 말하지만, 비유는 비유일 뿐, 이 설명이 정확하다고는 생각마시고,

교재 내용을 천천히 음미하면서 읽어보면 좀 더 깊은 이해가 가능할 것 같습니다.

 

0

akakakakak

한 번에 이해는 잘 안 되지만 답변주신 내용 토대로 더 생각해보겠습니다.
감사합니다!

퀴즈 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