본문 바로가기

Activity/책 리뷰

[리뷰/책] 동시성 프로그래밍

반응형

한 줄 요약 : 병렬처리에 대한 바닥부터 다룬 심화학습 책

 


난 개발을 하며 병렬처리를 해야 할 때면 항상 긴장된다.

내가 원하는 대로 동작을 하지 않을 수도 있다는 두려움 때문이다.

 

왜 병렬처리를 두려워하게 됐을까?

생각해보면 대학교 다닐때도 운영체제, 시스템 구조 시간에 잠깐 배운 것이 전부이기 때문인 것 같다.

예를 들면 '컴퓨터에서 작업 처리는 프로세스 단위로 메모리가 할당되고, 프로세스는 다시 프로세스의 논리적인 작업 단위인 한 개 ~ 여러 개의 스레드로 분할되어 처리된다.' 과 같은 두루뭉술한 내용말이다.

 

나의 두려움과 달리 병렬처리는 숨쉬듯이 사용되고 있다.
하지만 실제 개발을 하면서 병렬 처리를 할 때면 프로그래밍 언어에서 제공하는 메소드 코드를 쓰고, 실행하는 것에 그친다. 

 

이런 나에게 동시성 프로그래밍의 기본부터 다루는 《동시성 프로그래밍》 책은 좋은 참고서가 될 것 같다.

책 《동시성 프로그래밍》은 고급 언어(C, Rust와 같은 사용자 측면에 가까운 언어) 관점에서 사용법을 알려주는 책이라기보다는 동시성 프로그래밍의 기본 원리를 다루고 있다.

물론 설명하는 내용마다 프로그래밍 언어를 이용한 실습 예제도 담고 있다.

 


책 목차는 아래 사진과 같다.

운영체제, 컴퓨터 구조에 대한 내용을 다룬 책을 공부한 적이 있어서인지 목차의 내용은 익숙했다.

 

내용은 이론 설명, 실습 예제 순서로 일반적인 구성이다.

단, 이 책은 독자가 프로그래밍 경험이 있다는 전제로 설명을 이어나가기 때문에 프로그래밍 경험이 없는 독자라면 막막하게 느껴질 수 있다.

실습 코드는 주로 Rust 언어로 되어 있고, 일부는 C 언어로 되어 있다. 해당 언어에 경험이 없더라도 if와 같은 조건문, 함수(메소드) 호출, 변수 선언&할당 등 프로그래밍 경험이 있다면 흐름을 이해하는데에 무리는 없을 것 같다.

하드웨어에 가까운 수준에서 설명하다보니 어셈블리언어도 보이는게 놀라웠다.

 

아래 내용은 운영체제 전공책에 항상 등장하는 '식사하는 철학자' 문제에 대해 다룬 내용이다.

책의 장단점을 소개해야하는데 내가 어려워하던 병렬처리에 대해 전공책보다 더 깊이있게 다루고 있다보니 쉽지 않다.

그래서 병렬처리 경험이 있다면 한 번쯤은 보았을 내용을 다룬 부분을 사진으로 첨부했다.

 

책의 마지막장은 최종 심화 내용이다.

컴퓨터가 병렬(동시성) 작업을 어떻게 처리할지 그 기준이 되는 처리 모델에 대해 다루고 있다.

내가 업무에 사용하는 자바 언어 구현을 쫓아가면 마지막엔 네이티브(native) 코드를 만난다.

업무를 하면서도 '컴퓨터가 알아서 잘 처리해주겠지'라는 안일한 생각으로 넘겼지만 이 책의 내용을 하나 하나 읽다보니  네이티브 코드는 어떻게 구현되는지 궁금증이 다시 떠올랐다.  

 

깊이 있는 내용을 다루다보니 아직 다 읽지는 못했다.

조금씩 읽고 익히다보면 읽겠지?


 

병렬 처리에 대해 막연하게 이론과 그 구성 원리까지 깊이있게 다루는 책이기 때문에 두고두고 볼 생각이다.

만약 이 책을 읽다가 포기할 것 같다면 《7가지 동시성 모델》 부터 읽어보면 좋을것 같다.

내가 읽었던 기억이 맞다면 《동시성 프로그래밍》에 비해 약간 더 넓은 주제를다루고 있지만 난도는 낮기 때문이다.

물론 두 권을 같이 읽으며 부족한 부분을 보충하면 읽으면 좋을것 같다.

 


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

리뷰를 위해 한빛미디어에서 책을 제공받았지만 주관적인 생각을 그대로 적었습니다.

반응형