IT

[북리뷰] 동시성 프로그래밍 (Rust, C, 어셈블리어로 구현하며 배우는 동시성 프로그래밍 A to Z) - 한빛미디어

BoBooBoo 2022. 10. 2. 21:40
반응형

 

 

 

작성일: 2022. 10. 02. 일요일

내용: IT 개발 도서 리뷰

제목: 북리뷰 『동시성 프로그래밍』  (한빛미디어)

저자: 다카노 유키

분야: IT, 프로그래밍, C언어, Rust, 어셈블리어

출간일 : 2022년 04월 05일 출간

 

 

동시성 프로그래밍

Rust 언어를 중심으로 어셈블리어, C 언어를 사용해 CPU 아토믹 처리, 소프트웨어 트랜잭셔널 메모리, async/await 등 동시성 프로그래밍과 관련된 이론적 배경부터 구현까지 설계자 입장에서 살펴본

www.hanbit.co.kr

 

    현업에서 C언어를 사용하게 될 줄은 몰랐는데, 어쩌다보니 꽤 오랜 기간 사용하고 있다. 회사에서는 필요한 기능만 개발하다보니 몇 달 아니 몇 년을 개발을 하고 있어도 별로 실력이 늘지 않는 것 같은 느낌이 들 때가 많다. 그럴때마다 봐야하는 책이나 자료들은 결국 아주 기본이 되는 내용들과 훌륭한 분들이 먼저 가서 만들어 놓은 기술 자료나 책들이라고 생각한다. 실제로 스레드나 멀티프로세싱을 구현하면서 아주 사소한 것들로 인해 안해도 될 삽질을 하게 되는 경우가 종종 있는데 이 또한 기본을 완벽하게 닦지 않아서 일거다. 이번 책 "동시성 프로그래밍" 은 특히 이런 점을 잘 보완해줄 수 있는 책이고 더불어 C와 함께 떠오르는 언어 중 하나인 Rust 와 정말 정말 너무 어려운 어셈블리어까지 함께 공부할 수 있는 좋은 책이었다. 

 

 

동시성 프로그래밍 책으로 C, Rust, 어셈블리어를 모두 학습할 수 있다.

 

    실제 동시성 프로그래밍이라는 것이 사용되는 곳은 무수히 많지만 내부적으로 얼마나 더 완벽하게 구현하는가는 로우 레벨의 언어가 대부분 담당하고 있기 때문에 하이 레벨 언어를 주로 사용하는 경우에는 아주 깊은 내용까지 다룰 필요조차 없는 경우가 많다. 나는 본의 아니게 임베디드와 아주 가까운 일을 하고 있어서 이런 부분을 은근히 접할 수 있어 많은 도움을 받을 수 있는 책이었다. 

 

저수준 언어에서 구현되고 추상화된 고수준 언어에서는 내부를 크게 신경쓰지 않는 경향이 있다.

 

    여러가지 프로그램이 동시에 돌아가기 때문에 동시성 프로그래밍, 병렬 처리가 필요하다고도 볼 수 있지만 그 이전에 우리는 하드웨어의 발전도 생각해야한다. CPU, GPU 와 같이 멀티코어의 수가 점점 더 늘어나면서 우리는 기존의 알고리즘이 가지고 있는 싱글 코어 기반의 로직을 일부 수정해야될 필요가 생겼다. 주어진 자원을 더 효율적으로 사용하기 위해 필연적인 것으로 앞으로 이 코어의 수가 더 늘어난다면 병렬 처리의 중요성은 더욱 커질 것이다. 동시성 프로그래밍에 대해 깊게 알아둘 필요성이 있는 것이다.

 

동시 처리와 병렬 처리의 필요성

 

    다른 무엇보다 정말 궁금했지만 아직 도전하지 않았던 Rust 를 이 책을 통해 아주 가볍게 배울 수 있는 기회가 생겼다. 다음 리눅스에서도 채택되었다고 하는 멋진 언어인데 언젠가 C의 자리를 넘볼 정도로 올라가지 않을까 하는 작은 기대도 있다. 그 때를 대비해서라도 조금은 알아둘 필요가 있을 것이다.

 

Rust 언어에 대해 조금이나마 공부할 수 있다.

 

    Deadlock, Starvation ... 학부생 때 운영체제나 병렬프로그램 관련 수업을 배웠던 기억이 다시 살아나는 단원은 바로 챕터 4 동시성 프로그래밍 특유의 버그와 문제점이다. 학교에서 처음 배울때는 직접 몸으로 부딫혀본 경우가 거의 없었기 때문에 시험을 풀기위해 공부한 부분이 많이 있었다면, 실무에서 문제를 조금 겪고 보니 아주 그냥 엄청난 문제점들이었다. 이 책을 통해 기본을 다시 한 번 공부하면서 다양한 새로운 기법들도 같이 공부해볼 수 있게 되었다.

 

챕터 4 동시성 프로그래밍 특유의 버그와 문제점

 

    간단한 서버를 구현하면서 앞에 공부했던 내용들을 실습해볼 수도 있다. 코드가 잘 나와있기 때문에 그냥 자연스럽게 읽거나 써보면서 따라가면 많은 부분이 이해가 된다. 특히 이 부분에 문제점을 몸소 체험해봤다면 더 많은 자극을 느낄 수 있는 단원이었다.

 

Rust를 이용한 간단한 서버를 구현

 

 

    오랜만에 시간을 많이 내서 깊게 공부해보고 싶은 책이 나와서 정말 좋다. 실제로 내가 일하는 부분에도 많은 부분을 적용할 수 있을 것 같아서 여러번 반복해서 공부할 예정이다. C언어를 아는 사람에게는 더더욱 좋은 책이고 새로운 언어를 동시성 프로그래밍을 통해 배워보고 싶은 분들에게도 (어렵지만) 추천할만한 좋은 책인 것 같다.

 

 

 

끝.

 

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

 

 

 

 

반응형