쓰레드 동기화

Server/Winodw Network 2015. 11. 11. 14:04

쓰레드 동기화

 

쓰레드 동기화는 순서에 있어서 질서가 잘 지켜지고 있음을 의미하는 동기화이다.

 

실행순서의 동기화

- 쓰레드의 실행순서를 정의하고, 이 순서에 반드시 따르게 하는 것이 쓰레드 동기화이다.

 

메모리 접근의 동기화

- 한 순간에 하나의 쓰레드만 접근해야 하는 메모리 영역이 존재한다.

- 데이터 영역과 힙 메모리이다.

 

쓰레드 동기화의 두 가지 방법

유저 모드 동기화

- 동기화가 진행되는 과정에서 커널의 힘을 빌리지 않는 동기화 기법

- 동기화 위해서 커널모드로의 전환이 불필요하기 때문에 성능상의 장점이 있다.

- 단점은 기능상의 제한이 있다.

 

커널 모드 동기화

- 커널에서 제공하는 동기화 기능 활용하는 기법

- 동기화에 관련된 함수가 호출될 때마다 커널 모드로의 변경이 필요하고, 성능의 저하가 생김

- 유저모드에서 제공받지 못한 기능을 사용할 수 있다.

 

 

Critical Section  접근 동기화

 

예를 들어서 전역변수 g_total에 접근하는 연산을 둘 이상의 쓰레드가 동시에 작업을 수행하려고 하면 문제가 발생한다. 이러한 문제를 일으키는 코드 블록을 임계 영역(Critical Section)이라고 한다.

 

** 임계영역은 배타적 접근이 요구되는 공유 리소스에 접근하는 코드블록을 의미한다.

 

6가지의 동기화 기법

 

 

'Server > Winodw Network' 카테고리의 다른 글

이벤트 기반 동기화  (0) 2015.11.11
Signaled vs Non-Signaled  (0) 2015.11.11
Overlapped 모델(1)  (0) 2015.10.25
스레드의 우선순위 컨트롤  (0) 2015.10.12
프로세스, 스레드의 우선순위  (0) 2015.10.08
admin