반응형
크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널
경매하는 개발자
크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널
전체 방문자
오늘
어제
  • 분류 전체보기 (329)
    • IT (128)
      • 아두이노 (6)
      • C C++ (17)
      • C C++ 컴파일 에러 (3)
      • LINUX (3)
      • Git (1)
      • OpenGL (0)
      • IT 상식 (38)
      • EXCEL & VBA (9)
      • 정보처리기사 (20)
      • 무작정 웹사이트 만들기 (6)
      • 포토샵 (3)
      • 파이썬 & vscode (16)
      • 머신러닝 & 인공지능 & 데이터사이언스 (5)
    • 부동산 (91)
      • 부동산일반 (31)
      • 세금 (6)
      • 경매 (46)
      • 법, 소송 (8)
    • 개인사업자 (43)
      • 할 일 (11)
      • 꿀팁 (9)
      • 세금 (14)
      • 지원사업 (8)
    • 독후감 (25)
      • 독후감 (25)
    • 경제 (4)
      • 거시경제 (4)
    • Tistory (34)
      • 티스토리 (23)
      • 애드센스 (11)
    • 기타 (4)
      • 에세이 (2)
      • 퇴사준비 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 티스토리애드센스
  • 전입신고
  • 확정일자
  • 부의추월차선독후감
  • 일반과세자
  • 공매
  • 온비드공인인증서
  • 부의추월차선
  • 개인사업자
  • 온비드공매
  • 온비드공동인증서
  • 경매
  • 부의추월차선서평
  • 세금계산서
  • 부의추월차선요약
  • 애드센스
  • 부의추월차선줄거리
  • 부가가치세
  • 부의추월차선리뷰
  • 전자세금계산서

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널

경매하는 개발자

[IT 상식] 뮤택스 vs 세마포어 차이
IT/IT 상식

[IT 상식] 뮤택스 vs 세마포어 차이

2022. 9. 28. 22:20
반응형

[IT 상식] 뮤택스 vs 세마포어 차이

반응형

 


프로세스 간 메시지를 전송하거나, 공유메모리를 통해 공유된 자원에 여러 개의 프로세스가 접근하면 문제가 발생할 수 있다.

이를 해결하기 위해 데이터를 한 번에 하나의 프로세스만 접근하도록 제한을 두는 동기화를 취해야 한다.

동기화 도구에는 대표적으로 세마포어(Semaphore)와 뮤텍스(Mutex)가 있다.

이들은 모두 공유된 자원의 데이터를 여러 스레드/프로세스가 접근하는 것을 막는 역할을 한다.

​

뮤텍스(Mutex)

  • 공유된 자원의 데이터 혹은 임계영역(Critical Section) 등에 하나의 프로세스 혹은 Thread만 접근하도록 함 (동기화 대상이 하나)
  • 임계영역(Critical Section)을 가진 스레드들의 실행시간(Running Time)이 서로 겹치지 않고, 각각 단독으로 실행되도록 하는 기술
  • 한 프로세스에 의해 소유될 수 있는 key를 기반으로 한 상호배제 기법으로, key를 소유한 스레드/프로세스만이 공유자원에 접근할 수 있음
  • 공유 리소스에 대한 접근을 조율하기 위해 동기화(Synchronization) 또는 락(Lock)을 사용함으로써 뮤텍스 객체를 두 개 이상의 프로세스/스레드가 동시에 사용할 수 없음

​

반응형

 

뮤텍스에 대한 실생활 예시

뮤텍스는 화장실이 하나밖에 없는 식당과 비슷합니다. 화장실에 가기 위해서는 카운터에서 열쇠를 받아 가야 하며, 누군가가 화장실을 가려고 하는데 카운터에 키가 있으면 화장실에 사람이 없다는 뜻이고, 그 열쇠를 이용해 화장실을 들어갈 수 있습니다.

​

 

카운터에 열쇠가 없다면, 화장실에 사람이 있다는 뜻으로, 화장실을 사용할 수 없습니다. 사람이 나올 때까지 기다려야 합니다.

​

곧이어 다른 사람도 화장실에 가려고 카운터에 대기하고 있습니다. 앞사람이 화장실에서 나와 카운터에 키를 돌려 놓았습니다. 이제 기다리던 사람들 중 맨 앞에 있던 사람이 키를 받아 화장실을 갈 수 있습니다.

​

이것이 뮤텍스가 동작하는 방식입니다. 화장실을 사용하는 사람은 프로세스 혹은 쓰레드이며 화장실은 공유자원, 화장실 키는 공유자원에 접근하기 위해 필요한 어떤 오브젝트입니다. 즉, 뮤텍스는 Key에 해당하는 어떤 오브젝트가 있으며, 이 오브젝트를 소유한 (쓰레드, 프로세스) 만이 공유자원이 접근할 수 있습니다.

​

반응형

 

​

