Search
⌨️

[Win] Thread or Process Synchronization

Date
Select
Tags

# Introduce

프로세스, DLL간의 통신 구간을 알아보다 Mutex, 임계 영역(Critical Section) 등을 보게 되어 해당 부분에 대해 재대로 공부하고 정리하게 되었습니다.

# Synchronization

운영체제에서 특정 메모리에 프로세스, 스레드가 동시 접근을 할 때 메모리의 원자성이 깨지지 않도록 임계 영역에서 작업을 해주는 것을 말하며 각각의 스레드 또는 프로세스가 임계 영역에서 작업을 끝내기 전까지 다른 스레드나 프로세스가 임계 영역에 접근을 제어하는 것을 의미합니다.
화장실을 예시로 많이 들며, 화장실 칸을 A가 사용 할 경우 B가 화장실에 들어가지 못하는 것을 생각하면 됩니다.

## synchronization techniques

윈도우에서 제공하는 메모리 동기화 기법은 User Level과 Kernel Level로 나뉘어 지고, 각각 장단점이 존재합니다.
유저 레벨에서 이루어지는 동기화는 커널 레벨까지 접근하지 않아 속도가 빠르다는 장점이 있습니다. 그러나 커널 오브젝트를 생성하지 않고 프로세스 내부에서 돌아가기 때문에 프로세스 간 공유가 불가능합니다.
커널 레벨에서 이루어지는 동기화는 커널 오브젝트를 생성하여 프로세스, 스레드간 공유가 가능한 장점이 있습니다. 하지만 유저 레벨에 비해서 속도가 느린 단점이 있습니다.
- User Level - Critical Section - InterLocked Func - Etc ... - Kernel Level - Mutex - Semaphore - Event - Etc...
해당 포스팅에서는 User Level 의 Critical Section, InterLocked Func 과 Kernel Level의 Mutex, Semaphore, Event를 구현하여 테스트 하였습니다.

## User Level Synchronization

유저 레벨의 동기화 코드를 각각 작성 해 보았습니다. 참고로 사용하시길 바랍니다.