티스토리 뷰

운영체제

스레드 동기화 정리

jazzmaster 2019. 4. 27. 23:33

1. 유저 모드 동기화 vs 커널 모드 동기화 

   - 유저 모드는 시스템콜을 하지 않기 때문에 성능이 좋음. 다만 기능 제한

   - 커널 모드 동기화는 시스템콜을 하기 때문에 상대적으로 불리. 다만 유저모드에서 사용하지 못하는 기능 사용 가능

 

 

 

1. 유저모드 동기화

- Critical Section : 원하는 영역을 Enter Leave로 잠금

- Interlocked : 전역으로 생성된 단 하나의 변수를 ++ 하거나 -- 하는 것이라면 동기화는 이게 더 낫다. 

                   단 한줄로 동기화가 가능하기 때문

                    LONG interlockedIncrement(LONG volatile* 변수) 

                    LONG interlockedDecrement(LONG volatile* 변수)

                    다른 인터락 함수도 있음 MSDN https://docs.microsoft.com/en-us/windows/desktop/sync/interlocked-variable-access

 

*volatile : 최적화 하지마라(코드 축소하지 말고 그대로 읽어라) , 캐쉬 거치지 말고 그냥 메모리에 직접 연산해라 

 

 

 

 

 

 

2. 커널 모드 동기화

- mutex : 크리티컬 섹션과 비슷한거 같다. 

- 세마포어 : 뮤텍스와 다르게 count 기능이 있음. count만큼의 스레드 접근을 허용한다. count가 1이면 뮤텍스다.

                음.. 뮤텍스 말고는 거의 쓸일이 없을거 같다. 서버 분야에서는...

- Event

 

'운영체제' 카테고리의 다른 글

window 문자와 문자열  (0) 2019.06.07
메모리에 관한 이야기  (0) 2019.04.28
thread 정리  (0) 2019.04.22
커널 오브젝트 , 핸들  (0) 2019.04.21
프로세스 정리  (1) 2019.04.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함