쓰레드 동기화
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 |