그림으로 배우는 리눅스 구조 : 실습하며 배우는 운영체제, 가상 머신 그리고 컨테이너 기본 지식까지
저자

타케우치사토루

저자:타케우치사토루
2005년부터2017년까지후지쯔주식회사에서엔터프라이즈리눅스,특히커널개발과지원을담당하였다.2017년사이보우즈주식회사기술고문에취임해서2018년부터cybozu.com의새로운인프라저장소개발을담당하고있다.

역자:서수환
일본에서IT시스템을설계,개발하는엔지니어다.귀찮은일이생기면대신해줄무언가를찾다가없으면만드는게취미.또뭐하며놀까늘고민한다.

목차

CHAPTER0시작하면서

CHAPTER1리눅스개요
1.1프로그램및프로세스
1.2커널
1.3시스템콜
_시스템콜호출확인해보기
_시스템콜을처리하는시간비율
Column모니터링,경고알림및대시보드
_시스템콜소요시간
1.4라이브러리
_표준C라이브러리
_시스템콜래퍼함수
_정적라이브러리와공유라이브러리
Column정적링크가돌아왔다

CHAPTER2프로세스관리(기초편)
2.1프로세스생성
_같은프로세스를두개로분열시키는fork()함수
_다른프로그램을기동하는execve()함수
_ASLR로보안강화
2.2프로세스의부모자식관계
Columnfork()함수와execve()함수이외의프로세스생성방법
2.3프로세스상태
2.4프로세스종료
2.5좀비프로세스와고아프로세스
2.6시그널
Column반드시죽이는SIGKILL시그널과절대로죽지않는프로세스
2.7셸작업관리구현
_세션
_프로세스그룹
2.8데몬

CHAPTER3프로세스스케줄러
3.1기본지식:경과시간과사용시간
3.2논리CPU하나만사용하는경우
3.3논리CPU여러개를사용하는경우
3.4real보다user+sys가커지는경우
3.5타임슬라이스
Column타임슬라이스구조
3.6컨텍스트스위치
3.7처리성능
3.8프로그램병렬실행의중요성

CHAPTER4메모리관리시스템
4.1메모리관련정보수집하기
_used
_buff/cache
_sar명령어를사용해서메모리관련정보를수집하기
4.2메모리재활용처리
_프로세스삭제와메모리강제해제
4.3가상메모리
_가상메모리가없을때생기는문제점
_가상메모리기능
_가상메모리로문제해결하기
4.4프로세스에새로운메모리할당
_메모리영역할당:mmap()시스템콜
ColumnMeltdown취약점의공포
_메모리할당:Demandpaging
Column프로그래밍언어번역기와메모리관리
4.5페이지테이블계층화
_HugePage
_TransparentHugePage(THP)

CHAPTER5프로세스관리(응용편)
5.1빠른프로세스작성처리
_fork()함수고속화:카피온라이트
_execve()함수의고속화:Demandpaging
5.2프로세스통신
_공유메모리
_시그널
_파이프
_소켓
5.3배타적제어
5.4돌고도는배타적제어
5.5멀티프로세스및멀티스레드
Column커널스레드와사용자스레드

CHAPTER6장치접근
6.1디바이스파일
_캐릭터장치
_블록장치
Column루프장치
6.2디바이스드라이버
_메모리맵입출력(MMIO)
_폴링
_인터럽트
Column일부러폴링을사용하는경우
6.3디바이스파일명은바뀌기마련

CHAPTER7파일시스템
7.1파일접근방법
7.2메모리맵파일
7.3일반적인파일시스템
7.4쿼터(용량제한)
7.5파일시스템정합성유지
_저널링을사용한오류방지
_카피온라이트로오류방지
_뭐니뭐니해도백업
7.6Btrfs에서제공하는파일시스템의고급기능
_스냅샷
_멀티볼륨
Column어떤파일시스템을사용하면좋은가?
7.7데이터손상감지와복구
7.8기타파일시스템
_메모리기반의파일시스템
_네트워크파일시스템
_procfs
_sysfs

CHAPTER8메모리계층
8.1캐시메모리
_참조의지역성
_계층형캐시메모리
_캐시메모리접근속도측정
SimultaneousMultiThreading(SMT)
Column변환색인버퍼(TranslationLookasideBuffer)
8.2페이지캐시
_페이지캐시효과
8.3버퍼캐시
8.4쓰기타이밍
8.5직접입출력
8.6스왑
8.7통계정보

CHAPTER9블록계층
9.1하드디스크의특징
9.2블록계층의기본기능
9.3블록장치의성능지표및측정방법
_하나의프로세스만입출력을호출하는경우
_여러프로세스가병렬로입출력을호출하는경우
Column추측하지말고,측정해라
_성능측정도구:fio
9.4블록계층이하드디스크성능에주는영향
_패턴A측정결과
_패턴B측정결과
Column무엇을위한성능측정인가
_기술혁신과관련된블록계층의변화
9.5블록계층이NVMeSSD의성능에미치는영향
_패턴A측정결과
_패턴B측정결과
Column실제성능측정

