본문 바로가기

동기화2

동기화_High level Synchronizations Tools(Semaphore, Mutex, Monitor) High level mechanism 여러개의 프로세스(스레드)들이 공유자원에 동시에 접근하여 비의도적으로 공유자원의 값이 변경되거나 오염되는 상황을 race condition이라 합니다. Synchronization(동기화)란, 이러한 상황을 방지하기 위한 기법으로 하나의 프로세스가 Critical section을 실행하고 있을 때 다른 프로세스는 접근하지 못하도록 막는 개념입니다. (자세한 설명은 여기에) 본 포스팅에서는 User level에서 사용되는 동기화 기법들에 대해 소개합니다. Semaphore Semaphore는 공유자원에 동시에 접근할 수 있는 프로세스의 수를 정수형 변수로 나타냅니다. 이를 공유 자원에 접근할 수 있는 티켓이라고 생각하면 이해하기 쉽습니다. Semaphore 에서는 프로.. 2022. 6. 15.
동기화_Race condition, Synchronization Synchronization Problem(Critical Section Problem) 일반적으로, 여러 프로세스(쓰레드)는 데이터를 공유하여 사용합니다. 이 때, 여러 프로세스(쓰레드)가 공유 자원에 동시에 접근하게 된다면 비의도적으로 공유 자원의 값이 변경되거나 오염될 수 있습니다. 이러한 상황을 Race condition이라고 하는데, 두 예시를 통해 해당 상황을 자세히 설명해보겠습니다. 공용 계좌에서의 인출 사람 A와 B가 잔액이 100만원인 공용 계좌를 가지고 있고, 각각 10만원씩 인출하려고 합니다. 계좌에서 특정 금액을 인출하는 과정은 다음과 같습니다. void withdraw(account, amount) { balance = get_balance(account); //계좌 잔액 불러오기.. 2022. 6. 14.