동기화 3

단순동기화3 - 커널 모드 동기화

2022.05.06 - [언어/C#] - 단순동기화2 (유저 모드 동기화 요소) 커널 모드 동기화 요소 커널 모드 동기화 요소는 유저 모드 동기화 요소에 비해서 상당히 느리다. 왜냐? 커널 모드 동기화 요소가 운영체제에게 스레드 간의 동기화를 요청해서 그렇다. 또한 각각의 메서드들은 커널 객체를 이용하게 되고 이로 인해 스레드가 관리 코드 -> 네이티브 유저 모드 -> 네이티브 커널 모드 (돌아올 때도 역순으로 반복함) 위와 같은 전환을 일으켜 CPU 시간을 엄청나게 소비하기 때문이기도 하다. 그래도 커널 모드 동기화 요소를 쓰는 이유가 있다. 리소스에 대한 경쟁 상태를 확인할 수 있다. 스레드가 CPU를 낭비하지 않도록 한다. 네이티브 스레드와 관리 스레드 사이에서도 동기화를 할 수 있다. 동일 컴퓨터..

언어/C# 2022.05.09

단순동기화2 - 유저 모드 동기화

2022.05.01 - [언어/C#] - CLR 단순 동기화1 CLR 단순 동기화1 스레드 동기화 스레드 동기화는 일반적으로 다수의 스레드가 공유 데이터에 '동시에' 접근하는 경우에도 데이터가 손상되는 것을 막기 위해서 사용된다. 그러나 스레드 동기화는 많은 문제를 tsyang.tistory.com 유저 모드 동기화 요소 CLR은 bool, byte, short, int, float, 참조 타입의 변수에 대해서는 원자적(atomic)으로 값을 읽고 쓸 수 있음을 보장한다. 이게 뭔말이냐면 int x = 0; x = 0x01234567; x 변수가 0x00000000에서 0x01234567로 한 번에 번경된다는 말이다. 즉, 변경 중인 상태의 값을 얻어올 가능성이 없다는 말이다. 엥.. 그럼 아닌 경우도 ..

언어/C# 2022.05.06

멀티플레이 게임과 동기화

CAP 이론 개요 CAP 이론이란 분산 시스템 선택에 도움을 주는 정리이다. Consistency(일관성) : 시스템에 접근하는 누구나 같은 결과를 봄 Availablity(가용성) : 누구나 언제든지 시스템에 접근(읽기/쓰기) 가능 => lock 거는 일이 없다. Partition Tolerance (분할 용인) : 시스템을 분할할 수 있음 (병렬 처리, 멀티쓰레딩) 이며 CAP를 모두 충족하는 시스템은 없다는 것이 핵심이다. 멀티 플레이와 CAP 멀티플레이 게임은 기본적으로 'P'를 충족해야 한다고 볼 수 있다. 그러면 멀티플레이 동기화에 있어서 선택지는 두 개가 남는다. 'A'를 택할 것인지, 'C'를 택할것인지 멀티플레이의 동기화 방식 1. 비동기형 Clash of Clans 같은 게임이 해당된다..

이론/일반 2020.10.11