실전 러스트로 배우는 리눅스 커널 프로그래밍

고객평점
저자김백기
출판사항위키북스, 발행일:2024/02/27
형태사항p.494 B5판:24
매장위치자연과학부(B2) , 재고문의 : 051-816-9500
ISBN9791158394882 [소득공제]
판매가격 35,000원  
포인트 700점
배송비결제주문시 결제
  • 주문수량 

총 금액 : 0원

책 소개

★ 이 책에서 다루는 내용 ★


◎ 러스트 기초 문법을 배웁니다.

◎ 러스트로 대규모 시스템을 개발하고 통합하는 노하우를 익힙니다

◎ 러스트로 리눅스 시스템 프로그래밍 방법을 습득합니다

◎ 리눅스 커널 시스템을 배우고 커널 모듈을 개발해 봅니다.

작가 소개

김백기

작은 중소기업부터 시작하여 대형 포털사, 대기업 등 다양한 회사에서 오랜 기간 개발자로 커리어를 쌓았습니다. 백엔드 시스템, 모바일 앱뿐만 아니라 시스템 프로그래밍, 임베디드 프로그래밍 등을 경험했습니다. 지금은 아키텍트로 대규모 시스템 설계를 주 업무로 하고 있으며 소프트웨어 최적화에 관심이 많습니다.


우충기 

대한민국의 주요 전자 기업 중 한 곳에서 근무하는 엔지니어로 카이스트 전산학과 대학원을 졸업하였으며, 지금까지 리눅스 커널 및 시스템 개발 분야에서 20여 년간의 경력을 쌓아왔습니다. 평소 회사 제품 원가 절감이라는 비즈니스 요구사항 달성을 위해 리눅스 커널과 시스템 쪽 성능 개선, 메모리 사용량 최적화에 관심이 많습니다. 회사에서 소프트웨어 아키텍트로도 활동하고 있으며, 소프트웨어 품질 향상을 위해 소프트웨어 아키텍처의 개선 작업에 참여하고 있습니다.

목 차

▣ 01장: 러스트 소개

1.1 왜 러스트를 배워야 하는가?

___개요

___러스트의 역사

1.2 러스트 특징

___안전한 메모리 관리

___철저한 오류 처리

___쉽고 편한 비동기 프로그래밍

___편리한 패키지 관리 도구

1.3 러스트로 무엇을 할 수 있나?

___러스트 포 리눅스 프로젝트

___구글의 차세대 운영체제 퓨시아

___블록체인

___빠르고 안정적인 백엔드 시스템 개발

___그 외 다양한 응용 사례

1.4 개발 환경 설정하기

___리눅스 환경에 러스트 설치

___윈도우 환경에 러스트 설치

___러스트 플레이그라운드

1.5 Hello World

___비주얼 스튜디오 코드로 러스트 코드 실행하기

1.6 요약


▣ 02장: 러스트 기초

2.1 자료형

___자료형 확인하기

___튜플

___배열

___문자열

2.2 불변성과 가변성

___섀도잉

2.3 제어문

___if

___match

2.4 반복문

___loop

___for

___while

2.5 함수

2.6 클로저

2.7 n번째 수를 출력하는 피보나치 함수 만들기

2.8 구조체

___구조체 정의

___구조체 메서드

___연관 함수

2.9 열거형

___Option 열거형

2.10 구조체로 연결 리스트 만들기

2.11 요약


▣ 03장: 소유권과 메모리 할당

3.1 소유권

___빌림

___데이터 복제

3.2 동적 메모리 할당

___Box

___Rc

___RefCell

___약한 참조

___Box와 Rc

3.3 라이프타임 지시자

___정적 변수

3.4 이중 연결 리스트 만들기

3.5 요약


▣ 04장: 러스트 심화

4.1 프로젝트 구조와 모듈화

___모듈화

___간단한 모듈 만들어보기

___mod로 계층 구성하기

___모듈 단위로 파일 분리

___use 사용하기

___가시성 제어

4.2 오류 처리

___복구 가능한 오류

___복구 불가능한 오류

___복구 가능한 오류 vs. 복구 불가능한 오류

4.3 컬렉션

___Vec

___LinkedList

___HashMap

___해시셋

___BinaryHeap

___String

___컬렉션의 소유권

