inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

뮤텍스, 세마포어, 모니터 ★★★

세마포어의 signal() 메서드 질문

241

이재혁

작성한 질문수 5

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 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) 조건을 검사하는 이유는 다음과 같습니다:

  1. 세마포어 값의 의미: 세마포어 값 s.value는 사용 가능한 자원의 수를 나타냅니다. 이 값이 음수가 되면, 그 절대값은 대기 중인 프로세스의 수를 의미합니다. 예를 들어, s.value-5라면 5개의 프로세스가 자원을 기다리며 대기 중입니다.

  2. 자원의 상태 확인: signal 연산이 호출되면 s.value는 1 증가합니다. 만약 증가하기 전에 s.value0이나 음수였다면, 증가 후에도 여전히 0 이하일 수 있습니다. 이 경우, 여전히 대기 중인 프로세스들이 존재한다는 의미이며, 이들 중 하나를 깨워 작업을 계속하도록 해야 합니다.

  3. 프로세스의 활성화: 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