세마포어(Semaphore)

  • 공유된 자원의 데이터 혹은 임계영역에 여러 프로세스 혹은 쓰레드가 접근하는 것을 막아줌 ( 동기화 대상이 여러 개 )
  • 사용하고 있는 스레드/프로세스의 수를 공통으로 관리하는 하나의 값을 이용하여 상호배제를 달성
  • 공유 자원에 접근할 수 있는 최대 허용치만큼 동시에 프로세스/스레드가 접근할 수 있음
  • 자원을 사용하지 않는 상태가 될 때, 대기하던 프로세스/스레드가 즉시 자원을 사용하고, 이미 다른 프로세스/스레드에 의해 사용중이라는 사실을 알게 되면, 재시도 전에 일정시간 대기해야 함
  • 일반적으로, 비교적 긴 시간을 확보하는 리소스에 대해 사용하게 됨

​

반응형

 

세마포어에 대한 실생활 예시

​

세마포어는 손님이 화장실을 좀 더 쉽게 이용할 수 있는 레스토랑입니다. 세마포어를 이용하는 레스토랑의 화장실에는 여러 개의 칸이 있고, 화장실 입구에는 현재 화장실의 빈 칸 개수를 보여주는 전광판이 있다고 가정합니다.

만약 누군가 화장실에 가고 싶다면, 입구에서 빈칸의 개수를 확인하고, 빈 칸이 1 이상이라면 빈칸의 개수를 하나 뺀 다음, 화장실로 입장해야 하며, 나올 때 빈 칸의 개수를 하나 더해줍니다.

​

모든 칸에 사람이 들어있을 경우 빈 칸의 개수는 0이 되며, 이 때 화장실에 들어가고 싶은 사람이 있다면, 빈 칸의 개수가 1 이상이 될 때까지 기다려야 합니다.

​

이 처럼 세마포어는 공통으로 관리하는 하나의 값을 이용하여 상호배제를 달성합니다. 세마포어도 뮤텍스처럼 화장실이 공유자원이며, 사람들이 쓰레드 혹은 프로세스입니다. 그리고 화장실의 빈칸의 개수는 현재 공유자원에 접근할 수 잇는 쓰레드/프로세스의 개수입니다.

​

​

반응형

 

뮤텍스와 세마포어의 차이

​

  1. 동기화 대상의 개수
  • 뮤텍스와 세마포어의 목적은 특정 동기화 대상이 이미 특정 스레드에 의해 사용중일 경우 다른 스레드가 해당 동기화 대상에 접근하는 것을 제한하는 것으로 동일하지만, 동기화 대상이 몇 개인가에 따라 차이가 발생
  • 뮤텍스는 동기화 대상이 오직 1개, 세마포어는 동기화 대상이 1개 이상일 때 사용

​

2. 자원 소유

  • 뮤텍스는 자원을 소유할 수 있지만, 세마포어는 자원 소유 불가
  • 뮤텍스는 상태가 0,1 뿐이므로 Lock을 가질 수 있음

​

3. 해제 기능

  • 소유하고 있는 스레드만이 이 뮤텍스를 해제할 수 있음
  • 반면, 세마포어는 세마포어를 소유하지 않는 스레드가 세마포어를 해제할 수 있음

​

4. 생존 기간

  • 세마포어는 시스템 범위에 걸쳐 있고, 파일 시스템 상의 파일로 존재하지만, 뮤텍스는 프로세스의 범위를 가지며, 프로세스가 종료될 때 자동으로 Clean Up 됨

​

​

반응형

 

​

​

뮤텍스와 세마포어만으로 동기화 문제를 모두 해결할 수 있는 것은 아니다!!

  • 뮤텍스와 세마포어 모두 데이터의 무결성을 보장할 수는 없기에 모든 교착상태를 해결하지 못함.
  • 따라서, 좀 더 복잡한 매커니즘을 적용해 개선된 성능을 가질 수 있도록 하는 것이 중요함

 

반응형

'IT > IT 상식' 카테고리의 다른 글

[IT 상식] 웹, 앱으로 수익화하는 방법 (feat. 조코딩)  (1) 2022.11.26
[IT 상식] Edge 새 탭 페이지 변경하는 방법  (0) 2022.10.31
[IT상식] 노트북 PC 윈도우 안전모드 부팅 방법  (0) 2022.09.01
[IT 상식] c드라이브 용량 큰 파일 찾는 방법 (Tree Size 이용)  (0) 2022.08.20
[IT 상식] 버즈 프로 컴퓨터에서 헤드셋으로 사용하기(PC버전)  (0) 2022.08.14

    크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널

    'IT/IT 상식' 카테고리의 다른 글
    • [IT 상식] 웹, 앱으로 수익화하는 방법 (feat. 조코딩)
    • [IT 상식] Edge 새 탭 페이지 변경하는 방법
    • [IT상식] 노트북 PC 윈도우 안전모드 부팅 방법
    • [IT 상식] c드라이브 용량 큰 파일 찾는 방법 (Tree Size 이용)
    크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널
    크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널
    크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널입니다.

    티스토리툴바