확장메뉴
주요메뉴


소득공제
미리보기 공유하기

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1

: 라즈베리 파이로 따라하면서 쉽게 이해할 수 있는 리눅스 커널

위키북스 유닉스&리눅스 시리즈-003이동
리뷰 총점10.0 리뷰 4건 | 판매지수 4,602
베스트
IT 모바일 top100 12주
정가
35,000
판매가
31,500 (10% 할인)
YES포인트
가방 속 책 한 권이라면 - 굿리더 스트링백/간식 접시 머그/디즈니 미키 타포린 보냉백/타포린백
〈2022 한국 문학의 미래가 될 젊은 작가〉- 투표 참여 회원 전원 1천원 상품권 증정!
8월 얼리리더 주목신간 : 귀여운 방해꾼 배지 증정
월간 개발자 2022년 8월호
박해선 저자의 머신러닝/딥러닝 패스
[단독]『혼자 공부하는 파이썬』 개정판 출간
내일은 개발자! 코딩테스트 대비 도서전
YES24 트윈링 분철 : 인서트라벨/스티커 택1 증정
8월 전사
쇼핑혜택
1 2 3 4 5

품목정보

품목정보
출간일 2020년 05월 12일
쪽수, 무게, 크기 708쪽 | 1350g | 188*240*29mm
ISBN13 9791158391980
ISBN10 1158391986

이 상품의 태그

책소개 책소개 보이기/감추기

신입 리눅스 시스템 개발자부터 5년차 개발자가 실무를 하기 위해 알아야 할
리눅스 커널의 주요 서브시스템!


실전 개발에서 신입 사원 옆에 친절한 선배 개발자가 앉아서 리눅스 커널에 대해 꼼꼼하게 알려주듯, 리눅스 커널을 쉽고 친절하게 설명하는 책이다. 『디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1』은 최신 버전(LTS: 4.19)의 리눅스 커널 소스를 함수 흐름을 따라가며 자세히 분석하고 ftrace와 TRACE32 같은 디버깅 툴을 활용해 커널의 동작 원리를 설명한다. 또한 라즈베리 파이에서 리눅스 커널의 소스코드를 직접 수정해 설치한 다음 커널을 디버깅하는 방법을 다룬다. 각 장에서 소개하는 커널 디버깅 방법은 실무 개발에 그대로 적용할 수 있다.

목차 목차 보이기/감추기

▣ 01장: 리눅스 소개와 전망
1.1 리눅스와 리눅스 커널은 왜 배워야 할까?
__1.1.1 리눅스는 왜 배워야 할까?
__1.1.2 리눅스 커널은 왜 배워야 할까?
1.2 리눅스의 전망
__1.2.1 운영체제란 무엇인가?
__1.2.2 우리는 어떤 운영체제를 쓰고 있나?
1.3 리눅스의 역사
__1.3.1 유닉스의 탄생
__1.3.2 1991년: 리누스 토발즈의 등장
__1.3.3 리눅스가 인기 있는 이유는 무엇일까?
1.4 리눅스는 어디에 쓰일까?
__1.4.1 안드로이드
__1.4.2 자동차(AutoMotive)
__1.4.3 사물인터넷(IoT: Internet of Things) 디바이스
1.5 임베디드 리눅스 개발 단체
__1.5.1 리눅스 커널 커뮤니티
__1.5.2 CPU 벤더
__1.5.3 SoC 벤더
__1.5.4 보드 벤더 및 OEM
1.6 임베디드 리눅스 개발을 잘 하려면 무엇을 알아야 할까?
__1.6.1 디바이스 드라이버
__1.6.2 리눅스 커널
__1.6.3 CPU 아키텍처
__1.6.4 빌드 스크립트와 Git
1.7 라즈베리 파이와 리눅스 커널
__1.7.1 라즈베리 파이 실습 보드
__1.7.2 리눅스 커널 버전
__1.7.3 라즈비안 버전
__1.7.4 ARM 아키텍처
1.8 정리

▣ 02장: 라즈베리 파이 설정
2.1 라즈베리 파이란?
2.2 라즈베리 파이 설정
__2.2.1 라즈베리 파이 실습을 위한 준비물
__2.2.2 라즈베리 파이 설치
__2.2.3 라즈베리 파이 기본 설정
2.3 라즈베리 파이 커널 빌드
__2.3.1 라즈비안 버전과 커널 소스 버전
__2.3.2 라즈비안 커널 소스코드 내려받기
__2.3.3 라즈비안 리눅스 커널 빌드
__2.3.4 라즈비안 리눅스 커널 설치
__2.3.5 전처리 코드 생성
__2.3.6 리눅스 커널 소스의 구조
2.4 objdump 바이너리 유틸리티
2.5 라즈베리 파이 사용 시 주의사항
2.6 정리

