인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

192/89님의 프로필 이미지
192/89

작성한 질문수

개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제

동기화 기법

Mutex Lock도 결국 동기화 문제를 해결하지 못하지 않을까요?

해결된 질문

작성

·

523

·

수정됨

0

우선 질 좋은 강의를 무료로 볼 수 있게 해주셔서 감사합니다.

 

CPU 하나, 쓰레드 1, 2, 3 세 개가 있다고 가정해봅시다.

 

쓰레드 1의 release 함수에서 lock이 false가 되는 순간 2, 3에서 load lock 지시어가 연달아 두 번 실행된다면 모두 while 문을 빠져나오고 두 쓰레드가 동시에 임계 구역에 들어갈 수 있지 않을까요?

답변 1

0

강민철님의 프로필 이미지
강민철
지식공유자

안녕하세요!

(연휴 기간이라 답변이 늦었네요..^^;)

 

강의에서 제시한 뮤텍스 락은 자료에서 언급되었듯

뮤텍스 락의 원리를 이해하기 위한 단순화된 형태입니다.

 

실제로 프로그래밍 언어에서 지원되는 뮤텍스 락은 이보다 복잡하게 설계되는데요,

대표적인 것이

뮤텍스 락의 lock 부분의 구현입니다.

 

특정 작업을 원자적으로 수행하기 위한 CPU의 특별한 명령어들이 있습니다.

하단에 첨부드린 링크가 그 예시입니다. :)

 

예시로 들어주신 2개 이상의 스레드가 한 lock을 두고 경쟁해야 하는 상황이

이런 특정 작업을 원자적으로 수행해야 하는 상황에 속하지요.

(한 스레드가 lock을 acquire하고자 할 때 그 연산은 원자적으로 수행되어야 하니까요)

 

프로그래밍 언어 상에서 지원되는 lock의 경우 이런 원자적 연산을 수행할 수 있도록 구현되어 있습니다.

다만 이 부분은 컴퓨터구조/운영체제 기초 강의에서 다루기에는 조금 딥한 부분이 있어 따로 다루지는 않았슨비다.

좋은 질문 주셔서 감사합니다.

 

https://en.wikipedia.org/wiki/Compare-and-swap

https://developer.arm.com/documentation/dht0008/a/swp-and-swpb/legacy-synchronization-instructions/swp-and-swpb

https://developer.arm.com/documentation/dht0008/a/ch01s02s01

192/89님의 프로필 이미지
192/89

작성한 질문수

질문하기