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

📝서론 다양한 범주의 병행성 문제 해결을 위해서는 락과 조건 변수가 모두 필요하다.이번 장에서는 세마포어라는 동기화 기법을 알아보자 핵심 질문: 세마포어를 어떻게 사용하는가 락과 컨디션 변수 대신에 세마포어를 사용하는 방법은 무엇인가?세마포어의 정의는 무엇인가?이진 세마포어는 무엇인가?락과 컨디션 변수를 사용하여 세마포어를 만드는 것이 가능한가?그 반대로 세마포어를 사용하여 락과 조건 변수를 만드는 것이 가능한가? 📝세마포어 : 정의세마포어는 정수 값을 갖는 객체로서 두 개의 루틴으로 조작할 수 있다. POSIX 표준에서 이 두개의 루틴은 sem_wait()과 sem_post()이다. 세마포어는 초기값에 의해 동작이 결정되기에 사용전에 제일 먼저 값을 초기화해야한다. #include sem_ts..

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