티스토리 뷰

전 포스팅에서 Deadlock. 즉, 교착상태에 알아보았으니

이번 포스팅에선 뮤텍스와 세마포어의 차이에 대해 알아보겠습니다.

 

혹시, 데드락에 대해 잘 모르는 상태라면 전 포스팅 또는 하단의 Youtube 강의를 보고 보시면 더 도움이 됩니다!

 

2022.07.19 - [운영체제] - [운영체제] Deadlock (데드락, 또는 교착상태)

 

[운영체제] Deadlock (데드락, 또는 교착상태)

운영체제 기술면접에 대해 공부하다 보면 세마포어와 뮤텍스의 차이를 물어보는 질문이 자주 나옵니다. 이 차이를 알기 전!!!!!!! 세마포어와 뮤텍스를 알기 위해서는 먼저 Deadlock 즉, 교착상태에

odingcoding.tistory.com

https://www.youtube.com/watch?v=Ry_gB34cvwc 

❓ 데드락?

바로 전 포스팅에서 언급했던 것과 같이 데드락이 발생하기 위해서는 다음과 같은 4가지 조건이 필요합니다.

1. 상호 배제 조건

2. 점유 대기 조건

3. 비선점 조건

4. 순환 대기 조건

 

이 중 상호 배제 조건을 해결하기 위한 방법이 바로 뮤텍스(Mutex)와 세마포어(Semaphore)입니다.

 

📚 뮤텍스 (Mutex)

뮤텍스는 mutual과 exclusion의 합성어로, 

여러 스레드를 실행하는 환경에서 자원에 대한 접근에 제한을 강제하기 위한 동기화 메커니즘을 말합니다.

 

1. Boolean 타입의 Lock 변수를 사용하여 자원에 대한 접근을 제한합니다.

2. 임계영역 (critical section)의 자원에 접근하면 해당 스레드는 Lock을 걸어버립니다.

    이 때, 다른 스레드가 공유자원에 접근하면 Blocking 후 대기 큐로 보냅니다.

3. 공유자원 사용을 마친 스레드는 Lock을 해제합니다. Lock 해제는 Lock을 건 스레드만 해제할 수 있습니다.

 

📚 세마포어 (Semaphore)

세마포어는 변수를 통해 접근 가능한 스레드를 제한합니다. 

뮤텍스는 1개의 스레드만 자원을 사용할 수 있었으나, 세마포어 변수만큼 공유 자원에 접근할 수 있습니다.

 

1. 세마포어 변수를 통해 wait, signal을 관리합니다. 세마포어 변수는 0 이상의 정수 값을 갖습니다.

2. 세마포어 변수가 1개인 경우, 뮤텍스처럼 사용이 가능합니다.

3. 뮤텍스와 달리 Lock을 걸지 않은 스레드도 signal을 보내 Lock을 해제할 수 있습니다.

 

 

 

 

'운영체제' 카테고리의 다른 글

[운영체제] Deadlock (데드락, 또는 교착상태)  (0) 2022.07.19
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함