▣ 03장: 커널 디버깅과 코드 학습
3.1 디버깅이란?
__3.1.1 디버깅은 문제 해결 능력의 지름길
__3.1.2 디버깅과 코드 학습 능력
3.2 printk
3.3 dump_stack() 함수
3.4 ftrace
__3.4.1 ftrace란?
__3.4.2 ftrace는 어떻게 설정할까?
__3.4.3 ftrace 메시지는 어떻게 분석할까?
__3.4.4 ftrace 로그는 어떻게 추출할까?
__3.4.5 ftrace는 커널 코드 분석의 안내자
3.5 임베디드 디버거의 전설 TRACE32
3.6 커널 디버깅용 Debugfs 드라이버 코드
3.7 정리

▣ 04장: 프로세스
4.1 프로세스 소개
__4.1.1 프로세스란?
__4.1.2 태스크란?
__4.1.3 스레드란?
4.2 프로세스 확인하기
__4.2.1 ps 명령어로 프로세스 목록 확인
__4.2.2 ftrace에서 프로세스 확인하기
4.3 프로세스는 어떻게 생성할까?
__4.3.1 _do_fork() 함수 소개
__4.3.2 유저 레벨 프로세스를 생성할 때 _do_fork() 함수의 처리 흐름
__4.3.3 커널 프로세스 생성 시 _do_fork() 함수의 흐름
4.4 유저 레벨 프로세스 실행 실습
__4.4.1 기본 유저 레벨 프로세스 실행 실습 및 ftrace 로그 분석
__4.4.2 exit() 함수로 프로세스가 종료되는 과정 및 ftrace 로그 분석
4.5 커널 스레드
__4.5.1 커널 스레드란?
__4.5.2 커널 스레드의 종류
__4.5.3 커널 스레드는 어떻게 생성할까?
4.6 커널 내부 프로세스의 생성 과정
__4.6.1 _do_fork() 함수
__4.6.2 copy_process() 함수 분석
__4.6.3 wake_up_new_task() 함수 분석
4.7 프로세스의 종료 과정 분석
__4.7.1 프로세스 종료 흐름 파악
__4.7.2 do_exit() 함수 분석
__4.7.3 do_task_dead() 함수 분석
__4.7.4 do_task_dead() 함수를 호출하고 난 후의 동작
4.8 태스크 디스크립터(task_struct 구조체)
__4.8.1 프로세스를 식별하는 필드
__4.8.2 프로세스 상태 저장
__4.8.3 프로세스 간의 관계
__4.8.4 프로세스 연결 리스트
__4.8.5 프로세스 실행 시각 정보
4.9 스레드 정보: thread_info 구조체
__4.9.1 thread_info 구조체란?
__4.9.2 thread_info 구조체 분석
__4.9.3 thread_info 구조체의 주소 위치는 어디일까?
__4.9.4 컨텍스트 정보 상세 분석
__4.9.5 cpu 필드에 대한 상세 분석
__4.9.6 thread_info 구조체 초기화 코드 분석
4.10 프로세스의 태스크 디스크립터에 접근하는 매크로 함수
__4.10.1 current 매크로란?
__4.10.2 current_thread_info() 매크로 함수 분석
4.11 프로세스 디버깅
__4.11.1 glibc의 fork() 함수를 gdb로 디버깅하기
__4.11.2 리눅스 유틸리티 프로그램을 이용한 실행 추적
4.12 정리

