* 이 글은 쉬운코드에 올린 동기화(synchronization) 관련 영상들이 개념적으로 어떻게 연결되는지 전체 그림을 설명하기 위한 목적으로 작성됐습니다
* 위에서부터 차례대로 영상을 보시는 것을 추천합니다
프로세스 & 스레드 개념 파악하기
이 부분을 이미 잘 알고 있다면 뛰어넘어도 괜찮은 부분이다
스레드가 어떤 이유에도 대중적으로 사용됐는지 그리고 프로세스와 어떤 관계에 있는지를 알고 있어야
동기화가 왜 필요한지 설명할 때 더 잘 이해할 수 있다
여러 스레드가 같은 데이터에 접근했을 때 생기는 일
같은 프로세스에 속한 여러 스레드는
따로 어떤 조치 없이도 데이터를 공유해서 쓰는 것이 가능하다
대신 공유 데이터를 그냥 막 변경하다 보면 예상치 못한 결과가 나올 수 있다
그리고 이 문제를 해결하는 것이 동기화(synchronization)다
영상에서는 동기화 없이 동작할 때 생길 수 있는 일을 살펴보고,
이를 방지하기 위한 장치인 동기화 개념을 배우게 된다
(critical section과 mutual exclusion 개념도 함께 배우게 된다)
👉 " 동기화 하지 않을 때 생기는 일 " 영상 보러 가기
👉 " 운영체제에서 락(lock)을 배우는 이유 " 글 보러 가기
동기화에 사용되는 락 종류
동기화를 위해 사용되는 것이 락(lock)이다
락의 종류는 다양한데 대표적으로
spinlock
mutex
semaphore
이렇게 3대장이 존재한다
영상을 통해 이 세 개의 락이 무엇인지 간단한 코드와 함께 배우게 된다
모니터
3대장 중에 뮤텍스와 condition variable을 조합하여
개발자가 락을 보다 더 사용하기 좋게 고도화한 것이 모니터(monitor)다
자바에서는 모든 객체가 모니터를 하나씩 가지고 있도록 설계했다
이번 영상에서는 모니터가 어떻게 동작하는지 살펴보고
자바에서는 모니터가 어떻게 적용됐는지도 설명한다
데드락
락을 써서 동기화를 하다 보면
여러 스레드가 서로 락을 쥐기 위해 기다리게 되면서
더 이상 진행하지 못하는 상태인 데드락(deadlock : 교착상태)에 빠지게 된다
이 영상에서는 데드락의 발생 조건과 어떻게 해결할 수 있는지를 다룬다
운영체제에서 배우는 동기화의 이론적인 베이스를 탄탄하게 하기 위해 만든 영상입니다
데이터베이스에서 트랜잭션을 배울 때 락이 사용되기 때문에
이 내용을 잘 알고 있으면 나중에 데이터베이스의 isolation을 배울 때도 조금 더 편하게 이해할 수 있습니다
쉬운코드는 언제나 기본에 충실합니다