• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

세마포어 sleep(), wakeup() 질문

21.09.25 22:11 작성 조회수 417

0

안녕하세요 교수님, 세마포어 방식에 대해 질문 드리고 싶은 게 있습니다.

busy waiting의 낭비를 막기 위해서 S 값에 따라 프로세스가 스스로 sleep() 하고 다른 프로세스를 wakeup() 시키는 동작에 대해서 설명해주셨는데요.

이 방식은 critical section에 대한 mutex를 보장받을 수는 있지만 프로세스 스케쥴링 자체에도 영향을 미치는 것이잖아요?

그렇다면 이런 방식을 사용할 때는 별 다른 스케쥴링 방식 없이 이것만으로 스케쥴링을 수행하는 건가요?

아니면 기본적으로 스케쥴링 방식은 존재하지만 세마포어가 스케쥴링에도 영향을 미치는 방식으로 혼용되어 사용되는 것인가요?

감사합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요?

 

질문 사항은 세마포어와는 관련이 없어 보이네요.

busy waiting과 wait/signal 방식의 차이에 대한 질문 같습니다.

busy waiting은 프로세스가 CPU를 점유하면서 자원을 대기하는 것이고,

wait/signal은 프로세스가 CPU를 점유하지 않고 자원을 대기합니다.

후자가 훨씬 효율적인 방식이란 것은 명백하죠.

 

하지만 스케줄러는 busy waiting을 하든, wait/signal을 하든

CPU를 요청하는 프로세스에게 CPU를 할당하는 역할을 담당합니다.

질문한 대로 답변하자면, 별도의 스케줄링 알고리즘이 있는 것이 아니라,

기존의 스케줄링 알고리즘을 사용해서 프로세스의 CPU 할당을 담당하는 것이 

스케줄러의 역할이고, 프로세스가 busy or non-busy waiting 방식을 선택해서

CPU와 자원 할당을 요청하는 것이라고 이해하시면 되겠습니다.

 

 

임현강님의 프로필

임현강

질문자

2021.09.26

주말인데도 답변 달아주셔서 감사합니다 교수님.

좋은 하루 되세요.