공부를 끄적끄적/책 리뷰

동시성 프로그래밍: 그 시작을 위해

공돌이J 2022. 4. 26. 20:42

서론

개발을 하다보면 언젠가는 작성한 프로그램의 성능적 한계를 만나게 됩니다. 이는 알고리즘적 비효율성으로 인해 야기 되었을 수도, 언어적 한계로 인해 발생했을 수도 있습니다. 알고리즘적 한계를 개선하고 난 후에도 더 높은 성능이 요구된다면, 요구사항을 만족시키기 위해 우리는 동시성 프로그래밍을 고려할 수 있습니다. 혹자는 ‘그냥 multiprocessing 라이브러리 사용하면 되는거 아니야?’라고 생각할 수도 있지만, 이해 없이 사용하게 되면 원치 않는 동작이 야기됨으로써 시스템의 안정성을 보장할 수 없게 됩니다. 이러한 관점에서 바라볼 때, 이 책은 동시성 프로그래밍을 처음 입문하기에 적절한 책이라고 생각됩니다.

이 책의 내용

책의 첫 단원에서는 프로세스, 그리고 동시성과 병렬성에 대해서 설명합니다. 사실 병렬성과 동시성이 같은 개념이라고 생각하는 경우도 많을 것 같은데, 이 책에서는 그림과 함께 두 용어의 차이점에 대해 설명하고, 카테고리를 나누어 세부적으로 설명합니다. 이후 동시 및 병렬 처리의 필요성에 대해서 설명한 후, 어샘블리어와 근래에 부상하고 있는 RUST언어를 간단하게 설명합니다.

이후 뮤텍스, 세마포어 등의 개념과 동시성 처리 알고리즘을 C의 Pthread 라이브러리를 이용하여 구현된 코드와 함께 제공하는데, 코드의 가독성이 높아 주석이 따로 필요 없을 뿐 아니라, 개념 설명 이후 등장하는 그래프 형태의 그림들이 이해를 돕는데 큰 역할을 해 주었습니다. 또한 비동기 프로그래밍으로 인해 발생할 수 있는 버그들과 해결할 수 있는 방법들을 제시하면서 처음 구현할 때 닥칠 문제상황들을 대비할 수 있었습니다.

전반적으로 보면 개념을 소개하기 전에 예시를 통해 독자의 이해를 도와주는데, 읽다보면 정말 적절한 예시를 들었다라는 생각이 들었습니다.

추천합니다

  • 동시성 프로그래밍을 통해 프로그램의 성능을 높이고자 하는 개발자
  • 동시성 프로그래밍을 수학적으로 이해하고 싶은 분
  • OS단에서 동시성을 다루고자 하는 분

추천하지 않습니다

  • 코딩 입문자 및 CS 비전공자
  • 수학적 표현에 어려움을 느끼시는 분

 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."