메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

[서평] 동시성 프로그래밍

myjar***

|

2022-04-24

동시성 프로그래밍

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

  • 저자 : 다카노 유키
  • 번역 : 김모세
  • 출간 : 2022-04-05

1074.jpg

 

동시성 프로그래밍에 대한 책이 많지 않아 그와 관련된 지식을 많이 쌓을 수 없었지만, 이번에 만난 다카노 유키님의 펴낸 '동시성 프로그래밍'이란 책을 만나 조금 어려운 내용이었어도 동시성 프로그래밍에 대해 어느 정도 지식을 쌓을 수 있었다.

 

동시성 프로그래밍이란 의미를 구글링해서 찾아보면 여러개의 작업 또는 쓰레드를 효율적으로 사용하도록 만드는 프로그래밍을 뜻한다. 이는 하드웨어, OS, 라이브러리와 많은 관련이 있는데, 대부분 저수준 언어로 구현되므로 추상화된 고수준 언어에서는 신경쓰지 않는 부분이 있기는 하다.

하지만 저자는 '동시성 프로그래밍'이 무엇인가?에 대한 질문에는 쉽게 답할 수 없다고 한다. 그것은 추상적인 이미지를 떠올릴 수는 있지만, 구체적으로 '이런 것이 동시성'이다라 표현하기는 쉽지 않다고 한다.

 

그래서 이 책은 동시성 프로그래밍의 구조를 이해하고 이를 통해 동시성 프로그래밍의 본질적인 어려움에 도전할 수 있도록 쓰였다고 한다. 이 책을 통해 동시성 개념을 이해하고, 동시성 프로그래밍이 갖는 독특한 특징(동기 처리, 레이스 컨디션, 락, 비동기 처리, IO 다중화, 멀티태스킹 등), 어셈블리 언어와 알고리즘, 계산 모델 등 광범위한 주제를 접할 수 있게 한다.

 

1075.jpg

 

이 책에 사용된 예제는 주로 Rush라는 언어로 작성되었고, 간혹 C언어나 어셈블리 언어로 작성되었다. Rust는 동시성 프로그래밍 관점에서 심사숙고해 만들어진 프로그래밍 언어이며, 저자가 예제의 언어로 선택한 이유를 책을 읽으면서 이해하게 될 것이라고 한다. 아무래도 Rust는 처음 접하는 언어이다보니 주로 사용하는 C언어와는 이해하는데 시간이 많이 걸렸다. 그리고 로우 레벨의 소스코드와 그와 관련된 기술이다보니, 오래전 배운 내용들을 다시 꺼내는데도 오래 걸렸다. 업무에 사용하지 않는 기술들이긴 하지만, 너무 모르고 살았다는 자책감이 들기도 했다. 하지만 동시성 프로그래밍을 이해하면서 이 책을 읽으니 예전에 배웠던 지식이 조금씩 살아나는 것 같았다.

 

​책 속에서도 동시성 프로그래밍에 대한 기술적인 설명뿐만 아니라 그 기술을 구현한 소스 코드에 대해 설명하는 공간을 많이 할애한 것 같다. 긴 설명보다는 다이어그램이나 소스 코드에 대한 설명이 독자들에게 더 이해를 높여주기 때문일 것이다. 이 책의 대상독자도 초보자가 아닌 소프트웨어 구현 단계의 대학생, 대학원생, 사회인이다. 그러기 떄문에 어느정도 지식을 갖추고 이 책을 임해야 할 것이다.

책에서 사용된 코드는 역자의 깃허브를 통해 다운로드 받을 수 있다.

https://github.com/mosekim/concurrent_programming

 

​시스템의 안정 및 하드웨어의 성능 및 OS의 최적화를 위해서 동시성 프로그래밍을 꼭 공부해보는 것을 추천한다.

 

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

 

​#동시성프로그래밍 #동시성 #병렬성 #비동기 #멀티태스크 #한빛미디어 #OREILLY

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?