▣ 05장: 인터럽트
5.1 인터럽트 소개
__5.1.1 인터럽트란?
__5.1.2 리눅스 커널 인터럽트의 주요 개념
__5.1.3 인터럽트를 잘 알아야 하는 이유
__5.1.4 리눅스 커널에서의 인터럽트 처리 흐름
5.2 인터럽트 컨텍스트
__5.2.1 인터럽트 컨텍스트란?
__5.2.2 ftrace와 커널 로그로 인터럽트 컨텍스트 확인해보기
__5.2.3 in_interrupt() 함수란?
__5.2.4 인터럽트 컨텍스트에서 스케줄링을 하면 어떻게 될까?
5.3 인터럽트 핸들러는 언제 호출될까?
__5.3.1 인터럽트 벡터 분석
__5.3.2. 인터럽트 벡터에서 스택 푸시 확인
__5.3.3. 인터럽트 핸들러의 호출 흐름 분석
5.4 인터럽트 핸들러는 어떻게 등록할까?
__5.4.1 인터럽트 핸들러의 등록 과정 분석
__5.4.2 인터럽트 핸들러의 초기화 과정 디버깅
__5.4.3 인터럽트 핸들러 등록 시 플래그 설정
5.5 인터럽트 디스크립터
__5.5.1 인터럽트 디스크립터란?
__5.5.2 인터럽트 발생 횟수는 어떻게 저장할까?
5.6 인터럽트는 언제 비활성화해야 할까?
5.7 인터럽트 디버깅
__5.7.1 /proc/interrupts
__5.7.2 ftrace 인터럽트 이벤트
__5.7.3 ftrace로 인터럽트 핸들러 함수 파악하기
5.8 정리

▣ 06장: 인터럽트 후반부 처리
6.1 인터럽트 후반부 기법이란?
__6.1.1 인터럽트 후반부 기법을 적용하는 이유
__6.1.2 인터럽트 컨텍스트에서 많은 일을 하면 어떻게 될까?
__6.1.3 Top Half/Bottom Half란?
__6.1.4 인터럽트 후반부 처리 기법의 종류
__6.1.5 어떤 인터럽트 후반부 처리 기법을 적용해야 할까?
6.2 IRQ 스레드(threaded IRQ)
__6.2.1 IRQ란?
__6.2.2 IRQ 스레드 확인
6.3 IRQ 스레드는 어떻게 생성할까?
__6.3.1 IRQ 스레드는 언제 생성할까?
__6.3.2 라즈베리 파이에서 IRQ 스레드 생성 과정 디버깅
6.4 IRQ 스레드는 누가 언제 실행할까?
__6.4.1 IRQ 스레드를 깨우는 코드 분석
__6.4.2 IRQ 스레드 핸들러인 irq_thread() 함수 분석
__6.4.3 IRQ 스레드의 전체 실행 흐름 정리
6.5 IRQ 스레드 디버깅 실습
__6.5.1 ftrace를 이용한 IRQ 스레드 동작 확인
__6.5.2 IRQ 스레드 생성 실습
__6.5.3 IRQ 스레드 처리 함수 실행 시각 측정
6.6 Soft IRQ 소개
__6.6.1 Soft IRQ 서비스란?
__6.6.2 Soft IRQ의 전체 흐름
__6.6.3 후반부 기법으로 Soft IRQ를 언제 쓸까?
__6.6.4 Soft IRQ는 왜 알아야 할까?
6.7 Soft IRQ 서비스
__6.7.1 Soft IRQ 서비스
__6.7.2 Soft IRQ 서비스 핸들러는 언제 등록할까?
__6.7.3 Soft IRQ 서비스 핸들러의 등록 과정 실습
6.8 Soft IRQ 서비스는 언제 요청할까?
__6.8.1 Soft IRQ 서비스 요청의 전체 흐름
__6.8.2 raise_softirq() 함수 분석
__6.8.3 irq_stat 전역변수 분석
__6.8.4 Soft IRQ 서비스를 요청했는지는 누가 어떻게 점검할까?
6.9 Soft IRQ 서비스는 누가 언제 처리할까?
__6.9.1 Soft IRQ 서비스 실행 진입점은 어디일까?
__6.9.2 Soft IRQ 서비스 요청 점검
__6.9.3 Soft IRQ 서비스 실행
__6.9.4 ksoftirqd 스레드 깨우기
6.10 ksoftirqd 스레드
__6.10.1 ksoftirqd 스레드란?
__6.10.2 ksoftirqd 스레드는 언제 깨울까?
__6.10.3 ksoftirqd 핸들러 run_ksoftirqd() 함수 분석
6.11 Soft IRQ 컨텍스트에 대해
__6.11.1 Soft IRQ 컨텍스트 시작점은 어디일까?
__6.11.2 Soft IRQ 컨텍스트는 언제 시작할까?
__6.11.3 Soft IRQ 컨텍스트 확인
6.12 태스크릿
__6.12.1 태스크릿이란?
__6.12.2 태스크릿 자료구조
__6.12.3 태스크릿은 어떻게 등록할까?
__6.12.4 태스크릿의 전체 실행 흐름 파악
__6.12.5 태스크릿 실행 요청은 어떻게 할까?
__6.12.6 태스크릿은 언제 실행할까?
6.13 Soft IRQ 디버깅
__6.13.1 ftrace의 Soft IRQ 이벤트 소개
__6.13.2 /proc/softirqs를 이용한 Soft IRQ 서비스 실행 횟수 확인
6.14 정리

