세마포어의 signal() 메서드 질문
241
작성한 질문수 5
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
큰돌님 안녕하세요, 세마포어에 대해 듣는 중에 궁금한 점이 생겨 질문을 남깁니다 !
세마포어의 signal 메서드에서 공유자원 +1을 해준 후에
왜 if(s.value <=0)인가요 ?
공유자원이 >= 0이면 대기열에 있는 프로세스를 꺼내서 작동시킬 수 있는 것 아닌가요 ?
답변 1
0
안녕하세요 재혁님 ㅎㅎ
Q. 세마포어의 signal 메서드에서 공유자원 +1을 해준 후에 왜 if(s.value <=0)인가요 ?
signal 메서드에서 s.value를 1 증가시킨 후 if(s.value <= 0) 조건을 검사하는 이유는 다음과 같습니다:
세마포어 값의 의미: 세마포어 값
s.value는 사용 가능한 자원의 수를 나타냅니다. 이 값이 음수가 되면, 그 절대값은 대기 중인 프로세스의 수를 의미합니다. 예를 들어,s.value가-5라면 5개의 프로세스가 자원을 기다리며 대기 중입니다.자원의 상태 확인:
signal연산이 호출되면s.value는 1 증가합니다. 만약 증가하기 전에s.value가0이나 음수였다면, 증가 후에도 여전히0이하일 수 있습니다. 이 경우, 여전히 대기 중인 프로세스들이 존재한다는 의미이며, 이들 중 하나를 깨워 작업을 계속하도록 해야 합니다.프로세스의 활성화:
if(s.value <= 0)조건이 참이면, 이는 아직 대기 큐에 프로세스가 남아있다는 것을 의미합니다. 따라서 이 조건을 통해 대기 큐에서 프로세스를 깨우고 작업을 계속할 수 있도록 합니다.
결국, if(s.value <= 0) 조건은 signal 연산이 실행된 후에도 여전히 대기 상태인 프로세스들이 있는지 확인하고, 그런 프로세스들이 있다면 활성화시키는 역할을 합니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
REST API (Self-descriptive messages)
0
26
1
시스템 엔지니어 관련 질문입니다.
0
52
2
오버라이딩 관련하여 질문드립니다.
0
62
2
교착상태의 4가지 필요조건이 필요충분조건이 아닌 이유
0
90
1
렌더 트리, 렌더 레이어와 그래픽 레이어
0
57
2
로컬스토리지, 세션스토리지, 쿠키의 공통점
0
68
1
IPv4가 IPv6보다 빠른 경우
0
99
2
UDP가 전송계층의 역할을 못하는 건 아닌지
0
59
1
Path MTU 발견하였음에도 패킷 분할이 필요한 이유?
0
65
2
교재의 LFU 알고리즘에서 6번이 왜 히트인가요?
0
64
2
페이지 교체 알고리즘? 프레임 교체 알고리즘?
0
81
2
Static 키워드가 메모리에 올라가는 시점
0
77
2
헤더 압축부분 질문드립니다
0
73
2
공유 캐시 관련 질문 드립니다.
0
56
2
컨텍스트는 context와 contextual information으로 나눠진다는게 무슨뜻인가요?
0
200
1
회선과 대역폭의 관계
0
62
2
44강 질문
0
93
2
버스 토폴로지 질문 있씁니다
0
55
1
자바스크립트, xml 문법 관련
0
66
2
전략패턴과 의존성주입 질문
0
69
2
Model이 비즈니스 로직을 담당하나요?
0
106
2
CS 공부 하는 법
0
181
2
큰돌님 블로그에 개념정리해서 올려도될까요!
0
137
2
FIN 세그먼트 질문
0
70
2





