inflearn logo
강의

Course

Instructor

Operating System Dinosaur Book Lecture

13. Mutex and Semaphore: Chapter 6. Synchronization Tools (Part 3)

semaphore 로우레벨 코드 질문

506

tjdans10312635

5 asked

0

여기서 value가 임계구간에 들어갈 수 있는 키의 갯수라 생각합니다. wait에서 키가 없으면, P를 sleep 시킨다 돼 있어서요.

(근데, 키 갯수라 생각하면 sleep 할지도 모르는데, 키 를 하나 빼고 wait 검사하는 것도 이상합니다.
'S->value--' 코드가 왜 들어간건지를 모르겠어요. 그냥 조건문 'S->value <= 0' 만 있어야 하는데..)

그러면, signal은 프로세스 하나가 키를 반납한 상황인데, 조건문이 키 갯수가 양수여야( 'S->value > 0') wait 큐에서 P 하나를 ready 큐로 데리고 오는게 말이 맞다고 생각합니다.

제가 잘못이해한걸까요?


운영체제 동시성

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴이에요.

Semaphore(세마포어)의 value는 indeed, “임계구간에 들어갈 수 있는 키의 갯수”를 의미합니다. Semaphore는 프로세스들 간의 공유 자원을 보호하기 위해 사용되며, 특히 임계구간에 들어가기 위해 키를 얻어야 하는 상황에서 사용됩니다.

wait 함수에서 키가 없으면 해당 프로세스를 sleep 시키는 것은 맞습니다. 그리고 wait 함수에서는 ’S->value–’ 코드가 들어가는데, 이는 키를 하나 빼는 작업을 수행하고 있습니다. 키를 하나 뺀 결과가 음수라면, 즉 키가 없다면 해당 프로세스는 sleep 상태로 전이됩니다.

signal 함수는 특정 프로세스가 키를 반납한 상황을 나타냅니다. signal 함수가 호출되면 ’S->value++’ 코드를 실행하여 Semaphore의 value를 1 증가시킵니다. 그리고 조건문 ’S->value > 0’이 성립할 때, 즉 키 갯수가 양수일 때 해당 프로세스를 wait 큐에서 꺼내어 ready 큐로 이동시킵니다.

즉, 잘 이해하셨습니다. Semaphore의 value는 키의 갯수를 나타냅니다. wait 함수는 키가 없으면 프로세스를 sleep 시키고, signal 함수는 키를 반납한 후 해당 프로세스를 ready 큐로 이동시킵니다.

더 궁금하신 사항이 있으시다면 언제든지 물어보세요. 좋은 하루 되세요!

컨텍스트 스위칭과 PCB

0

146

1

퀴즈 답지

0

215

1

자바 serversocket 관련 질문입니다.

0

152

1

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

0

516

1

java 소켓 통신 예제 질문

0

256

1

코드가 실행이 안됩니다

0

279

1

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

0

641

1

강의 ppt 제공

0

502

1

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

0

329

1

퀴즈 1번 2번

0

416

2

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

0

396

1

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

0

304

0

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

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

0

749

1

데드락 관련 질문입니다.

1

515

1

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

1

1115

1