인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Samuel Jeon님의 프로필 이미지
Samuel Jeon

작성한 질문수

운영체제 공룡책 강의

05. 프로세스간 통신: Chapter 3. Processes (Part 3)

메세지 패싱에 대해 질문이 있습니다.

작성

·

310

1

안녕하세요 교수님!

프로젝트를 하다가 연구 방향에 대해 궁금한 점이 있어서

질문드립니다.

 

공유 메모리(Shared-memory)가 아니라 메세지 패싱 방식을 이용해서 다자간(생산자, 소비자 각 3명 초과 > 3) 생산자 소비자 문제에 대한 해결 방법을 코딩으로 구현해야 하는 데요.

 

세마포어를 이용하여 자원 관리를 하고, 타임스탬프를 통해, 큐에 들어온 지 오래된 것부터 소비해야합니다. 이런 경우, 어떻게 접근해야 할까요? 

답변 1

0

주니온님의 프로필 이미지
주니온
지식공유자

답변이 너무 늦었네요.

 

질문에 약간 오해의 소지가 있습니다만,

위 질문에서 유추한 해결 방법은 어렵지 않을 것 같습니다.

 

1. 메시지 패싱 방식이다.

순수한 메시지 패싱 방식이라면 송신자가 수신자를 지정해서 메시지를 던지면 되므로, 

단순한 바이너리 세마포어(뮤텍스)로도 충분할 것 같습니다.

 

2. 타임스탬프를 통해 큐를 관리해야 한다.

단일 큐를 사용한다면, 굳이 타임스탬프를 사용할 필요는 없겠지요?

큐 자료구조를 구현하고 push/pop을 하면 되니까요.

그렇다면, 마찬가지로 바이너리 세마포어(뮤텍스)로도 충분할 것 같습니다.

 

운영체제 / 프로그래밍 언어별로 큐잉과 세마포어의 지원이 약간씩 다르므로

이것이 최적의 해결책이다, 라고 말씀드릴 순 없지만,

질문하신 상황은 동기화 메커니즘을 충분히 이해했다면

해결책이 몹시 복잡한 상황은 아니므로, 단순하게 생각하시면 쉽게 풀리실 것 같습니다.

 

Samuel Jeon님의 프로필 이미지
Samuel Jeon
질문자

감사합니다 교수님!! :)

Samuel Jeon님의 프로필 이미지
Samuel Jeon

작성한 질문수

질문하기