5/28 CS APP 12장 동시성 프로그래밍

JK·2023년 5월 28일

CS APP(Computer Systems: A Programmer's Perspective)의 12장 "Concurrency: Mutual Exclusion and Synchronization"은 동시성 프로그래밍에 대한 내용을 다루고 있습니다. 이 장에서는 여러 스레드 또는 프로세스가 동시에 실행될 때 발생할 수 있는 문제와 이를 해결하기 위한 상호 배제와 동기화에 대해 설명합니다.

  1. 동시성과 병행성:
    동시성(Concurrency): 여러 작업이 동시에 실행되는 것처럼 보이는 개념입니다. 여기서 작업은 스레드나 프로세스로 표현될 수 있습니다.
    병행성(Parallelism): 실제로 여러 작업이 동시에 병렬로 실행되는 개념입니다. 병렬성은 동시성을 달성하기 위한 한 가지 방법입니다.

  2. 동시성 문제:
    경쟁 조건(Race Condition): 둘 이상의 스레드가 공유 데이터에 동시에 접근하고 수정하는 경우 예측할 수 없는 결과가 발생할 수 있습니다.
    상호 배제(Mutual Exclusion): 공유 데이터에 대한 동시 접근을 제어하여 경쟁 조건을 해결하는 메커니즘입니다.

  3. 상호 배제:
    임계 영역(Critical Section): 상호 배제가 필요한 코드 영역으로, 동시에 접근해서는 안 됩니다.
    잠금(Locking): 임계 영역에 진입하기 전에 잠금을 획득하고, 임계 영역을 빠져나올 때 잠금을 해제합니다.

  4. 동기화:
    동기화 기법(Synchronization Mechanism): 여러 스레드 간의 실행 순서나 동시 접근을 제어하기 위해 사용되는 메커니즘입니다.
    세마포어(Semaphore): 정수 변수를 사용하여 동시에 접근 가능한 스레드의 수를 제어합니다.
    뮤텍스(Mutex): 잠금과 해제 동작으로 상호 배제를 구현하는 동기화 기법입니다.

  5. 데드락과 교착상태:
    데드락(Deadlock): 서로가 기다리는 상태에 있는 스레드나 프로세스의 집합으로, 진행이 멈춘 상태입니다.
    교착상태(Deadlock): 데드락이 발생한 상황을 의미합니다.

이러한 개념들은 동시성 프로그래밍에서 중요한 역할을 합니다. 상호 배제와 동기화 기법을 올바르게 이해하고 적절하게 활용하여 동시성 문제를 해결할 수 있습니다. CS APP의 12장은 이러한 개념과 기법에 대한 심층적인 설명과 예제를 제공하므로, 해당 장을 참고하시면 더 자세히 이해하실 수 있습니다.


책을 공부하면서 어려웠던 점은 코드 예제 이해, 추상적인 개념 이해, 그리고 실전 예제 부족이었습니다. 코드 예제는 낯설거나 복잡해서 이해하는 데 어려움을 겪었고, 추상적인 개념은 복잡성으로 인해 이해하기 어려웠습니다. 그래도 꾸준히 공부하면 된다는 생각으로 앞으로도 열심히 공부해보겠습니다!

profile
^^

0개의 댓글