일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 자료구조
- 코테 문제
- 포스코 ai 교육
- 컴퓨팅사고
- 초소형머신러닝
- 영상처리
- BFS
- 삼성코딩테스트
- dfs문제
- 알고리즘
- 임베디드 딥러닝
- tinyml
- 삼성역테
- 코테
- 포스코 AI교육
- bfs문제
- 삼성코테
- TensorFlow Lite
- 코딩테스트
- tflite
- DP문제
- 삼성역량테스트
- MCU 딥러닝
- 그리디
- DP
- dfs
- 포스코 교육
- sort
- 다이나믹프로그래밍
- 딥러닝
- Today
- Total
코딩뚠뚠
[OS공부] 뮤텍스/세마포어/크리티컬섹션 개념 본문
세 기법은 운영체제가 지원하는 동기화 객체의 종류이다.
OS에 쓰레드 동기화가 왜 필요할까?
컴퓨터에서의 자원은 제한되는 특성을 갖지만 시스템은 여러 프로세스를 동시에 실행하면서
각각 프로세스들은 자원들을 차지,점유하려는 시도를 한다.
이를 관리할 시스템이 없다면 프로세스간 충돌이 빈번할 것이다.
이 포스팅의 내용은 이런 문제를 해결하기 위해 운영체제에 도입된 객체를 활용하는 방법이다.
운영체제가 제공하는 동기화용 커널객체에는 뮤텍스,세마포어,이벤트 등이 있으며,
사용자모드 동기화 객체로 크리티컬 섹션이 존재한다.
- 뮤텍스(Mutex) 기반의 동기화 (메모리 접근 동기화)
- 세마포어(Semaphore) 기반의 동기화 (메모리 접근 동기화)
- 크리티컬 섹션(Critical section) 기반의 동기화
1. 뮤텍스 (Mutex , Mutual Exclusion, 상호 배제)
뮤텍스는 상호 배제를 뜻하며 공유자원의 데이터 또는 임계영역에 프로세스 혹은 스레드가 접근하는것을 막아준다.
뮤텍스 개념 예시
- A, B를 보호하는 뮤텍스 M을 생성
- 스레드는 A, B 접근 전 M에 요청
- 스레드가 A, B에 엑세스
- 엑세스 후 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 |