실전! 러스트로 배우는 리눅스 커널 프로그래밍 - 위키북스 유닉스 & 리눅스 시리즈 4
저자

김백기,우충기

저자:김백기

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



저자:우충기

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

목차


01장:러스트소개
1.1왜러스트를배워야하는가?
___개요
___러스트의역사
1.2러스트특징
___안전한메모리관리
___철저한오류처리
___쉽고편한비동기프로그래밍
___편리한패키지관리도구
1.3러스트로무엇을할수있나?
___러스트포리눅스프로젝트
___구글의차세대운영체제퓨시아
___블록체인
___빠르고안정적인백엔드시스템개발
___그외다양한응용사례
1.4개발환경설정하기
___리눅스환경에러스트설치
___윈도우환경에러스트설치
___러스트플레이그라운드
1.5HelloWorld
___비주얼스튜디오코드로러스트코드실행하기
1.6요약

02장:러스트기초
2.1자료형
___자료형확인하기
___튜플
___배열
___문자열
2.2불변성과가변성
___섀도잉
2.3제어문
___if
___match
2.4반복문
___loop
___for
___while
2.5함수
2.6클로저
2.7n번째수를출력하는피보나치함수만들기
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클라이언트만들기
___RESTAPI사용하기
___간단한웹서버만들기
___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.2print!와vec!
___print!매크로
___vec!매크로
8.3매크로문법
___macro_rules!
___매크로에서다른매크로호출
8.4매크로디버깅
8.5요약

09장:리눅스시스템프로그래밍
9.1리눅스시스템프로그래밍이란
9.2FFI
___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.2DMA와제로카피전략
___제로카피전략
___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.1LXC를사용해나만의컨테이너만들기
16.2Fuse를이용한유저영역파일드라이버만들기
___파일드라이버구조
___FUSE
___FUSE를이용한유저영역파일드라이버만들기
16.3요약

17장:마치며
17.1정리하기
17.2러스트의미래

부록A:웹어셈블리
A.1웹어셈블리소개
A.2웹어셈블리의작동과정
A.3웹어셈블리개발하기
___개발환경구성
___간단한웹어셈블리만들기
___wasm을구동할웹서버설정
A.4yew를사용해간단한SPA구동하기

부록B:크로스플랫폼
B.1크로스플랫폼소개
___ARM64용HelloWorld개발하기
B.2AndroidNDK개발
___개발환경구성
B.3간단한NDK샘플만들기
___자바와러스트의성능비교

부록C:GUI프로그래밍
C.1ICED
C.2egui
C.3gtk-rs

출판사 서평

★이책에서다루는내용★

러스트기초문법을배웁니다.
러스트로대규모시스템을개발하고통합하는노하우를익힙니다
러스트로리눅스시스템프로그래밍방법을습득합니다
리눅스커널시스템을배우고커널모듈을개발해봅니다.