▣ 07장: 워크큐
7.1 워크큐 소개
__7.1.1 워크큐의 주요 개념
__7.1.2 워크큐의 특징
__7.1.3 워크큐와 다른 인터럽트 후반부 기법과의 비교
__7.1.4 워크큐로 인터럽트 후반부 코드를 설계하는 과정
__7.1.5 워크큐를 잘 알아야 하는 이유
7.2 워크큐의 종류
__7.2.1 alloc_workqueue() 함수 분석
__7.2.2 7가지 워크큐
7.3 워크란?
__7.3.1 work_struct 구조체
__7.3.2 워크는 어떻게 초기화할까?
7.4 워크를 워크큐에 어떻게 큐잉할까?
__7.4.1 워크를 워크큐에 큐잉하는 예제 코드 살펴보기
__7.4.2 워크큐 전체 흐름도에서 워크를 워크큐에 큐잉하는 과정
__7.4.3 워크를 워크큐에 큐잉하는 인터페이스 함수 분석
__7.4.4 __queue_work() 함수 분석
__7.4.5 __queue_work() 함수에서 호출하는 워크큐 내부 함수 분석
7.5 워크는 누가 언제 실행하나?
__7.5.1 워크 실행의 출발점인 worker_thread() 함수 분석
__7.5.2 process_one_work() 함수 분석
7.6 워커 스레드란?
__7.6.1 워커와 워커 스레드
__7.6.2 worker 구조체
__7.6.3 워커 스레드는 누가 언제 만들까?
__7.6.4 워커 스레드를 생성하는 create_worker() 함수 분석
__7.6.5 create_worker() 함수에서 호출한 워크큐 커널 함수 분석
__7.6.6 worker_thread() 함수 분석
7.7 워크큐 실습 및 디버깅
__7.7.1 ftrace 워크큐 이벤트
__7.7.2 라즈베리 파이에서 ftrace를 이용한 워크큐 동작 확인
__7.7.3 인터럽트 후반부 처리 실습과 로그 분석
7.8 딜레이 워크
__7.8.1 딜레이 워크란?
__7.8.2 딜레이 워크의 전체 흐름
__7.8.3 딜레이 워크는 어떻게 초기화할까?
__7.8.4 딜레이 워크 실행의 시작점은 어디일까?
__7.8.5 딜레이 워크는 누가 언제 큐잉할까?
7.9 라즈베리 파이에서의 딜레이 워크 생성 실습
__7.9.1 패치 코드의 내용과 작성 방법
__7.9.2 ftrace 로그 설정
__7.9.3 ftrace 로그 분석
7.10 정리

저자 소개 (1명)

출판사 리뷰 출판사 리뷰 보이기/감추기

신입 리눅스 시스템 개발자부터 5년차 개발자가 실무를 하기 위해 알아야 할 리눅스 커널의 주요 서브시스템을 다룹니다!

실전 개발에서 신입 사원 옆에 친절한 선배 개발자가 앉아서 리눅스 커널에 대해 꼼꼼하게 알려주듯, 리눅스 커널을 쉽고 친절하게 설명하는 책입니다. 이 책은 최신 버전(LTS: 4.19)의 리눅스 커널 소스를 함수 흐름을 따라가며 자세히 분석하고 ftrace와 TRACE32 같은 디버깅 툴을 활용해 커널의 동작 원리를 설명합니다. 또한 라즈베리 파이에서 리눅스 커널의 소스코드를 직접 수정해 설치한 다음 커널을 디버깅하는 방법을 다룹니다. 각 장에서 소개하는 커널 디버깅 방법은 실무 개발에 그대로 적용할 수 있습니다.

▣ [1부] 커널 디버깅(ftrace), 프로세스, 인터럽트, 인터럽트 후반부, 워크큐 편

먼저 커널을 디버깅하는 방법과 함께 ftrace 사용법을 소개합니다. 커널을 실행하는 주인공인 프로세스와 인터럽트를 커널이 처리하는 세부 동작 원리를 다룹니다. 인터럽트 후반부를 처리하는 IRQ 스레드(threaded IRQ)와 Soft IRQ 기법과 커널에서 후반부를 처리하는 워크큐에 대해 설명합니다.

