반응형 Synchronization2 Synchronization 2 이전 글에서는spinlock 방법을 알아봤다. 하지만 이 방법은 프로세스가 대기하고 있는 동안 다른 프로세스를 실행할 수 없다거나(busy waiting) 사이클 낭비를 초래하게 되는 단점이 있었다. 그리고 모든 프로세스가 critical section(cs로 줄임)에 들어가야 한다는 bounded wating 또한 충족할 수 없었다. spinlock방법은 컨텍스트 스위칭이 발생하지 않기 때문에(어쨌든 프로세스는 바뀌지 않고 lock을 얻으려고 시도하니깐) cs의 길이가 짧은 경우에는 더 유리하긴 하다. 이 글에서는 그렇지 않은 경우에 더 유리한 synchronization을 high-level 수준에서 구현한 방법들에 대해 알아볼 것이다. Semaphores 이전 글에서의 spinlock 방법말고 b.. 2022. 4. 21. Synchronization 1 멀티프로그래밍, 멀티쓰레드 환경에서는 다양한 문제가 발생할 수 있다. 예를 들어 프로세스들이 공유 메모리에 접근하려고 하기 때문에 실행 때마다 다른 결과가 나오는 race condition이 발생할 수 있다. 이같은 문제를 해결하기 위한 방법을 synchronization이라고 한다. synchronization이 필요한 이유를 예시로도 한번 살펴보자. Ex 1. Bank Account fig 1-1을 보자. 계좌(acct_t)들이 있고 이 계좌는 각각 잔액(balance)정보가 있다. 또 인출(trans_t)정보들이 있고 그 안에는 id(user account)나 amount(얼마를 인출할건지)등의 정보들이 있다. 그리고 이 잔액을 인출하는 debit 함수가 있다. 이를 보면 이 예제는 계좌의 잔액을 .. 2022. 4. 19. 이전 1 다음 반응형