Sync 2

#024_WIndow_System_커널 모드 동기화 객체_세마포어

안녕하세요 삽잡이입니다. 이번 시간에는 커널 모드 동기화 객체중 세마포어에 대해서 알아보려고 합니다. 매개변수로는 다른 커널 오브젝트들과 같이 처음에는 속성을 받습니다.그 다음으로는 자원의 개수들을 할당 받습니다.그러니까... 두번째 인자로는 사용가능한 자원의 개수, 그 다음으로는 최대 자원의 개수마지막 인자로는 세마포어의 이름을 인자로 받습니다. 키를 쥐고 있다가, 필요가 없어지면 반환을 해야하듯이,세마포어에서는 ReleaseSemaphore 함수를 사용합니다. 키를 반환하면 카운트를 증가시킵니다.즉, CreateSemaphore 에서 생성한 키의 개수를 사용한 다음에 다시 반납하니 숫자를 증가 시키겠죠... 뭔말이냐하면... 세마포어는 소유 개념이 없습니다.즉, 뮤텍스와 조금 개념이 다르다는 것입니다..

#021_WIndow_System_쓰레드 동기화

안녕하세요 삽잡이입니다. 지난 시간에 멀티 쓰레드들이 공유 메모리를 접근할 때발생하는 문제점을 어떻게 해결할지에 대해서 생각해보는 시간을 가졌었습니다. 이번 시간에는 동기화에 대해서 알아보도록 하겠습니다.지난시간의 예시를 잠깐 살펴보도록 하겠습니다. 다수의 쓰레드가 있을 때 A라는 쓰레드는 Write 중이고,다른 쓰레드들이 Read 중이라고 가정해보겠습니다. 이때 공유하고 있던 메모리가 수정이 되는 일이 발생함으로, 쓰레드들은 자신이 모르는 사이에 데이터가 변경됨으로 혼란이 옵니다.따라서 Memory Fault가 발생되는데,이를 해결하기 위해 서로 데이터가 호환 가능하도록 해야합니다.이를 우리는 동기화라고 부르게 되는 것입니다.쓰레드에서는 공유 변수, 공유 메모리, 공유 데이터에 대한 동기화 부분이 가장..