쓰레드 동기화 : 쓰레드 간의 질서가 잘 지켜지고 있음을 의미
쓰레드 동기화의 방법 :
유저 모드 동기화 :
동기화가 진행되는 과정에서 커널 코드가 실행되지 않는다.
커널 모드로의 전환이 이뤄지지 않으므로 성능상에 이점이 있지만 기능상의 제한도 있다.
커널 모드 동기화 :
커널에서 제공하는 동기화 기능을 활용한다.(유저 모드에서 제공하지 못하는 기능을 제공받을 수 있다)
커널 모드로의 전환으로 인해 성능이 저하된다.
두가지 관점에서의 쓰레드 동기화 :
메모리 접근에 대한 동기화 :
쓰레드들의 임계 영역 동시접근을 막아 동기화한다.
(참고 :
임계 영역(Critical Section) : 배타적 접근(한 순간에 하나의 쓰레드만 접근)이 요구되는
공유 리소스(전역변수와 같은)에 접근하는 코드 블록)
(예 :
쓰레드 A, B 가 전역변수 total 에 값을 변경한다.
이 경우 동시에 total 에 접근할 경우 문제가 생길수 있다.
따라서 total 을 변경하는 코드(임계 영역)에 하나의 쓰레드만 접근할 수 있도록 동기화한다)
동기화 기법 :
1. 크리티컬 섹션(Critical Section) 기반의 동기화 - 유저 모드
2. 인터락 함수(Interlocked Family Of Function) 기반의 동기화 - 유저 모드
3. 뮤텍스(Mutex) 기반의 동기화 - 커널 모드
4. 세마포어(Semaphore) 기반의 동기화 - 커널 모드
5. 이름있는 뮤텍스(Named Mutex) 기반의 프로세스 동기화 - 커널 모드
실행 순서의 동기화 :
메모리에 접근하는 쓰레드의 실행순서를 동기화한다.
(예 :
A 쓰레드는 입력을 받는다.
B 쓰레드는 입력받은 것을 출력한다.
그렇다면 A -> B 실행순서가 지켜지도록 동기화해야 한다)
동기화 기법 :
1. 이벤트(Event) 기반의 동기화 - 커널 모드
'Windows > _System Programming' 카테고리의 다른 글
가상 메모리(Virtual Memory) (0) | 2010.03.07 |
---|---|
쓰레드(Thread) 동기화 예제 소스 (0) | 2010.03.06 |
쓰레드(Thread) 실행순서 동기화 (0) | 2010.03.04 |
쓰레드(Thread) 메모리 접근 동기화 (0) | 2010.03.04 |
쓰레드(Thread)의 생성과 소멸 (0) | 2010.02.28 |