본문 바로가기
공부/OS 공부

[OS공부] 뮤텍스/세마포어/크리티컬섹션 개념

by 로디네로 2022. 11. 17.
반응형

 

세 기법은 운영체제가 지원하는 동기화 객체의 종류이다.

 

OS에 쓰레드 동기화가 왜 필요할까?

 

컴퓨터에서의 자원은 제한되는 특성을 갖지만 시스템은 여러 프로세스를 동시에 실행하면서

각각 프로세스들은 자원들을 차지,점유하려는 시도를 한다.

 

이를 관리할 시스템이 없다면 프로세스간 충돌이 빈번할 것이다.

이 포스팅의 내용은 이런 문제를 해결하기 위해 운영체제에 도입된 객체를 활용하는 방법이다.

 

운영체제가 제공하는 동기화용 커널객체에는 뮤텍스,세마포어,이벤트 등이 있으며,

사용자모드 동기화 객체로 크리티컬 섹션이 존재한다.

 

 

  1. 뮤텍스(Mutex) 기반의 동기화 (메모리 접근 동기화)
  2. 세마포어(Semaphore) 기반의 동기화 (메모리 접근 동기화)
  3. 크리티컬 섹션(Critical section) 기반의 동기화

 


 

 

1. 뮤텍스 (Mutex , Mutual Exclusion, 상호 배제)

뮤텍스는 상호 배제를 뜻하며 공유자원의 데이터 또는 임계영역에 프로세스 혹은 스레드가 접근하는것을 막아준다.

 


 

뮤텍스 개념 예시

 

  1. A, B를 보호하는 뮤텍스 M을 생성
  2. 스레드는 A, B 접근 전 M에 요청
  3. 스레드가 A, B에 엑세스
  4. 엑세스 후 M에 A, B 자원 해제를 알림
  • 화장실이 하나인데 두 사람이 사용하려 할 때의 예시를 많이 들기도 한다.

 

상태

 

Signaled : Key를 가져갈 수 있는 상태 (접근가능)

Non-Signaled : 다른 스레드가 사용중이여서 Key를 가질 수 없는 상태

 

 


 

 

2. 세마포어 (Semaphore)

세마포어는 공유자원의 데이터 또는 임계영역에 여러 프로세스 혹은 스레드가 접근하는것을 막아준다.

 

뮤텍스보다 큰 개념으로 세마포어의 자원 엑세스를 1개로 설정하면 뮤텍스와 같다.

 


 

뮤텍스와 차이점

 

  • 뮤텍스는 동기화 대상이 1개 일 때 사용, 세마포어는 여러개일 때 사용한다.
    • 즉 화장실이 여러개일 뿐이다. 꽉차면 동일하게 사용하지 못한다
  • 세마포어는 파일 형태로 존재, 뮤텍스는 프로세스 범위를 가져서 프로세스가 종료될때 자동종료된다.
  • 뮤텍스는 뮤텍스 M 을 가진 스레드만 해제할 수 있는데 세마포어는 다른 스레드가 세마포어 카운트값을 감소시켜줄 수 있다.

 


 

세마포어 종류

 

Binary Semaphore

상호 배제, 프로세스 동기화의 목적

 

Count Semaphore

초기에 동시진행 가능한 프로세스 개수를 정의

 

 


 

 

3. 크리티컬섹션 (Critical Section)

 

이 용어는 두개의 의미로 사용된다.

 

1. 영역에 대한 정의인 "임계영역"

- 둘 이상의 스레드가 동시에 실행될 경우 생길 수 있는 동시 접근 문제를 발생시킬 수 있는 코드블록

 

2. 임계영역 문제를 해결하기 위한 "동기화 기법"

- 멀티 프로세서의 각 프로세서가 데이터를 공유하며 수행될 때 접근 가능한 프로그램 코드 영역으로 공유자원에 대한 독점 사용을 제공하는 역할을 한다.

 


 

특징 : 

 

  • 특정 임계영역에 대한 키(크리티컬 섹션 오브젝트) 를 가져야만 임계 영역에 접근하도록 하는 것이다.
  • 동일 프로세스 내 스레드 사이에서만 동기화 가능
  • 커널객체가 아닌 사용자 객체이므로 뮤텍스 세마포어에 비해 가볍고 빠르다
  • 먼저 접근한 스레드는 락을 획득하고 그 이후 접근 스레드는 대기시킨다. 이 때 작업 스레드 교환에 따른 컨텍스트 스위칭 비용이 발생한다.

 

 

 

반응형

'공부 > OS 공부' 카테고리의 다른 글

[OS 공부] 캐시의 지역성  (0) 2021.03.09
[OS 공부] 가상 메모리  (0) 2021.02.12
[OS 공부] 메모리 관리 전략  (0) 2021.02.06
[OS 공부] 프로세스 동기화  (0) 2021.01.27
[OS 공부] 동기&비동기  (0) 2021.01.17

댓글