inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

POSIX named semaphore 자원이 제대로 해지되지 못한 상태로 프로세스가 종료됐을 때 해당 semaphore 재사용 방법

미해결

리눅스 IPC 프로그래밍 - 이론과 실습

안녕하세요. 커리어를 위해 해당 업무를 수강하는 개린이(개발자 어린이)입니다. 구현 중 해결되지 못한 사항이 있어 질문 남깁니다. 현재 구현하고 있는 상황은 두 개의 프로세스(A.exe, B.exe)가 임계영역에 접근하기 위해 posix named semaphore를 사용해 동시성을 지키고 있는 예제를 만들었습니다. named semaphore를 1개 만들어 두 개의 프로세스에 번갈아 소유권을 넘겨 임계영역에 접근하는 예제입니다. 따라서 두 프로세스의 코드는 동일합니다. 같은 이름으로 만들어진 named semaphore가 있다면 EEXIST 에러를 조건문으로 걸어 이미 생성된 named semaphore를 사용하도록 예외처리를 해놓은 상태입니다. 여기서 하나의 프로세스(B.exe)가 named semaphore의 소유권을 가지고 있던 상태에서 갑작스러운 상황에 비정상적으로 종료된다면, 즉 named semaphore의 자원을 정상적으로 sem_post(sem) 하지 못한 상태에서 프로세스가 종료되는 상황에서 다시 해당 프로세스를 동작시켰을 때, 기존에 사용됐던 named semaphore가 정상 동작하지 않는 것을 확인했습니다. 제가 생각했을 땐 비정상적으로 프로세스가 종료되면서 메모리 어딘가에 해당 named semaphore 주소값이 있고 그 주소값을 가져오지 못해 생기는 메모리 낭비의 영역인 것 같습니다. 이런 경우에, 프로세스가 비정상적으로 종료된 경우에 같은이름으로 선언된 naemd semaphore를 재사용하는 방법이나 예외처리나 파라미터 flag 값들이 있다면 지식을 나눠주시면 감사하겠습니다.

  • linux
  • 프로세스불안정종료
  • 자원사용불가능
damingu 댓글 2 좋아요 0 조회수 250

인기 태그

인프런 TOP Writers

주간 인기글