▣ [2부] 타이머, 동기화, 스케줄링, 시스템 콜, 시그널, 가상 파일 시스템, 메모리 관리 편

커널이 시간의 흐름을 관리하는 동작 원리와 동기화 기법(스핀락, 뮤텍스)을 다룹니다. 여러 프로세스의 실행 흐름을 관리하는 스케줄링의 세부 구현 방식과 시스템 콜과 시그널을 커널에서 어떤 방식으로 처리하는지 설명합니다. 다양한 파일 시스템을 공존해 실행시킬 수 있는 가상 파일 시스템과 커널의 메모리를 관리하는 방식에 대해 다룹니다.

부록으로 리눅스 커널의 메일링 리스트를 활용하는 방법과 리눅스 커널에 기여하는 방법을 자세히 소개합니다.

회원리뷰 (4건) 리뷰 총점10.0

혜택 및 유의사항?
구매 디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1 내용 평점5점   편집/디자인 평점5점 YES마니아 : 플래티넘 c***z | 2020.07.02 | 추천2 | 댓글0 리뷰제목
리눅스 커널 잘 설명되어 있습니다. 도표도 많고. 일단 책은 읽기 쉬운게 좋은거 같아요. 어려운 내용들이 잘 설명이 되어 있으니 집중해서 정독해 볼만한 책입니다. 추천 드려요. 커널분석등 실제로 사용해 볼만한 팁들이 있는 부분도 좋은 것 같습니다. 디버깅 능력이 향상이 되면 좋겠네요. 책만 보고 실전 능력이 좋아지면 최고지만, 그건 어려울 것 같고, 책에서 알려준 방법데;
리뷰제목

리눅스 커널 잘 설명되어 있습니다. 도표도 많고. 일단 책은 읽기 쉬운게 좋은거 같아요. 어려운 내용들이 잘 설명이 되어 있으니 집중해서 정독해 볼만한 책입니다. 추천 드려요. 커널분석등 실제로 사용해 볼만한 팁들이 있는 부분도 좋은 것 같습니다. 디버깅 능력이 향상이 되면 좋겠네요. 책만 보고 실전 능력이 좋아지면 최고지만, 그건 어려울 것 같고, 책에서 알려준 방법데로 분석을 해 보려고 합니다. 지금 당장은 아니지만 여유가 생기면 2권도 도전해 보겠습니다.

댓글 0 2명이 이 리뷰를 추천합니다. 공감 2
구매 리눅스 커널에 관한 최고의 책 내용 평점5점   편집/디자인 평점5점 YES마니아 : 골드 y***0 | 2020.06.10 | 추천2 | 댓글0 리뷰제목
리눅스 커널에 관한 최고의 책.이 도서를 클릭한 사람은 리눅스에 대한 역량을 키우고 싶어 할 것이다. 나 역시 그렇다. 메모리 스케쥴러처럼 이름부터 복잡할 거 같고 코드 내에 변수명만 봐도 어렵고 포기하고 싶어 지는 것이 리눅스다. 고수가 짠 씨언어 모범답안이 이해가 안되는 건 내 실력이 그에 못 미치기 때문이라는 걸 경험해 봐서 알지 않나. 구글링을 해도 수준에 맞는 시원;
리뷰제목
리눅스 커널에 관한 최고의 책.

이 도서를 클릭한 사람은 리눅스에 대한 역량을 키우고 싶어 할 것이다. 나 역시 그렇다.

메모리 스케쥴러처럼 이름부터 복잡할 거 같고 코드 내에 변수명만 봐도 어렵고 포기하고 싶어 지는 것이 리눅스다. 고수가 짠 씨언어 모범답안이 이해가 안되는 건 내 실력이 그에 못 미치기 때문이라는 걸 경험해 봐서 알지 않나. 구글링을 해도 수준에 맞는 시원한 답을 찾기 어렵다. 그래서 책을 뒤진다.

그렇게 보통 사는 게 로버트 러브의 리눅스? 심층분석. 보면 볼수록 답답해 지는 것이 사실이다. 로그한줄 없는 책이지 않나.
또 누가 번역했는지 차라리 원서 보고 싶은 충동이 생기게 하는 책도 대부분이다.

씨코드를 짜다가 갑자기 빨간 엑스 맞고 시스템이 종료될 때 디버거 돌려야 좀 이해되지 않나? 내가 짠 코드조차도 디버거 돌려야 이해될때가 많다.