4.4 간단한 파일 기반 데이터베이스 만들기

4.5 요약


▣ 05장: 동시성, 입출력, 네트워킹, IPC

5.1 동시성

___std::thread 사용하기

___async/await

___이벤트 루프

___동시성 제어 기법

___다중 스레드에서 발생하는 다양한 문제들

5.2 입출력

___동기식 입출력

___비동기식 입출력

___데이터 버퍼링

___데이터 직렬화

___SQLite 사용하기

5.3 네트워킹과 IPC

___간단한 HTTP 클라이언트 만들기

___REST API 사용하기

___간단한 웹서버 만들기

___TCP 서버와 클라이언트 만들기

___기타 다양한 IPC 기법들

5.4 채팅 서비스 만들기

5.5 요약


▣ 06장: 러스트 라이브러리 활용

6.1 러스트 표준 라이브러리

___러스트 표준 트레잇

___AsRef

___시스템 콜

6.2 파일, 디렉터리 다루기

___std::fs

___std::path

___tree 명령어 만들기

6.3 시간 처리

___시간 및 날짜 관련 라이브러리

___시간 연산

6.4 간단한 셸 터미널 만들기

6.5 요약


▣ 07장: 객체지향과 디자인 패턴

7.1 객체지향 러스트

___캡슐화

___다형성

___상속

7.2 디자인 패턴

___팩토리 메서드 패턴

___싱글턴 패턴

___빌더 패턴

___어댑터 패턴

___컴포지트 패턴

___데코레이터 패턴

___플라이웨이트 패턴

___옵저버 패턴

___전략 패턴

___상태 패턴

7.3 요약


▣ 08장: 매크로

8.1 매크로란?

___매크로를 사용하는 목적

8.2 print!와 vec!

___print! 매크로

___vec! 매크로

8.3 매크로 문법

___macro_rules!

___매크로에서 다른 매크로 호출

8.4 매크로 디버깅

8.5 요약


▣ 09장: 리눅스 시스템 프로그래밍

9.1 리눅스 시스템 프로그래밍이란

9.2 FFI

___Bindgen을 사용해 C 코드 호출하기

___autocxx를 사용해 C++코드 사용하기

___Unsafe

9.3 레거시 라이브러리 연동

___libc 사용하기

___OS 자료형

___레거시 코드를 러스트로 마이그레이션하기 위한 단계별 전략

9.4 리눅스 시스템 프로그램 만들기

___공유 메모리 다루기

___mmap으로 프로세스 간 파일 공유

___ioctl로 디바이스 제어하기

___시그널 핸들러 다루기

___DBus 서버/클라이언트 개발

9.5 요약


▣ 10장: 커널 개발을 위해 알아야 할 것

10.1 리눅스 커널의 역사

___리눅스 운영체제와 리눅스 커널

___리눅스 커널의 역사

___리누스 토발즈와 타넨바움 교수의 논쟁

___모놀리식 커널과 마이크로 커널

___리눅스 커널의 성공 요인

___리눅스 커널 관리 및 개발

___리눅스 커널 코드 반영 방법

___리눅스 운영체제와 유닉스

10.2 커널 개발을 위한 환경 설정

___러스트 툴체인 다운로드 및 설치 방법

___러스트 커널 다운로드

___러스트 커널 빌드 방법

___QEMU 환경 구축

10.3 러스트 커널 모듈 빌드 및 실행

10.4 요약


▣ 11장: 리눅스 커널 아키텍처

11.1 리눅스 커널 아키텍처

11.2 프로세스 관리

___프로세스의 개념과 특징

___스레드

___프로세스 상태와 생명주기

___프로세스 관리를 위한 자료 구조

___프로세스 스케줄링

___프로세스 동기화와 통신

11.3 메모리 관리

11.4 파일 시스템

11.5 유저 모드 vs. 커널 모드

11.6 요약


▣ 12장: C를 사용해 커널 모듈 만들기

12.1 빌드 환경 구성

12.2 간단한 커널 모듈 만들기

12.3 유저 모드 프로그램과 상호작용하기

12.4 요약


▣ 13장: 러스트 이용한 커널 개발

13.1 러스트 포 리눅스

13.2 러스트를 이용한 커널 개발

13.3 커널 개발을 돕는 다양한 크레이트

