inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Bài giảng sách khủng long hệ điều hành

15. Các vấn đề cổ điển của điều khiển đồng thời: Chapter 7. Synchronization Examples (Part 1)

자바 Bounded-Buffer 코드 질문 있습니다.

305

jc K

1 câu hỏi đã được viết

0

안녕하세요. 좋은 강의 잘 듣고 있습니다.

 

다름이 아니라 해당 부분 자바 코드에서 의문점이 있어 질문 드려봅니다.

 

synchronized 식별자를 붙인 메서드가 여러 개 있을 때 모니터 락이 각 메서드별로 생기는지 혹은 전체를 관리하는 하나의 모니터 락만 생기는지가 전 강의에서 언급이 되었는지 모르겠지만, 잘 기억이 안나서,, 두 케이스 모두 질문이 드립니다.

 

  1. 모니터 락이 각 메서드별로 생기는 경우

take와 give는 count라는 공유 변수에 접근하고 있다고 생각됩니다. synchronized를 통해 각 메서드별로 mutual exclusive가 지켜지지만, take와 give 사이에서는 race condition 문제가 발생하지는 않나요 ?? 예를 들어 buffer size = 3, count = 1인 경우 give와 take가 동시에 실행될 수 있고, count++과 count--에서 race condition 문제가 발생할 수 있다고 생각했습니다. 직접 테스트 해 본 결과 해당 문제는 발생하지 않았는데, 왜 그런지가 궁금합니다.

 

  1. 모니터 락이 전체를 관리하는 하나만 생기는 경우

하나의 메서드에서 무한정 대기하는 경우가 생길 것 같습니다. 아마 첫 번째 케이스가 맞다고 생각하지만 혹시라도 두 번째 케이스라면, take에서 count=0일 때 while문 안에서 wait()을 하는데, give 메서드가 실행이 되지 않으니 무한정 대기할 것이라고 생각됩니다.

 

쓰다보니 굉장히 길어졌습니다 ㅜㅜ.. 읽어주셔서 감사합니다.

운영체제 동시성

Câu trả lời 0

컨텍스트 스위칭과 PCB

0

146

1

퀴즈 답지

0

215

1

자바 serversocket 관련 질문입니다.

0

152

1

운영체제 공룡책 사려고하는데 원서랑 번역본 중에 어느걸 더 추천하시나요?

0

516

1

java 소켓 통신 예제 질문

0

257

1

코드가 실행이 안됩니다

0

279

1

강사님. 수료 기준이 있을까요?

0

643

1

강의 ppt 제공

0

502

1

강의에서 사용된 Source code는 어디서 볼 수 있을까요?

0

329

1

퀴즈 1번 2번

0

416

2

24:35초에 설명하는 time-sharing이 책에서 다루는 내용과 달라요.

0

396

1

window10 이 아니면 안되나요??

0

692

1

피터슨 알고리즘과 compare_and_swap 명령어 질문입니다

0

581

1

chapter3. Processes(1) pid_t 정의되지 않은 타입

0

655

1

스택 영역의 크기는 정적인가요? 동적인가요?

0

1510

1

코드를 실행할 떄

0

348

1

wsl 오류

0

395

2

ubuntu 에러가 뜹니다.

0

2169

1

멀티 프로세싱 vs 멀티 프로그래밍

1

1258

1

데드락 질문

0

388

1

semaphore 로우레벨 코드 질문

0

506

1

1.운영체제가 뭐길래 7분 58초 질문이요

0

749

1

데드락 관련 질문입니다.

1

515

1

좀비 프로세스와 고아 프로세스

1

1115

1