이 책은 위에 언급한 모든 사항을 모두 해결한 단연코 최고다. 작가의 블로그를 보면 알겠지만 내공이 상당하다. 작가가 직접 ftrace로그로 확인해서 수록했고 trace32 crash유틸리티 같은 툴을 써서 ARM 어셈블러도 해석했다. 물론 어셈블러 보는 책이 시중에 없는 것은 아니지만 그래도 이 책은 씨언어로 알 수 없는 코드 흐름을 짚어준다.

라즈베리파이에서 배울 수 있는 점도 좋다. 내가 대딩때 이책을 봤다면 내인생 달라질수 있지 않았을까. 라는 생각을 해본다.

댓글 0 2명이 이 리뷰를 추천합니다. 공감 2
리눅스 개발자가 만든 친절한 책 내용 평점5점   편집/디자인 평점5점 k******8 | 2020.06.10 | 추천3 | 댓글0 리뷰제목
리눅스 커널을 배우기 위해 목말라하던 리눅스 개발자와 취준생에게 오아시스와 같은 책입니다.그동안 리눅스 커널을 배우기 위해, 기존의 '리눅스 커널' 책을 읽다가 '중간에 포기하다 읽다'를 반복 했었는데 거의 한달 만에 금방 책을 다 보게 된 것 같습니다. 리눅스 커널을 입문자 입장에서 친절하고 자세히 설명해주기 때문입니다.이 책의 가장 큰 장점은 입문자가 리눅스 커널을 처;
리뷰제목
리눅스 커널을 배우기 위해 목말라하던 리눅스 개발자와 취준생에게 오아시스와 같은 책입니다.

그동안 리눅스 커널을 배우기 위해, 기존의 '리눅스 커널' 책을 읽다가 '중간에 포기하다 읽다'를 반복 했었는데 거의 한달 만에 금방 책을 다 보게 된 것 같습니다. 리눅스 커널을 입문자 입장에서 친절하고 자세히 설명해주기 때문입니다.

이 책의 가장 큰 장점은 입문자가 리눅스 커널을 처음 접했을 때 만나는 걸림돌을 모두 제거하면서 커널 소스를 분석하는 방법을 알려주고 있다는 점입니다. 그 동안 궁금했던 내용을 저자가 질문과 답을 알려는 형식과 쉬운 예제를 통해 친절하게 알려줍니다. 기존의 번역투의 리눅스 커널과는 달리 친절하고 따듯한 문장을 접했던 것 같습니다.

기존의 커널 도서는 예전 버전의 소스 코드를 기반으로 커널을 설명하므로 개념 따로 소스 따로 공부했던 것 같아 답답했습니다. 그런데 이 책은 최신 리눅스 커널 버전을 기준으로 소스 코드를 설명해서 실전 프로젝트에 바로 활용할 수 있는 내용을 담고 있습니다. 커널 소스 분석이 끝나면 관련된 로그의 활용법과 분석 방법을 통해 다양한 문제를 해결하는 커널 개발자의 사고 과정을 그대로 보여주고 있습니다. 각 챕터의 끝에 나오는 내용을 실습했더니 업무에 크게 도움이 됐습니다.

실전 개발자 입장에서 기존 '리눅스 커널' 책에서는 볼 수 없었던 매우 실용적인 내용들이라 말하고 싶습니다.

리눅스 커널은 실력있는 리눅스 개발자가 되기 위해 필수지만, 동시에 개발자들이 가장 어려워하는 주제이기도 합니다.
이런 리눅스 커널을 배우려는 입문자에게 이 책은 진정으로 큰 도움이 될 것이라 확신합니다.
댓글 0 3명이 이 리뷰를 추천합니다. 공감 3

한줄평 (7건) 한줄평 총점 10.0

혜택 및 유의사항 ?
구매 평점5점
실용적인 내용 좋아요
1명이 이 한줄평을 추천합니다. 공감 1
YES마니아 : 로얄 원*퍼 | 2021.11.05
구매 평점5점
도움이 많이 됩니다
1명이 이 한줄평을 추천합니다. 공감 1
h*****m | 2021.01.10
구매 평점5점
짜임새 있는 구성이 맘에 들며 실전 경험이 풍부한 엔지니어가 썼다라는게 느껴집니다^^^
2명이 이 한줄평을 추천합니다. 공감 2
소*물 | 2020.07.02
  •  쿠폰은 결제 시 적용해 주세요.
1   31,500
뒤로 앞으로 맨위로 aniAlarm