관리 메뉴

기억을 위한 기록들

[CS] 스레드 동기화 관련 (크리티컬 섹션/뮤텍스/세마포어 등) 본문

CS

[CS] 스레드 동기화 관련 (크리티컬 섹션/뮤텍스/세마포어 등)

에드윈H 2021. 11. 17. 15:18

- 크리티컬 섹션(임계 구역/치명적 영역) : 운영체제가 지원하는 동기화 방법. 공유자원의 독점을 보장.


스레드 동기화는 2가지 방법이 있다.
- 유저모드 동기화 : 커널 기능 사용 x -> 크리티컬 섹션
- 커널모드 동기화 : 커널로 전환 후 행함.(유저 모드보다 많은 기능) ->뮤 텍스, 세마포어, 이벤트 등

기능 : 유저모드 < 커널 모드
속도 : 유저모드 > 커널 모드

유저 모드 특징 : 커널 객체 사용 x/서로 다른 프로세스 간 접근 불가/내부적 인터락 함수 사용/ 


3개 비교(크리티컬 섹션/ 뮤텍스/ 세마포어) : 

1. 크리티컬 섹션은 커널 객체가 아니라 가볍고 빠르다. 한 프로세스 내의 스레드 사이에서만 동기화 가능. 보통의 경우 가볍고 쉽게 쓸 수 있는 동기화 객체.

2. 뮤텍스는 커널 객체 사용. 크리티컬 섹션보다 무겁다. 크리티컬 섹션이 한 프로세스 내의 스레드 사이에서 동기화가 가능한 반면, 뮤텍스는 여러 프로세스의 사이 동기화 가능.

뮤텍스를 가장 흔히 사용하는 예 : 프로세스 다중 실행을 막을 때, 크리티컬 섹션은 불가능.


3. 세마포어는 커널객체. 크리티컬/뮤 텍스는 동기화 함에 있어서 동시에 하나의 스레드만 실행되게 하는데 반해, 세마 포어는 지정된 수만큼의 스레드가 동시 실행되도록  동기화하는 것 가능.
지정된 수보다 작거나, 같을때까지 스레드 실행. 지정된 수 넘으면 스레드 실행 막음.



크리티컬 섹션 원리 : 현재 수행중인 스레드가 크리티컬 섹션을 벗어나기 전까지는 동일 리소스에 접근하려고 하는 다른 리소스를 스케줄 하지 않게 된다.



*유저모드 vs 커널모드
유저모드 : 유저가 접근할수 있는 영역을 제한적으로 두고, 프로그램 자원에 함부로 침범하지 못하는 모드.
일반적인 코드를 작성하고 프로세스를 실행하는 등. 

커널 모드 : 모든 자원(드라이버, 메모리, cpu 등)에 접근, 명령할 수 있습니다. 유저모드와는 비교 안되게 컴퓨터 깊숙히(?) 다룰수있다(?)
메모리 접근, cpu명령 실행 등 (ex. device, file system, memory 등)


서로의 전환되어가며 진행.( ex. 유저모드에서 프로세스 진행되다가 System Call을 통해 커널모드로 전환 요청 등)

'CS' 카테고리의 다른 글

동기적과 비동기적이란  (0) 2022.11.08
입/출력 관련 속도 비교  (0) 2021.01.12
가상 메모리- 4개의 영역  (0) 2020.12.25