[TIL] Today I Learned

최동근·2023년 6월 14일
0

안녕하세요 TIL 세번째 시간입니다. 2023/06/14 배운것을 정리해보겠습니다 👨‍💻

1. Mutex 와 Record Lock 의 차이

Shared Resources(공유 자원) 에 대한 Concurrency(동시성) 문제는 여러 프로세스 또는 쓰레드가 동시에 공유 자원에 접근하려고 할 때 발생합니다.
물론 Concurrent 하게 여러 프로세스 및 쓰레드로 동작하는 방식은 굉장히 효율적이지만 이러한 문제를 야기합니다 🤔

이때 Mutex(상호 배제)record lock(레코드 잠금) 은 공유 자원의 안전한 동시 접근을 보장하기 위해 사용되는 동기화 매커니즘입니다.

Mutex

Mutex 는 상호 배제라는 개념을 기반으로 한 동기화 매커니즘입니다. 특정 순간에는 오직 하나의 프로세스 혹은 쓰레드 만이 특정 자원에 접근할 수 있도록 제어합니다.
만약 특정 프로세스 혹은 쓰레드가 공유 자원에 접근하려면 먼저 Mutex 을 획득해야 하고, 접근이 끝나면 Mutex를 해제해야 다른 프로세스 및 쓰레드가 접근가능합니다 🔐

해당 이미지는 Mutex 의 동작원리를 소개하는 이미지입니다.

Record Lock

Record Lock 은 주로 데이터베이스 시스템에서 사용되는 동기화 매커니즘입니다.
Record Lock 은 데이터베이스의 특정 데이터 레코드에 대한 동시 접근을 제어하는데 이때 레코드 잠금에는 Writer Lock(쓰기 잠금)Reader Lock(읽기 잠금) 으로 나뉩니다.

잘 생각해보면 여러 읽기 작업은 데이터베이스의 상태를 변화시키는 것이 아니라 단순히 기존의 데이터 레코드를 읽어오는 것이기에 읽기 작업끼리는 상호 배제적으로 제어할 필요가 없습니다.
따라서 읽기 작업에는 Shared Lock 을 제공하며 쓰기 작업 요청이 들어오는 경우에는 Exclusive Lock(=Mutex) 을 제공합니다.
만약 쓰기 작업 요청으로 Exclusive Lock 이 걸린 경우 다른 쓰기 작업은 물론 읽기 작업 또한 Blocking 됩니다 🔥

정리하자면 Mutex 는 엄격한 동기화 제어 매커니즘으로 어떤 Process 든지 one by one accesses 만 허용합니다. Mutex 는 안전성 측면에서 보았을때 매우 뛰어난 매커니즘이지만,
효율성 측면에서는 떨어지는 매커니즘입니다. 데이터베이스 작업을 보았을 때 약 80%는 읽기 작업이기 때문입니다.
Record LockMutex 의 이러한 비효율적인 측면을 개선해서 읽기 작업과 쓰기 작업에 따른 Lock 을 다르게 제공하는 매커니즘입니다.

🔐 Writer's lock(Exclusive Lock)

  • Mutex for writers.
  • Same as the original Mutex
  • When writing, the writing process is protected from all other writers & readers

🔐 Reader's lock(Shared Lock)

  • A special Mutex for readers
  • At the time when a reader requests the reader's lock, the reader can join if previous readers are currently accessing the shared resource
  • But, At the time when a reader requests the reader's lock, the reader must wait if a previous writer is accessing the shared resource
profile
비즈니스가치를추구하는개발자

0개의 댓글