기술면접

#3 신입 프로그래머 기술(실무) 면접준비 [운영체제]

91MS 2017. 9. 23. 00:26

#3 신입 프로그래머가 필요한 기본 소양

# 운영체제

세마포어와 뮤텍스에 대해 각각 설명하고 차이점에 대해 설명해보아라.

  • 세마포어(Semaphore)
    • 운영체제 또는 프로그램 작성 내에서 공유 자원에 대한 접속을 제어하기 위해 사용되는 신호이다.
    • 공유자원에 접근 할 수 있는 최대 허용치만큼만 동시에 사용자 접근이 가능하다. 
    • 쓰레드들은 리소스 접근 요청을 할 수 있고 세마포어에서는 카운트가 하나씩 줄어들게 되며 리소스가 모두 사용중인 경우(카운트 0) 다음 작업은 대기를 하게 된다.
  • 뮤텍스(Mutex)
    • 상호배제, 제어되는 섹션에 하나의 쓰레드만을 허용하기 때문에 해당 섹션에 접근하려는 다른 쓰레드들을 강제적으로 막음으로써 첫번째 쓰레드가 해당 섹션을 빠져나올 때 까지 기다린다. 
    • 대기열(큐) 구조라고 생각하면 된다.
  • 차이점
    • 세마포어는 뮤텍스가 될 수 있지만 뮤텍스는 세마포어가 될 수 없다. 
    • 세마포어는 소유 불가능이지만 뮤텍스는 소유가 가능하다.
    • 동기화의 갯수가 다르다.

 

 

 

 

 

출처 : http://myeonguni.tistory.com/1496