반응형

LOCK 3

OS : Spin Lock

학부 수업 내용을 필기한 내용입니다. 필자가 이해를 제대로 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분이 있다면 댓글로 이야기하여 수정하게 해 주시면 감사하겠습니다. SPIN LOCK 이전 포스팅에서 본 Interrupt를 켜고 끄는 LOCK 방식의 단점을 극복한 SPIN LOCK에 대해 알아보자 단순히 구현하여 실패한 예시부터 LOCK에 성공하기 위해 여러 기계어와 결합한 다양한 버전까지 보자. 실패 예시 - Just Using Loads/Stores Line 1을 보면, Lock이 어떠한 구조체로 구현되어있다. LOCK에 걸렸는지 안걸렸는지 나타내는 flag 변수가 있다. 초기화의 경우에는 flag을 0 , LOCK을 풀어놓는다. LOCK을 거는 것은8~11번 라인을 보자. 직접 ..

OS : Lock - Controlling Interrupts

학부 수업 내용을 필기한 내용입니다. 필자가 이해를 제대로 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분이 있다면 댓글로 이야기하여 수정하게 해 주시면 감사하겠습니다. Controlling Interrupts Lock을 구현하는 방법(1) - Interrupts를 켜고 끈다 Lock을 거는데 왜 Interrupts는 끄고 킬까? 이에 대해서는 지난번 병행성 문제가 발생했던 상황의 Thread Trace를 살펴보자. 보면 T1이 ADD 까지 진행된 상태에서 Interrupt가 발생하여 T2로 넘어가면서 문제가 발생했다. 그렇다면 Critical Section에 진입하면서 Interrupt를 Disable 하게 되면? Interrupt에 의한 스레드 교환은 발생하지 않을 것이고 그에 따라 ..

OS : Locks - The Basic Idea

학부 수업 내용을 필기한 내용입니다. 필자가 이해를 제대로 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분이 있다면 댓글로 이야기하여 수정하게 해 주시면 감사하겠습니다. 이번에는 LOCK에 대한 기본적인 개념과, LOCK 구현의 평가기준에 대해 알아볼 것이다. 저번 포스팅에서 여러 스레드가 4번 라인을 실행하려 할 때 Race Condition이 발생한다고 했다. 그 이유는 이와 같이 4번 라인의 과정이 Atomic 하지 않기 때문이다. 그 결과 Indeterminate가 된다. 이러한 문제를 해결하기 위해서 나온 것이 바로 LOCK이다. 위의 코드를 보면 기존 Critical Section의 위아래로 새로운 코드가 추가되어있다. 이것이 LOCK인데, 이러한 처리를 해 줌으로써 하나의 스..

반응형