___커널 크레이트

___할당 크레이트

___코어 크레이트

13.4 러스트를 사용해 간단한 커널 모듈 만들기

___간단한 커널 모듈 만들기

___리눅스 커널에서 FFI 사용하기

___커널 모듈에 파라미터 넘기기

___유저 프로그램과 상호작용하기

___커널의 동기화 요소 사용하기

___유저 모드에서 사용 가능한 커널 세마포어 구현하기

13.5 요약


▣ 14장: 커널 모듈 개발 심화

14.1 커널 핵심 모듈 개발

___커널 메모리 할당

___커널 스레드 구현

___커널 인터럽트 핸들러 구현

14.2 DMA와 제로 카피 전략

___제로 카피 전략

___DMA

___mmap과 DMA를 사용한 제로 카피 전략

14.3 드라이버 레벨에서 ioctl 구현

___ioctl 구현

14.4 간단한 문자 드라이버 만들기

___문자 드라이버 구현

14.5 간단한 블록 디바이스 드라이버 만들기

___블록 디바이스 드라이버 구현

14.6 요약


▣ 15장: 커널 디버깅

15.1 성능 프로파일

___ftrace

___eBPF

15.2 로깅

___커널 로그 출력 및 확인

___러스트로 커널 로그 출력 방법

15.3 시스템 프로세스 정보 확인 방법

15.4 커널 패닉 분석

___kdump 사용법

15.5 요약


▣ 16장: 종합 예제

16.1 LXC를 사용해 나만의 컨테이너 만들기

16.2 Fuse를 이용한 유저 영역 파일 드라이버 만들기

___파일 드라이버 구조

___FUSE

___FUSE를 이용한 유저 영역 파일 드라이버 만들기

16.3 요약


▣ 17장: 마치며

17.1 정리하기

17.2 러스트의 미래


▣ 부록A: 웹 어셈블리

A.1 웹 어셈블리 소개

A.2 웹 어셈블리의 작동 과정

A.3 웹 어셈블리 개발하기

___개발 환경 구성

___간단한 웹 어셈블리 만들기

___wasm을 구동할 웹 서버 설정

A.4 yew를 사용해 간단한 SPA 구동하기


▣ 부록B: 크로스 플랫폼

B.1 크로스 플랫폼 소개

___ARM64용 Hello World 개발하기

B.2 Android NDK 개발

___개발 환경 구성

B.3 간단한 NDK 샘플 만들기

___자바와 러스트의 성능 비교


▣ 부록C: GUI 프로그래밍

C.1 ICED

C.2 egui

C.3 gtk-rs

역자 소개


01. 반품기한
  • 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
  • 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
02. 반품 배송비
반품 배송비
반품사유 반품 배송비 부담자
단순변심 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다.
상품의 불량 또는 오배송 고객 부담이 아닙니다.
03. 배송상태에 따른 환불안내
환불안내
진행 상태 결제완료 상품준비중 배송지시/배송중/배송완료
어떤 상태 주문 내역 확인 전 상품 발송 준비 중 상품이 택배사로 이미 발송 됨
환불 즉시환불 구매취소 의사전달 → 발송중지 → 환불 반품회수 → 반품상품 확인 → 환불
04. 취소방법
  • 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
  • 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
05. 환불시점
환불시점
결제수단 환불시점 환불방법
신용카드 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) 신용카드 승인취소
계좌이체 실시간 계좌이체 또는 무통장입금
취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준)
계좌입금
휴대폰 결제 당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소
전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준)
당일취소 : 휴대폰 결제 승인취소
익월취소 : 계좌입금
포인트 취소 완료 후, 당일 포인트 적립 환불 포인트 적립
06. 취소반품 불가 사유
  • 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
  • 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
  • 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
  • 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
  • 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
  • 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.

환불불가
상품군 취소/반품 불가사유
의류/잡화/수입명품 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우
계절상품/식품/화장품 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우
가전/설치상품 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.)
자동차용품 상품을 개봉하여 장착한 이후 단순변심의 경우
CD/DVD/GAME/BOOK등 복제가 가능한 상품의 포장 등을 훼손한 경우
내비게이션, OS시리얼이 적힌 PMP 상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우
노트북, 테스크탑 PC 등 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우