한빛출판네트워크

IT/모바일

Rust Atomics and Locks 러스트 동시성 프로그래밍

Atomic과 Lock으로 안전하고 효율적인 동시성 코드 작성하기

한빛미디어

번역서

판매중

Rust Atomics and Locks 러스트 동시성 프로그래밍
좋아요: 3
  • 저자 : 마라 보스
  • 역자 : 윤인도
  • 출간일 : 2024-01-29
  • 페이지 : 280쪽
  • ISBN : 9791169212007
  • 물류코드 :11200

합계 : 23,400

  • 최고의 성능, 최적의 안전성

    러스트가 선도하는 동시성 프로그래밍의 미래

     

    러스트는 안전성, 우수한 성능, 간결한 문법, 비동기 프로그래밍 지원 등 현대적인 프로그래밍 환경에 최적화된 언어로 꼽힙니다. 비록 러스트가 학습하기 어려운 언어이지만, 여러 해 동안 개발자들로부터 큰 주목을 받고 있는 이유이기도 합니다. 더불어 마이크로소프트, 구글, 아마존 같은 글로벌 IT 기업들에서 러스트를 적극적으로 활용하고 있습니다. 현재 인프라 환경은 멀티 코어 프로세서의 보편화로 동시성과 병렬성이 중요해지면서 그 중요도는 지금보다 더 높아질 것이고, 러스트는 미래의 언어가 될 것입니다.

     

    이 책은 러스트의 안전성과 빠른 속도라는 강점을 최대한 활용하는 방법을 소개합니다. 특히 러스트의 메모리 모델을 중점으로 다루며, Arc나 Mutex와 같은 동시성 도구가 어떻게 동작하는지를 다양한 예제 코드와 함께 자세히 설명합니다. 이를 통해 독자는 고수준의 실무 경험을 쌓을 수 있으며, 러스트를 활용한 효과적인 동시성 프로그래밍에 대한 이해를 한층 더 향상시킬 수 있습니다. 러스트를 처음 배우려는 개발자뿐만 아니라, 다른 언어에서 동시성 코드를 개발하려는 개발자에게도 유용한 핵심 가이드가 되어줄 것입니다.

    해설 영상과 함께 더 쉽게 학습해보세요!

     

    700px_러스트 동시성 프로그래밍.jpg

  • [저자] 마라 보스

    러스트 라이브러리 팀의 리더. 러스트 표준 라이브러리를 유지하고 러스트에서 실시간 제어 시스템을 구축합니다. 그녀가 설립한 회사 Fusion Engineering에서 수년간 동시성 시스템을 운영했습니다. 또한 러스트 시스템에서 가장 많이 사용되는 라이브러리를 유지하고 안전에 중요한 시스템을 매일 작업하면서 실무에 실제로 적용할 수 있는 경험을 쌓았습니다.

    [역자] 윤인도

    SAP Labs Korea의 백엔드 개발자. 한 줄의 코드가 세상을 더 나은 곳으로 바꿀 수 있다고 믿으며, 많은 이에게 지식을 전파하기 위해 여러 기업과 대학을 오가며 강연을 하고 있습니다. 최근에는 프로그래머스 스쿨에서 ‘파이썬 프로그래머를 위한 러스트 입문’ 온라인 강의를 진행습니다. 이 외에도 클래스 101에서 ‘파이썬 기초부터 업무 자동화’, 베어유에서 ‘React App 만들기’ 등 온라인 교육 경력이 다수 있습니다.

  • CHAPTER 1 러스트 동시성의 기초

    1.1 러스트의 스레드

    1.2 범위 스레드

    1.3 스레드 소유권과 레퍼런스 카운팅

    1.4 소유권 대여와 데이터 경합

    1.5 내부 가변성

    1.6 스레드 안전성: Send와 Sync

    1.7 잠금: 뮤텍스와 RwLock

    1.8 대기: 파킹과 조건 변수

    요점 정리

     

    CHAPTER 2 아토믹

    2.1 아토믹한 데이터 load 및 store 연산

    2.2 fetch-and-modify 연산

    2.3 compare-and-exchange 연산

    요점 정리

     

    CHAPTER 3 메모리 순서

    3.1 메모리 순서 재정렬과 최적화

    3.2 메모리 모델

    3.3 happens-before 관계

    3.4 느슨한 메모리 순서

    3.5 해제 순서와 획득 순서

    3.6 소비 순서

    3.7 순차적으로 일관된 순서

    3.8 펜스

    3.9 자주 발생하는 오해

    요점 정리

     

    CHAPTER 4 스핀 락 구현해보기

    4.1 가장 간단한 구현체

    4.2 Unsafe 스핀 락

    4.3 잠금 가드를 사용한 안전한 인터페이스

    요점 정리

     

    CHAPTER 5 채널 구현해보기

    5.1 간단한 뮤텍스 기반 채널

    5.2 언세이프 원샷 채널

    5.3 런타임 검사를 통한 안전성

    5.4 타입을 사용한 안전성

    5.5 할당을 피하기 위한 소유권 대여

    5.6 차단

    요점 정리

     

    CHAPTER 6 Arc 구현해보기

    6.1 기본적인 레퍼런스 카운팅

    6.2 위크 포인터

    6.3 최적화

    요점 정리

     

    CHAPTER 7 프로세서 이해하기

    7.1 프로세서 명령어

    7.2 캐싱

    7.3 재정렬

    7.4 메모리 순서

    요점 정리

     

    CHAPTER 8 운영체제의 기본 요소

    8.1 커널 인터페이스

    8.2 pOSIX

    8.3 리눅스

    8.4 맥OS

    8.5 윈도우

    요점 정리

     

    CHAPTER 9 잠금 구현해보기

    9.1 뮤텍스

    9.1.1 시스템 콜 피하기

    9.1.2 좀 더 최적화해보기

    9.1.3 벤치마킹

    9.2 조건 변수

    9.2.1 시스템 콜 피하기

    9.2.2 가짜 깨우기 피하기

    9.3 읽기/쓰기 잠금

    9.3.1 쓰기 스레드의 무의미한 반복 피하기

    9.3.2 쓰기 고갈 피하기

     

    CHAPTER 10 아이디어와 제안

    10.1 세마포어

    10.2 RcU

    10.3 잠금 없는 연결 리스트

    10.4 큐 기반 잠금

    10.5 parking lot 기반 잠금

    10.6 순차 잠금

    10.7 교육용 자료

  • 러스트 언어로 안전성과 성능을 동시에 극대화하다

     

    이 책은 동시성을 최대한 활용하여 효율적인 코드를 작성하기 위해 Atomic과 Lock을 중심으로 실무 지식을 제공하는 러스트 핵심 가이드입니다. Atomic과 Lock 연산의 활용법은 물론, Mutex를 사용하여 안전하게 데이터에 접근하는 방법에 대한 핵심 원칙까지 소개합니다. 뿐만 아니라, 동시성 코드에서 중요한 메모리 순서와 관련된 개념을 자세히 설명하고 있어 여러 스레드 간에 데이터를 안전하게 공유하거나 수정하기 위한 Arc와 Mutex에 대한 심층적인 내용도 체계적으로 배워나갈 수 있습니다. 이 책을 통해 동시성 프로그래밍에 가장 최적화된 러스트를 활용하여 다양한 동시성 문제에 유연하게 대응하고 안전한 소프트웨어를 개발하는 데 필요한 기술을 습득하길 바랍니다.

     

    ★ 이 책의 내용

    • 운영체제의 지원을 받아 Lock 구현하기
    • Mutex, Atomic, 조건 변수, 메모리 순서
    • 자체 Lock 및 동기화 기본 요소를 구축하기
    • 인텔 및 ARM 프로세서에서 Atomic 연산 활용하기
    • 러스트의 타입 시스템이 동시성 프로그램을 작동하는 방법
    • 동시성, Atomic, Lock을 포함하는 코드를 올바르게 작성하는 방법
    • 책 제목: 『러스트 동시성 프로그래밍: Atomic과 Lock으로 안전하고 효율적인 동시성 코드 작성하기』

      Atomic과 Lock으로 안전하고 효율적인 동시성 코드 작성하기

      내용: IT, 컴퓨터, 동시성, 프로그래밍, 러스트

      출판사: 한빛미디어

      저자: 마라 보스 저자(글) · 윤인도 번역

      출간일 : 2024년 01월 29일

       

      러스트 동시성 프로그래밍: Atomic과 Lock으로 안전하고 효율적인 동시성 코드 작성하기 | 최고의 성능, 최적의 안전성 러스트가 선도하는 동시성 프로그래밍의 미래러스트는 안전성, 우수한 성능,

      product.kyobobook.co.kr

       

      러스트 그리고 동시성 프로그래밍

      작년이었던가... 『동시성 프로그래밍 (Concurrent Programming) 』 이라는 책을 접하게 되었고 비슷한 시기 러스트의 기본을 조금 살펴보게 되면서 상당히 매력적인 언어라는 느낌을 많이 받았습니다. Java 나 Python 으로 개발을 해오다가 C, C++ 언어로 넘어온 것이 벌써 4~5년이 되었다보니 자연스럽게 더 저수준의 언어에 대해 호기심이 생기게 되었고 대안으로 러스트가 떠오르면서 조금 더 깊게 알고 싶다는 생각이 들게 되었어요.

       

      동시성 프로그래밍

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

      m.hanbit.co.kr

       

      이번에 리뷰해 볼 책은 『러스트 동시성 프로그래밍: Atomic과 Lock으로 안전하고 효율적인 동시성 코드 작성하기』 입니다. 직전에 봤던 『동시성 프로그래밍 (Concurrent Programming) 』 와 달리 이 책은 러스트만으로 구성된 책입니다. 그래서 상대적으로 조금 더 얇고 깊은 내용을 담고 있습니다. 처음 동시성 프로그래밍을 공부하는 사람이거나 C언어만 알고 있는 사람이라면 『동시성 프로그래밍 (Concurrent Programming) 』 를 먼저 보거나 함께 보는 것이 더 도움이 될 겁니다. 러스트 기본서와 함께 이 책으로 바로 시작해도 괜찮긴 합니다.

       

       

      개념보다는 구현 위주

      『러스트 동시성 프로그래밍』 은 부제 " Atomic과 Lock으로 안전하고 효율적인 동시성 코드 작성하기 " 에서도 알 수 있듯이 개념 설명의 비중은 많이 줄이고 구현에 초점을 맞춰서 코드를 많이 설명합니다. 개발자는 코드로 이야기하는 직업이니기도 하니 시작부터 코드를 사용하는 방식으로 배우는 것을 선호하는 사람들에게는 더 재미있을 수도 있겠습니다만 너무 개념을 모르는 채로 시작하면 조금 어려울 수도 있을 것 같긴 합니다. 

       

       

      러스트 언어에 대한 설명은 거의 없습니다

      이 책은 기본서가 아닙니다. 따라서 러스트라는 언어에 대한 설명과 운영체제 등 컴퓨터에 대한 기본 전공 지식들은 대부분 알고 있다는 것을 가정하고 설명합니다. 따라서 이 기술이 궁금한 사람들에게는 더할나위없이 좋은 책일 수 있습니다만 이제 막 코딩을 배우는 사람들의 입장에서는 상당히 어려운 책일 수 있습니다.

       

       

      C와 C++을 알고 있다면?!

      이 책의 필수 기본 지식은 운영체제와 러스트 정도지만 다른 언어, 특히 C언어나 C++을 알고 있다면 더 많은 내용을 쉽게 이해할 수 있습니다. 아무래도 러스트는 C언어의 대안 중 하나로 떠오르는 언어기도 하니 아마 이 책에 관심을 가진 독자라면 이미 이정도는 예상하고 있을 것이라 생각합니다.

       

       

      구현에 집중!

      CHAPTER 4 스핀 락 구현해보기

      CHAPTER 5 채널 구현해보기

      CHAPTER 6 Arc 구현해보기

      CHAPTER 9 잠금 구현해보기

       

      챕터 제목에서도 알 수 있듯이 동시성 프로그래밍에 필요한 다양한 기술들을 직접 구현하는데 집중하는 방식으로 목차가 구성되어 있습니다. 코드가 많다보니 직접 구현하면서 따라해도 좋지만 이런 류의 책은 손코딩으로 넘겨가면서 봐도 재밌게 읽을 수 있습니다. 그러기 위해선 당연히 언어에 익숙해야겠지만요.

       

       

      하드웨어와 가까운 언어 "러스트"

      고수준의 언어들 Java, C# 등도 운영체제에 대한 지식을 당연히 알아야하긴 하지만 아무래도 저수준의 언어인 러스트나 C언어들보다는 상대적으로 덜 한 부분이 분명히 있습니다. 운영체제의 종류나 환경에도 크게 영향을 받고 직접적으로 시스템콜 등을 통해 접근할 수도 있기 때문입니다. 이 책에서도 대부분은 동시성 관련 기술의 구현 위주의 설명을 하지만 커널 관점에서 구현을 위해 운영체제 지식이나 프로세서에 대한 이야기도 하고 있습니다. 

       

       

      러스트라는 언어... 보면 볼수록 매력있는 언어인 것 같습니다.

      남들 다 하는 파이썬이나 자바보다 다른 언어에 관심을 가지는 것이 좋은 것인지 (그래도 나름 러스트도 꽤 인기있는 것 같긴 합니다..)는 모르겠습니다만 새로운 것을 배우는 것은 항상 즐겁네요. 

       

       

      끝.

       

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

       

       


       

    • 0. 들어가기에 앞서

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

      제목 : 러스트 동시성 프로그래밍
      저자 : 마라 보스
      번역 : 윤인도
      출판사 : 한빛미디어
      초판 발행 : 2024년 1월 19일
      페이지 : 280


      1. 이 책을 선택한 이유

      요즘 프론트엔드 개발 도구들이 rust로 다시 쓰여지고 있습니다. Web Assembly 뿐만 아니라 프론트엔드 도구도 rust를 사용하고 있기에 이참에 러스트를 배워보자! 라는 마음으로 올 해 러스트를 공부하고 있고, 추가적인 공부를 위해 이 책을 선택하게 되었습니다.


      2. 예상 독자

      개발을 갓 입문하신 분들, 러스트 입문자에게는 비추천 합니다. 러스트의 기본 문법을 알려주는 책이 아니기 때문에 어느 정도 러스트 코드를 읽고, 소유권 등에 대한 개념이 있으시면 읽기에 수월할 것이라 생각합니다.


      3. 목차

      1. 러스트 동시성의 기초
      2. 아토믹
      3. 메모리 순서
      4. 스핀 락 구현해보기
      5. 채널 구현해보기
      6. Arc 구현해보기
      7. 프로세서 이해하기
      8. 운영체제의 기본 요소
      9. 잠금 구현해보기
      10. 아이디어와 제안

      4. 리뷰

      한빛미디어 홈페이지에서 이 책을 검색하게 되면 해설 영상과 함께 학습하는 영상이 있습니다.
      Rust Atomics and Locks 같이 읽기: playlist 소개

      AI 인가? 싶었는데 한국어를 너무 잘하시는 외국인 분이 만드신 강의었습니다. 외국인이 한국어로 리딩해주는 독특한 경험이 있으니 책과 함께 같이 학습 하시면 좋을 것 같습니다.

      저수준 동시성에 대한 깊은 이해를 바라시는 분들이 읽기에 좋은 책입니다. 러스트의 저수준 동시성에 대한 기본 개념부터 체계적으로 작성되어 있습니다. 예를 들어, 쓰레드 부터 시작해서 RC(Reference Counter), Arc 순으로 학습을 하게 되며 그안에서의 장단점을 학습할 수 있게 됩니다.

      예제를 통해 학습할 수 있는 구조가 좋았습니다. 특히 메모리와 운영체제에 대한 코드들을 학습해 보고, Rust standard library등을 직접 구현하는 경험을 통해 TODO 수준이 아닌 그 이상의 경험을 해 볼 수 있는 책이었습니다.

      아직 러스트에 대한 조예가 깊지 않아, 그리고 OS와 컴퓨터 구조에 대한 지식이 짧아 모든 것들을 다 흡수하지는 못했지만, 꼭꼭 씹어가며 이해할 수 있는 내용이 많아 좋았습니다.

    • [BOOK] 러스트 동시성 프로그래밍 - 마라 보스 지음 / 윤인도 옮김

       

       

      부제: "Atomic과 Lock으로 안전하고 효율적인 동시성 코드 작성하기"

       

      책 표지에 'Atomic과 Lock으로 안전하고 효율적인 동시성 코드 작성하기'라고 씌여있는데 '안전하고 효율적으로 동시성 프로그래밍을 다루는 것'은 러스트의 주요 목표중 하나입니다. 러스트에서는 '겁 없는 동시성(fearless concurrency'이라고 표현합니다. 러스트 특유의 소유권과 타입 시스템을 활용해서 메모리의 안전성과 동시성 문제를 관리할 수 있는 도구들을 제공하고 있습니다.

       

      "러스트 동시성 프로그래밍"은 '겁 없는 동시성'을 위한 러스트의 여러 방법들을 상세히 설명하고 있습니다. "The Rust Programming Language"의 16장에서 다루는 내용들을 책 한 권에 걸쳐서 설명하고 있습니다. (다른 '장'에 있는 내용들도 있지만요.) 기본 문법서에서 다루는 내용들을 조금 더 파고 들어가 어떻게 동작하는지 체계적으로 설명합니다. 또한 내부 동작 원리를 설명하기 위해 프로세서와 운영체제에 대한 설명도 빠뜨리지 않았습니다. "동시성 프로그래밍" 책에서는 Rust, C, 어셈블리어로 설명을 하는데 이 책은 러스트와 어셈블리어로 설명하는데 러스트의 비중이 더 많습니다.

       

      이 책에서 주로 다루는 시스템 프로그래밍은 쉽지 않은 분야입니다. 러스트가 러닝 커브는 있으나 시스템 프로그래밍의 진입장벽을 낮추는 역할을 하고 있는 것은 사실입니다. 고수준 언어의 편리한 문법을 활용할 수 있고, 강력한 컴파일러의 힘으로 저수준 언어의 성능을 보여주면서도 안전합니다. 러스트의 기본 문법을 배운 후에 "동시성 프로그래밍", "러스트 동시성 프로그래밍"으로 확장하며 러스트를 더 깊게 공부하고 싶은 분들에게 권하고 싶은 책입니다. (쉬운 책은 아닙니다.)

       

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

    • ✔️ Low-level 프로그래밍을 쉽게 접해볼 수 있다.

      이 책은 러스트 프로그래밍의 모든 내용을 다루기 보단 러스트를 활용해서 동시성 프로그래밍을 하기 위해 반드시 알아야 할 핵심 내용만을 담고 있다. 러스트 언어의 단점 중에 하나가 동시성 모델이 배우기 어렵고 복잡하다는 것인데 이 책은 러스트의 취약한 부분을 모아 강점으로 바꿔준다.

      ✔️ 프로세서와 운영체제에 대한 깊이 이해할 수 있다.

      단순히 예제 코드에 대한 설명이 아닌 프로세서와 운영체제에 대한 동작 원리를 이해한 후 동시성 프로그래밍이 요구하는 핵심 요소를 순차적으로 학습해 나아갈 수 있다. 하루에도 많은 IT 서적들이 쏟아져 나오지만 자세히 들여다보면 '질' 좋은 책은 의외로 찾기 힘들다. 러스트 동시성 프로그래밍 책을 처음 봤을 때 시스템의 동작 원리를 이해하고 나서 깊은 지식으로의 접근을 이끌어 낸다.

       

      ✔️ 기초부터 응용까지 모두 담고 있다.

      러스트, 프로세서, 운영체제의 기본 내용을 빠짐없이 소개함과 동시에 동시성 프로그래밍을 위한 응용/실전 내용까지 담고 있다. 또한 쉽게 따라할 수 있는 간단한 소스코드 및 예제도 제공하기 때문에 업무/연구에 응용하여 적용해볼 수 있다.

  • 내용이 없습니다.
  • 내용이 없습니다.
닫기

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