chp***
2022-09-25

Rust 언어를 중심으로 어셈블리어, C 언어를 사용해 CPU 아토믹 처리, 소프트웨어 트랜잭셔널 메모리, async/await 등 동시성 프로그래밍과 관련된 이론적 배경부터 구현까지 설계자 입장에서 살펴본다.
동시성과 병렬성은 다르다
이 책은 처음부터 동시성과 병렬성에 대해 설명하고 있다. 사실 동시성/병렬성 두 용어를 혼재하여 사용했다.
하지만 책에서는 학부 시절 '운영체제' 과목에서 배웠을 프로세스 라이프사이클에 빗대어 설명하고 있다.
즉, 프로세스는 실행상태 ↔︎ 대기상태 전이하는 경우가 있는데 [ 실행~대기~실행 ] 상태에 있는 것을 '계산 중 상태'라 하며 2개 이상의 프로세스가 동시에 '계산 중 상태'에 있는 것을 "동시성" 이라고 한다.
반면에 순수하게 2개 이상 프로세스가 '실행상태'에 놓여 있는 것을 "병렬성" 이라고 설명하고 있다.
이 정도로 친절하게 설명해볼께
도서는 어셈블리어, C, Rust 언어로 기본 적인 내용을 알려주고 주로 Rust 언어를 통해 설명하고 있다.
어셈블리어로는 학부 시절 '시스템 프로그래밍' 에서 배웠던 add, ldr, mov 등 (오랫만에 들어보는) 기본적인 어셈블리어에 대해 설명하고, C언어에는 Pthreads, Rust언어에서는 전체적인 기능을 간단히 설명하고 있다.
도서 전반에 걸쳐 설명을 진행하면서 위의 3가지 언어를 적절히 사용하여 설명하고 있다.
사실 이번 도서는 끝까지 완독하지 못했다.
도서는 친절하고 부드럽게 설명을 하고 있는데, 개인적으로는 학부시절 전공 서적을 읽는 듯한 거부감(?)이 들었다.
이 또한 나의 내공이 부족함이렸다 ㅠㅠ
동기 처리에 대해 관심을 가지고 있다면 (어쨌든 나보다 내공이 뛰어날테니) 본 도서를 읽어봄도 나쁘지 않을 것 같다!
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.