운영체제: 13. 뮤텍스와 세마포어

Поделиться
HTML-код
  • Опубликовано: 10 дек 2024

Комментарии • 12

  • @joonion
    @joonion  2 года назад +3

    20:15 오류 정정: 다익스트라는 네덜란드 사람이고 Proberen과 Verhogen은 네덜란드어라고 합니다. ^_-;

  • @typescripter
    @typescripter 2 года назад

    교수님 항상 좋은 강의 감사합니다. 34:29 의 signal 부분의 if condition 이 0보다 클때로 바뀌어야하지않을까요 자원이 있을때 비로소 웨이팅큐에있는 프로세스를 깨워줘야하는것 아닌가요?

    • @typescripter
      @typescripter 2 года назад

      코드는 0보다 작거나 같다가 맞는것 같습니다.
      작거나 같다면 이미 웨이팅큐에 대기하고있는 것들이 있다는 지표로 이해하면 될까요?

    • @joonion
      @joonion  2 года назад

      웨이팅 큐에 대기하느냐보다는 세마포어를 획득한 프로세스가 세마포어를 릴리즈했느냐를 기준으로 생각하는 것이 좋을 듯하네요.

    • @typescripter
      @typescripter 2 года назад

      @@joonion 어떤 말씀인신지 잘 모르겠습니다 ㅠ 왜 if 컨디션에서 0보다 작거나 같아야하는지 설명가능하신가요??

    • @eezz_
      @eezz_ 2 года назад

      세마포어의 자원이 value개라고 생각하고,
      다른 쓰레드들이 자원을 다 가져가서 0인 상태에서.
      1번 쓰레드가 진입 할 때 wait을 하여 크리티컬 섹션에 대기하기 위해 문 앞 리스트에 등록하고 자고 있고,
      이전에 자원을 받은 쓰레드들이 크리티컬 섹션을 나올 때, signal을 호출해서 문 앞 리스트에서 1번을 꺼내서 깨우는 관점으로 보시면 이해 될 것 같습니다

    • @뒹굴-m5e
      @뒹굴-m5e Год назад

      1. signal()이 호출되는 경우 우선 자원 반납을 하기 위해 S→value의 값을 증가시킵니다.
      2. S→ value의 값이 0보다 작거나 같은 경우에는, 대기큐에서 기다리고 있는 프로세스가 존재한다는 뜻이므로 추가적으로 프로세스를 대기 상태에서 준비상태로 바꿔주는 작업까지 해줘야 합니다.
      이 때 value가 0인 경우 1개의 프로세스가 대기하고 있다는 뜻이고 0보다 작은 경우에는 value의 절댓값 + 1 만큼의 프로세스가 대기하고 있다는 뜻입니다.

  • @hodublack1119
    @hodublack1119 3 года назад +2

    믿고보는 교수님 강의 ~! 선댓글 후감상입니당 ㅎㅎ

    • @joonion
      @joonion  3 года назад

      매우 고마운 말씀이네요! ^^;

  • @jaemoon1999
    @jaemoon1999 2 года назад +1

    교수님 이번강의도 잘 봤습니다!
    혹시 28분 00초에 s1을 실행하고 바로 signal을 호출하는데 wait를 호출하지 않고 signal을 호출할 수 있나요?
    만약에 안된다면 wait를 호출해야 하는데 호출을 한다면 초기 값이 0이라 교착상태에 빠지지 않나요?

    • @joonion
      @joonion  2 года назад

      wait이나 signal은 동기화 기능이므로 언제든 호출이 가능해야 합니다. 그러니 함수 내부에서 예외 처리를 해주죠. 예로, signal은 대기 중인 프로세스가 있으면 깨워 주도록 하면 됩니다.

  • @rbgusdlza
    @rbgusdlza 2 года назад

    10/18 좋은 강의 감사합니다!