CHAPTER10가상화기능
10.1가상화기능이란무엇인가
10.2가상화소프트웨어
10.3이장에서사용하는가상화소프트웨어
Column중첩가상화
10.4가상화를지원하는CPU기능
_QEMU+KVM조합
ColumnCPU가상화기능이없는경우의가상화
10.5가상머신은호스트OS에서어떻게보이는가?
_호스트OS에서본게스트OS
_여러머신을실행하는경우
ColumnIaaS의오토스케일메커니즘
10.6가상화환경의프로세스스케줄링
_물리기기에서프로세스가동작하는경우
_통계정보
10.7가상머신및메모리관리
_가상머신이사용하는메모리
10.8가상머신과저장장치
_가상머신과저장소입출력
_저장장치쓰기와페이지캐시
_반가상화장치와virtio_blk
Column호스트OS와게스트OS의저장소입출력성능역전현상
10.9virtio_blk구조
ColumnPCI패스스루

CHAPTER11컨테이너
11.1가상머신과차이점
11.2컨테이너종류
11.3네임스페이스
_프로세스ID네임스페이스
_컨테이너정체
11.4보안위험성

CHAPTER12cgroup
12.1cgroup으로제어가능한자원
12.2사용예:CPU사용시간제어
Columncgroup기능이리눅스커널에포함된과정
12.3응용예
Columncgroupv2

CHAPTER13이책에서배우는내용과활용법

출판사 서평

클라우드,빅데이터,인공지능등빠르게발전하는기술의근간에는튼튼한기본기가필수적입니다.기술발전의토대인리눅스의깊은이해는최신기술트렌드를익히는데도필수적인밑바탕을제공합니다.리눅스는백엔드개발자와데이터분석가에게꼭필요한OS입니다.리눅스의핵심인커널에대한이해는무시할수없는중요한부분입니다.커널은리눅스시스템의모든기능과동작의핵심이며,이에대한지식은매우중요합니다.

『그림으로배우는리눅스구조』는『실습과그림으로배우는리눅스구조』의최신개정판으로,컴퓨터시스템을구성하는OS나하드웨어를직접실습해보며동작원리를익힐수있는책입니다.다양한그림을제공해리눅스와커널,하드웨어가상위계층과직접연결된부분을이해할수있도록구성했습니다.또한,Go,Python으로작성된실습코드와친절한주석설명을담고있으며,가상화,컨테이너,cgroup과같은내용도다룹니다.이외에도깊이있는내용을Column으로제공하여리눅스기본지식뿐만아니라다양한인사이트를얻을수있도록구성하였습니다.

추천사

신입부터경력자까지개발자라면무조건읽어야하는리눅스필독서입니다.단순히리눅스를알려주기보다리눅스를통해컴퓨터구조와OS에대한이해를몸소체험하게해줍니다.쉬운이론설명과핸즈온을통해직접확인함으로써리눅스구조를쉽고재밌게익힐수있습니다.
-김삼영(쿼리파이(체커)검색클라우드개발자)

리눅스커널책의두께와기술적깊이에질려중간에포기한경험이있는엔지니어라면,수많은그림과실습코드로리눅스의이해를더하는이책으로충분히다시도전해볼만하다고생각합니다.
-최규민(국가정보자원관리원(NIRS))

이런리눅스책은처음입니다.선배가옆에서하나하나알려주듯그림과실습으로어렵지않게리눅스를이해할수있습니다.matplotlib을활용하여메모리의타임슬라이스단위로프로세스의CPU점유를시각적으로확인하며,스루풋과레이턴시등성능지표를직접체감하며익힐수있도록도와줍니다.나아가애플리케이션의관측성에대한이해뿐만아니라가상화,메모리등많은내용도다룹니다.책은IT분야에서깊이있는지식을원하는분들에게추천합니다.
-최치영(클라우드메이트클라우드엔지니어)

개념이확실하게정리되어야모든과정이수월하다는걸깨닫게되었습니다.이러한측면에서이책은개발자라면필독서로한번쯤읽어보는것이좋다고생각합니다.
-백혜림(이포쉬림대표겸AI강사)

Go,Python,Bash스크립트등으로작성된실습코드기반으로리눅스OS에서어떤일들이일어나는지직접따라해보며경험적으로쉽게이해할수있습니다.OS에필요한기본개념을코드와그래프로확인하며자세히,직관적으로이해할수있습니다.실제로리눅스를기반으로서버를운용하는엔지니어에게이책의일독을권합니다.
-안다혜(무신사SRE)