목록2025/05 (2)
빙응의 공부 블로그

📝서론 지금까지 락의 개념을 학습하면서 하드웨어와 운영체제의 적절한 지원을 통해 제대로된 락을 만드는 법을 알아보았다. 쓰레드가 계속 진행하기 전에 어떤 조건이 참인지 검사해야 하는 경우가 많다.예를 들어 부모 쓰레드가 작업을 시작하기 전에 자식 쓰레드가 작업을 끝냈는지 검사하기를 원할 수 있다.이런 경우 부모 쓰레드가 특정 조건이 참이 될때까지 잠자면서 기다리는 방법을 선택한다. 그렇다면 조건을 기다리는 법은 무엇일까?조건이 참이 될 때까지 회전을 하며 기다리는 것이 간단하지만 CPU 사이클 낭비가 심하다. 📝정의와 루틴들조건이 참이 될 때까지 기다리기 위해 컨디션 변수를 활용할 수 있다.컨디션 변수는 일종의 큐 자료 구조로서, 어떤 실행의 상태가 원하는 것과 다를 때 조건이 참이 되기를 기다리는 ..

📝서론 병행성에 대한 소개 이후 병행 프로그램의 근본적인 문제 몇 개를 살펴보았다. 여러 개의 명령어들을 원자적으로 실행해보고 싶지만 단일 프로세스의 인터럽트로 인해서 그렇게할 수 없다. 이 장에서는 임계 구역에서 상호 배제를 할 수 있는 것 중 하나인락(Lock)에 대해 알아보자 📝락 : 기본 개념예제를 위해 다음과 같은 임계 영역이 있다고 하자. 전형적인 예제인 공유 변수 갱신이다.banlance = balance + 1; 락은 하나의 변수로 사용한다. 이 락 변수는 락의 상태를 나타내며 사용 가능 상태 & 사용 중 상태가 있다.lock_t mutex; // 글로벌 변수로 선언된 락lock(&mutex);balance = balance + 1;unlock(&mutex); 📌 Pthread 락쓰레..