본문 바로가기

추천 검색어

실시간 인기 검색어

리눅스 커널 심층분석

| 개정판 3 판
에이콘 임베디드 시스템프로그래밍 시리즈 33
로버트 러브 저자(글) · 황정동 번역
에이콘출판 · 2012년 08월 06일 출시
9.0 (9개의 리뷰)
집중돼요 (62%의 구매자)
  • 리눅스 커널 심층분석 대표 이미지
    리눅스 커널 심층분석 대표 이미지
  • A4
    사이즈 비교
    210x297
    188x250
    단위 : mm
MD의 선택 무료배송 사은품 이벤트 소득공제
10% 31,500 35,000
적립/혜택
1,750P

기본적립

5% 적립 1,750P

추가적립

  • 5만원 이상 구매 시 추가 2,000P
  • 3만원 이상 구매 시, 등급별 2~4% 추가 최대 1,750P
  • 리뷰 작성 시, e교환권 추가 최대 300원
배송안내
무료배송
배송비 안내
국내도서 / 외국도서
도서만 1만 원 이상 구매 시 무료배송
도서 + 잡지 / 만화 / :K컬렉션을 함께 1만 원 이상 구매 시 무료배송

1만원 미만 시 2,000원 배송비 부과

잡지 / 만화 / :K컬렉션 (교보배송)
각각 구매하거나 함께 2만 원 이상 구매 시 무료배송

2만원 미만 시 2,000원 배송비 부과

해외주문 서양도서 / 해외주문 일본도서 (교보배송)
각각 구매하거나 함께 1만 원 이상 구매 시 무료배송

1만원 미만 시 2,000원 배송비 부과

업체배송 상품 (전집, GIFT, 음반 / DVD 등)
중고장터 상품
해당 상품 상세페이지 "배송비" 참고 (업체 별/판매자 별 무료배송 기준 다름)
바로드림 오늘배송
업체에서 별도 배송하여 1Box당 배송비 2,500원 부과

1Box 기준 : 도서 10권

그 외 무료배송 기준
바로드림, eBook 상품을 주문한 경우, 플래티넘/골드/실버회원 무료배송쿠폰 이용하여 주문한 경우, 무료배송 등록 상품을 주문한 경우
주문정보를 불러오는 중입니다.
서울시 종로구 종로 1

알림 신청하시면 원하시는 정보를
받아 보실 수 있습니다.

해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.

패키지

북카드

키워드 Pick

키워드 Pick 안내

관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.

핵심 커널 시스템의 동작 방법과 그 설계 및 구현을 다룬 리눅스 커널 입문서!
《에이콘 임베디드 시스템프로그래밍》제39권『리눅스 커널 심층분석』. 이 책은 리눅스 커널의 핵심을 간결하면서도 심도있게 다루고 있다. 일반적인 운영체제에 대한 이해를 넘어, 여타 유닉스 시스템과 다른 리눅스만의 특징적인 부분에 대한 설계, 구현, 인터페이스 등을 이론과 실제 사이에서 균형감 있게 소개한다. 운영체제의 기본적인 기능인 프로세스 관리, 시스템 호출, 인터럽트 처리, 동기화, 메모리 관리, 파일 시스템, 이식성에 대한 내용 뿐 아니라, 최신 2.6 커널의 흥미로운 부분인 CFS 스케줄러, 커널 선점, 블럭 입출력 계층, 입출력 스케줄러 등의 내용을 상세히 다루었다.

작가정보

저자(글) 로버트 러브

저자 로버트 러브 (Rovert Love)는 오픈 소스 개발자, 강연자, 저자로 15년 이상 리눅스를 사용하면서 리눅스 발전에 기여했다. 로버트는 현재 구글의 선임 소프트웨어 엔지니어로 일하며, 안드로이드 모바일 플랫폼을 개발한 팀에 속해 있다. 구글 이전에는 노벨(Novell) 사에서 리눅스 데스크탑 책임 설계자를 맡았다. 노벨 사 이전에는 몬타비스타 소프트웨어(MontaVista Software)와 지미안(Ximian)에서 커널 엔지니어로 일했다. 로버트는 선점형 커널, 프로세스 스케줄러, 커널 이벤트 계층, inotify, 가상 메모리 개선, 디바이스 드라이버 개발 등의 커널 프로젝트에 참가했다. 로버트는 리눅스 커널에 대해 수많은 강연을 했으며, 리눅스 커널에 대한 글도 여러 편 썼다. 〈리눅스 저널(Linux Journal)〉의 편집 기자이기도 한 로버트의 다른 책으로는 『Linux System Programming』, 『Linux in a Nutshell』 등이 있다. 로버트는 플로리다 대학에서 수학학사와 전산학사 학위를 받았으며, 현재 보스턴에서 살고 있다.

역자 황정동은 서울대학교에서 전산학과 물리학을 전공했다. 졸업 후 네오위즈에 입사해 시스템 프로그래밍, 시스템 및 네트워크 운영 등의 업무를 거치면서 수천 대 규모의 리눅스 시스템과 네트워크를 관리하고 설계했다. 이후 검색전문 회사 첫눈에서 웹로봇을 개발했으며, NHN 검색센터에서 상당 기간 언어처리 관련 라이브러리 개발 업무를 담당했다. 현재는 (주)퓨쳐스트림네트웍스에서 수석연구원으로 일하고 있다.

목차

  • 1장 리눅스 커널 입문
    ___유닉스의 역사
    ___리눅스의 개발
    ___운영체제와 커널
    ___리눅스 커널과 전통적인 유닉스 커널
    ___리눅스 커널 버전
    ___리눅스 커널 개발 공동체
    ___시작하기 전에

    2장 커널과의 첫 만남
    ___커널 소스 구하기
    ___Git 사용하기
    ___커널 소스 설치
    ___패치
    ___커널 소스 트리
    ___커널 빌드
    ___커널 설정
    ___빌드 메시지 최소화
    ___빌드 작업을 동시에 여러 개 실행
    ___새 커널 설치
    ___다른 성질의 야수
    ___libc와 표준 헤더 파일을 사용할 수 없음
    ___GNU C
    ___인라인 함수
    ___인라인 어셈블리
    ___분기 구문표시
    ___메모리 보호 없음
    ___부동 소수점을 (쉽게) 사용할 수 없음
    ___작은 고정 크기의 스택
    ___동기화와 동시성
    ___이식성의 중요성
    ___결론

    3장 프로세스 관리
    ___프로세스
    ___프로세스 서술자와 태스크 구조체
    ___프로세스 서술자의 할당
    ___프로세스 서술자 저장
    ___프로세스 상태
    ___현재 프로세스 상태 조작
    ___프로세스 컨텍스트
    ___프로세스 계층 트리
    ___프로세스 생성
    ___Copy-on-Write
    ___프로세스 생성(forking)
    ___vfork()
    ___리눅스의 스레드 구현
    ___스레드 생성
    ___커널 스레드
    ___프로세스 종료
    ___프로세스 서술자 제거
    ___부모 없는 태스크의 딜레마
    ___결론

    4장 프로세스 스케줄링
    ___멀티태스킹
    ___리눅스의 프로세스 스케줄러
    ___정책
    ___입출력중심 프로세스와 프로세서중심 프로세스
    ___프로세스 우선순위
    ___타임슬라이스
    ___스케줄러 정책의 동작
    ___리눅스 스케줄링 알고리즘
    ___스케줄러 클래스
    ___유닉스 시스템의 프로세스 스케줄링
    ___공정 스케줄링
    ___리눅스 스케줄링 구현
    ___시간 기록
    ___스케줄러 단위 구조체
    ___가상 실행시간
    ___프로세스 선택
    ___다음 작업 선택
    ___트리에 프로세스 추가
    ___트리에서 프로세스 제거
    ___스케줄러 진입 위치
    ___휴면과 깨어남
    ___대기열
    ___깨어남
    ___선점과 컨텍스트 전환
    ___사용자 선점
    ___커널 선점
    ___실시간 스케줄링 정책
    ___스케줄러 관련 시스템 호출
    ___스케줄링 정책과 우선순위 관련 시스템 호출
    ___프로세서 지속성(affinity) 관련 시스템 호출
    ___프로세서 시간 양보
    ___결론

    5장 시스템 호출
    ___커널과 통신
    ___API, POSIX, C 라이브러리
    ___시스콜
    ___시스템 호출 번호
    ___시스템 호출 성능
    ___시스템 호출 핸들러
    ___알맞은 시스템 호출 찾기
    ___매개변수 전달
    ___시스템 호출 구현
    ___시스템 호출 구현
    ___매개변수 검사
    ___시스템 호출 컨텍스트
    ___시스템 호출 등록을 위한 마지막 단계
    ___사용자 공간에서 시스템 호출 사용
    ___시스템 호출을 구현하지 말아야 하는 이유
    ___결론

    6장 커널 자료 구조
    ___연결 리스트
    ___단일 연결 리스트와 이중 연결 리스트
    ___환형 연결 리스트
    ___연결 리스트 내에서 이동
    ___리눅스 커널의 구현 방식
    ___연결 리스트 구조체
    ___연결 리스트 정의
    ___리스트 헤드
    ___연결 리스트 조작
    ___연결 리스트에 노드 추가
    ___연결 리스트에서 노드 제거
    ___연결 리스트의 노드 이동과 병합
    ___연결 리스트 탐색
    ___기본 방식
    ___실제 사용하는 방식
    ___역방향으로 리스트 탐색
    ___제거하면서 탐색
    ___다른 연결 리스트 함수
    ___큐
    ___kfifo
    ___큐 생성
    ___데이터를 큐에 넣기
    ___데이터를 큐에서 빼기
    ___큐의 크기 알아내기
    ___큐 재설정과 큐 삭제
    ___큐 사용 예제
    ___맵
    ___idr 초기화
    ___새로운 UID 할당
    ___UID 찾기
    ___UID 제거
    ___idr 제거
    ___이진 트리
    ___이진 탐색 트리
    ___자가 균형 이진 탐색 트리
    ___레드블랙 트리
    ___rbtree
    ___어떤 자료 구조를 언제 사용할 것인가?
    ___알고리즘 복잡도
    ___알고리즘
    ___O(빅오, 대문자오) 표기법
    ___빅 세타 표기법
    ___시간 복잡도
    ___결론

    7장 인터럽트와 인터럽트 핸들러
    ___인터럽트와 인터럽트 핸들러
    ___전반부 처리와 후반부 처리
    ___인터럽트 핸들러 등록
    ___인터럽트 핸들러 플래그
    ___인터럽트 예제
    ___인터럽트 핸들러 해제
    ___인터럽트 핸들러 작성
    ___공유 핸들러
    ___인터럽트 핸들러의 실제 예
    ___인터럽트 컨텍스트
    ___인터럽트 핸들러 구현
    ___/proc/interrupts
    ___인터럽트 제어
    ___인터럽트 활성화와 비활성화
    ___특정 인터럽트 비활성화
    ___인터럽트 시스템 상태
    ___결론

    8장 후반부 처리와 지연된 작업
    ___후반부 처리bottom half
    ___왜 후반부 처리를 하는가?
    ___후반부 처리의 세계
    ___원래의 ‘후반부 처리’
    ___태스크 큐
    ___softirq와 태스크릿
    ___혼란스러움을 떨쳐내기
    ___softirq
    ___softirq 구현
    ___softirq 핸들러
    ___softirq 실행
    ___softirq 사용
    ___인덱스 할당
    ___핸들러 등록
    ___softirq 올림
    ___태스크릿tasklet
    ___태스크릿 구현
    ___태스크릿 구조체
    ___태스크릿 스케줄링
    ___태스크릿 사용
    ___태스크릿 선언
    ___태스크릿 핸들러 작성
    ___태스크릿 스케줄링
    ___ksoftirqd
    ___구식 BH 처리 방식
    ___워크 큐
    ___워크 큐 구현
    ___스레드 표현 자료 구조
    ___작업 표현 자료 구조
    ___워크 큐 구현 정리
    ___워크 큐 사용
    ___작업 생성
    ___워크 큐 핸들러
    ___작업 스케줄링
    ___작업 비우기
    ___새로운 워크 큐 만들기
    ___구식 태스크 큐 방식
    ___어떤 후반부 처리 방식을 사용할 것인가?
    ___후반부 처리 작업 사이의 락
    ___후반부 처리 비활성화
    ___결론

    9장 커널 동기화 개요
    ___위험 지역과 경쟁 조건
    ___왜 보호 장치가 필요한가?
    ___단일 변수
    ___락
    ___동시성의 원인
    ___보호 대상 인식
    ___데드락
    ___경쟁과 확장성
    ___결론

    10장 커널 동기화 방법
    ___원자적 동작
    ___원자적 정수 연산
    ___64비트 원자적 연산
    ___원자적 비트 연산
    ___스핀락
    ___스핀락 사용 방법
    ___그 밖의 스핀락 함수
    ___스핀락과 후반부 처리
    ___리더?라이터 스핀락
    ___세마포어
    ___카운팅 세마포어와 바이너리 세마포어
    ___세마포어 생성과 초기화
    ___세마포어
    ___리더-라이터 세마포어
    ___뮤텍스(mutex)
    ___세마포어와 뮤텍스
    ___스핀락과 뮤텍스
    ___완료 변수
    ___큰 커널 락
    ___순차적 락
    ___선점 비활성화
    ___순차성(ordering)과 배리어(barrier)
    ___결론

    11장 타이머와 시간 관리
    ___커널의 시간의 개념
    ___진동수: HZ
    ___이상적인 HZ 값
    ___큰 HZ 값의 장점
    ___큰 HZ 값의 단점
    ___지피(jiffies)
    ___지피의 내부 표현
    ___지피 값 되돌아감
    ___사용자 공간과 HZ 값
    ___하드웨어 시계와 타이머
    ___실시간 시계
    ___시스템 타이머
    ___타이머 인터럽트 핸들러
    ___날짜와 시간
    ___타이머
    ___타이머 사용
    ___타이머 경쟁 조건
    ___타이머 구현
    ___실행 지연
    ___루프 반복
    ___작은 지연
    ___schedule_timeout()
    ___schedule_timeout() 구현
    ___만료시간을 가지고 대기열에서 휴면
    ___결론

    12장 메모리 관리
    ___페이지
    ___구역
    ___페이지 얻기
    ___0으로 채워진 페이지 얻기
    ___페이지 반환
    ___kmalloc()
    ___gfp_mask 플래그
    ___동작 지정자
    ___구역 지정자
    ___형식 플래그
    ___kfree()
    ___vmalloc()
    ___슬랩 계층
    ___슬랩 계층 설계
    ___슬랩 할당자 인터페이스
    ___캐시에서 할당
    ___슬랩 할당자 사용 예제
    ___스택에 정적으로 할당
    ___단일 페이지 커널 스택
    ___공정하게 스택 사용
    ___상위 메모리 연결
    ___고정 연결
    ___임시 연결
    ___CPU별 할당
    ___새로운 percpu 인터페이스
    ___컴파일 시점의 CPU별 데이터
    ___실행 시점의 CPU별 데이터
    ___CPU별 데이터를 사용하는 이유
    ___할당 방법 선택
    ___결론

    13장 가상 파일시스템
    ___일반 파일시스템 인터페이스
    ___파일시스템 추상화 계층
    ___유닉스 파일시스템
    ___VFS 객체와 자료 구조
    ___슈퍼블록 객체
    ___슈퍼블록 동작
    ___아이노드 객체
    ___아이노드 동작
    ___덴트리 객체
    ___덴트리 상태___
    ___덴트리 캐시
    ___덴트리 동작
    ___파일 객체
    ___파일 동작
    ___파일시스템 관련 자료 구조
    ___프로세스 관련 자료구조
    ___결론

    14장 블록 입출력 계층
    ___블록 장치 구조
    ___버퍼와 버퍼 헤드
    ___bio 구조체
    ___입출력 벡터
    ___신구 버전 비교
    ___요청 큐
    ___입출력 스케줄러
    ___입출력 스케줄러가 하는 일
    ___리누스 엘리베이터
    ___데드라인 입출력 스케줄러
    ___예측 입출력 스케줄러
    ___완전 공정 큐 입출력 스케줄러
    ___무동작 입출력 스케줄러
    ___입출력 스케줄러 선택
    ___결론

    15장 프로세스 주소 공간
    ___주소 공간
    ___메모리 서술자
    ___메모리 서술자 할당
    ___메모리 서술자 해제
    ___mm_struct 구조체와 커널 스레드
    ___가상 메모리 영역
    ___VMA 플래그
    ___VMA 동작
    ___메모리 영역 리스트와 트리
    ___실제 메모리 영역
    ___메모리 영역 다루기
    ___find_vma()
    ___find_vma_prev()
    ___find_vma_intersection()
    ___mmap()와 do_mmap(): 주소 범위 생성
    ___munmap()와 do_munmap(): 주소 범위 해제
    ___페이지 테이블
    ___결론

    16장 페이지 캐시와 페이지 지연 기록
    ___캐시 사용 방식
    ___쓰기 캐시
    ___캐시 축출
    ___가장 오래 전에 사용한 항목 제거
    ___이중 리스트 전략
    ___리눅스 페이지 캐시
    ___address_space 객체
    ___address_space 동작
    ___기수 트리
    ___구식 페이지 해시 테이블
    ___버퍼 캐시
    ___플러시 스레드
    ___랩탑 모드
    ___역사: bdflush, kupdated, pdflush
    ___다중 스레드 환경의 경쟁 상태 회피
    ___결론

    17장 장치와 모듈
    ___장치 유형
    ___모듈
    ___Hello, World!
    ___모듈 만들기
    ___소스 트리에 들어 있는 경우
    ___소스 트리 외부에 있는 경우
    ___모듈 설치
    ___모듈 의존성 생성
    ___모듈 적재
    ___설정 옵션 관리
    ___모듈 인자
    ___노출 심볼exported symbols
    ___장치 모델
    ___Kobjects
    ___Ktypes
    ___Ksets___
    ___kobject, ktype, kset의 상관 관계
    ___kobject 관리와 변경
    ___참조 횟수
    ___참조 횟수 증감
    ___krefs
    ___sysfs
    ___sysfs에 kobject 추가와 제거
    ___sysfs에 파일 추가
    ___기본 속성
    ___새로운 속성 만들기
    ___속성 제거
    ___sysfs 관례
    ___커널 이벤트 계층
    ___결론

    18장 디버깅
    ___시작하기
    ___커널 버그
    ___출력을 이용한 디버깅
    ___견고함
    ___로그수준
    ___로그 버퍼
    ___syslogd와 klogd
    ___printf()와 printk() 사용 혼동
    ___웁스
    ___ksymoops
    ___kallsyms
    ___커널 디버깅 옵션
    ___버그 확인과 정보 추출
    ___만능 SysRq 키
    ___커널 디버거의 전설
    ___gdb
    ___kgdb
    ___시스템 찔러 보기와 조사
    ___조건에 따른 UID 사용
    ___조건 변수
    ___통계
    ___디버깅 작업의 빈도와 발생 제한
    ___문제를 일으킨 변경 사항을 찾기 위한 이진 탐색
    ___Git을 사용한 이진 탐색
    ___모든 방법이 실패했을 때: 공동체
    ___결론

    19장 이식성
    ___이식성 있는 운영체제
    ___리눅스 이식성의 역사
    ___워드 크기와 데이터 형
    ___불투명 데이터 형
    ___특수 데이터 형
    ___명시적으로 크기가 정해진 데이터 형
    ___문자 데이터 형의 부호유무
    ___데이터 정렬
    ___정렬 문제 피하기
    ___비표준 데이터 형의 정렬
    ___구조체 채우기
    ___바이트 순서
    ___시간
    ___페이지 크기
    ___프로세서 순서
    ___SMP, 커널 선점, 상위 메모리
    ___결론

    20장 패치, 해킹, 공동체
    ___공동체
    ___리눅스 코딩 스타일
    ___들여쓰기
    ___switch 구문
    ___공백
    ___괄호
    ___줄 길이
    ___명명 방식
    ___함수
    ___주석
    ___형 지정
    ___기존 함수 사용
    ___소스에서 ifdef 사용 최소화
    ___구조체 초기화
    ___과거에 작성한 코드 소급 적용
    ___지휘 계통
    ___버그 리포트 제출
    ___패치
    ___패치 만들기
    ___Git을 사용해 패치 생성
    ___패치 제출
    ___결론

출판사 서평

이 책은 리눅스 커널의 핵심을 간결하면서도 심도있게 다루고 있다. 일반적인 운영체제에 대한 이해를 넘어, 여타 유닉스 시스템과 다른 리눅스만의 특징적인 부분에 대한 설계, 구현, 인터페이스 등을 이론과 실제 사이에서 균형감 있게 소개한다. 구체적으로 운영체제의 기본적인 기능인 프로세스 관리, 시스템 호출, 인터럽트 처리, 동기화, 메모리 관리, 파일 시스템, 이식성에 대한 내용 뿐 아니라, 최신 2.6 커널의 흥미로운 부분인 CFS 스케줄러, 커널 선점, 블럭 입출력 계층, 입출력 스케줄러 등의 내용을 상세히 다룬다.

이 책은 커널 코드를 개발하고 작성하는 사람뿐 아니라, 운영체제에 대한 이해를 높여 좀 더 효율적이고 생산적인 코드를 작성하고자 하는 개발자에게 도움이 되도록, 리눅스 커널 설계와 구현에 대해 자세히 다룬다.

이 책에서는 리눅스 커널의 설계, 구현, 인터페이스를 비롯한 커널의 주요 하부 시스템 및 기능에 대해 자세히 다룬다. 리눅스 커널에 대한 실용적인 관점과 이론적인 관점을 모두 제공하는 이 책은 다양한 관심과 필요성을 가진 독자들의 흥미를 끌 것이다.

핵심 커널 개발자이기도 한 저자는 2.6 커널에 대한 소중한 지식과 경험을 나누고자 한다. 구체적으로 프로세스 관리, 스케줄링, 시간 관리 및 타이머, 시스템 호출 인터페이스, 메모리 접근, 메모리 관리, 페이지 캐시, VFS, 커널 동기화, 이식성 문제, 디버깅 기법 등을 다룬다. 이 책에서는 2.6 커널의 가장 흥미로운 기능인 CFS 스케줄러, 선점 커널, 블럭 입출력 계층, 입출력 스케줄러 등의 내용도 다룬다.

★ 개정 3판에서 달라진 내용 ★

■ 커널 자료 구조를 별도 장으로 새로 추가
■ 인터럽트 핸들러와 후반부 처리에 대한 자세한 내용
■ 커널 동기화 및 잠금에 대한 깊이 있는 설명
■ 가상 메모리와 메모리 할당에 대한 설명 보강
■ 리눅스 커널 디버깅 시 도움이 되는 기법
■ 커널 패치를 제출할 때 유용한 노하우와 리눅스 커널 공동체와 함께 일하는 방법

★ 이 책의 대상 독자 ★

이 책은 리눅스 커널을 이해하고자 하는 소프트웨어 개발자를 대상으로 쓰여졌다. 이 책은 커널 소스를 줄 단위로 설명하는 해설서가 아니다. 또한 드라이버 개발을 위한 가이드도, 커널 API 참고도서도 아니다. 이 책의 목적은 리눅스 커널의 설계와 구현에 대한 충분한 정보를 제공하여, 프로그래머가 커널 코드 개발을 시작할 수 있게 해주는 것이다. 커널 개발은 재미있고 보람찬 일이므로, 나는 독자를 가능한 한 순조롭게 이 세상으로 이끌고자 한다. 이 책은 학구적인 독자와 실용적인 독자 모두를 만족시키기 위해 이론과 응용 모두를 다룬다. 나는 항상 응용을 이해하려면 이론부터 이해해야 한다고 생각하지만, 이 책에서는 둘 사이의 균형을 맞추려고 노력했다. 여러분이 리눅스 커널을 공부하려는 동기가 무엇이든, 이 책의 커널 설계와 구현에 대한 설명이 여러분의 필요를 충분히 만족시킬 수 있기를 바란다.

이 책은 핵심 커널 시스템의 동작 방법과 그 설계 및 구현을 모두 다룬다. 중요한 부분이므로 잠시 설명하고 넘어가자. 좋은 예가 바로 후반부 처리(bottom half)를 이용하는 장치 드라이버 구성 요소를 다루는 8장 ’후반부 처리와 지연된 작업’이다. 이 장에서는 (핵심 커널 개발자나 학구적인 독자가 관심을 가질 만한) 커널 후반부 처리의 설계와 구현에 대해서 다루고, (장치 드라이버 개발자나 통상적인 해커가 흥미를 느낄 만한) 커널이 제공하는 인터페이스를 이용해 실제 후반부 처리를 구현하는 방법에 대해서도 다룬다. 양측 모두 두 가지 측면의 논의가 필수적이라는 사실을 알 수 있을 것이다. 커널의 내부 작동 방식을 확실히 알고 있어야 하는 핵심 커널 개발자는 인터페이스가 실제 사용되는 방식에 대해서도 잘 알고 있어야 한다. 그와 동시에, 장치 드라이버 개발자 역시 인터페이스 너머의 내부 구현에 대해 이해함으로써 드라이버 개발 작업에 도움을 받을 수 있다.

이는 라이브러리의 API를 배우는 것과 라이브러리의 실제 구현을 공부하는 것의 관계와 비슷하다. 언뜻 보기에 애플리케이션 개발자는 API만 알면 될 것 같다. 사실 인터페이스를 블랙박스처럼 다루어야 한다고 배우는 경우가 많다. 마찬가지로 라이브러리 개발자는 라이브러리 설계와 구현에 대해서만 신경 쓴다. 하지만 나는 양자 모두가 서로 반대편 사정을 이해하기 위해 노력해야 한다고 생각한다. 하부 운영체제를 잘 이해하는 애플리케이션 개발자는 운영체제를 훨씬 더 잘 활용할 수 있다. 마찬가지로 라이브러리 개발자는 라이브러리를 이용하는 애플리케이션이 처한 현실과 실제 상황을 외면해서는 안 된다. 따라서 이 책이 양쪽 사람들에게 유용하기를 바랄 뿐 아니라, 책 내용 전체가 양측에 도움이 되기를 바라는 마음으로 커널 서브시스템의 설계와 구현 모두를 설명할 것이다.

나는 독자들이 C 프로그래밍에 대해 알고 있으며, 리눅스에 익숙하다고 가정했다. 운영체제 설계나 다른 전산 분야의 개념에 대한 경험이 있으면 도움이 되겠지만, 이런 개념들에 대해 최대한 많이 설명하려고 노력했다. 부족하다면, 운영체제 설계에 대한 훌륭한 책이 포함된 참고 문헌 항목을 살펴보라.

이 책은 학부 수준의 운영체제 설계 과목에서 이론을 다루는 입문서와 함께 응용 분야의 보조 교과서로 활용하기에 적합하다. 또한 이 책은 별도의 교재 없이 고급 학부 과목이나 대학원 수준의 과목에서도 사용할 수 있다.

★ 추천의 글 ★

리눅스 커널과 커널 애플리케이션 사용이 늘어남에 따라 리눅스 개발과 유지보수에 참여하려는 시스템 소프트웨어 개발자도 점점 늘어는 추세다. 이들 중에는 순전히 개인적인 관심으로 리눅스 개발에 참여하는 사람도 있고, 리눅스 기업 또는 하드웨어 제조사에서 일하기 때문에 혹은 기업 내에서 개발 프로젝트를 하기 때문에 참여하는 사람도 있다.

하지만 이들은 모두 공통된 문제에 부딪힌다. 커널을 배우는 데 걸리는 시간이 더 길어지고, 어려워지고 있다는 점이다. 시스템은 매우 크고, 더욱 더 복잡해지고 있다. 시간이 지날수록 지금 커널을 개발하는 개발자들은 커널에 대해 더욱 깊고 넓은 지식을 쌓을 수 있겠지만, 새로 참여하는 사람과의 격차는 더 벌어질 수밖에 없다.

나는 이렇게 커널 소스에 대한 접근이 점점 어려워지는 현실이 커널의 품질(quality)에 이미 문제를 일으키고 있으며, 이 문제는 시간이 지남에 따라 더 심해질 것이라고 생각한다. 리눅스의 앞날을 걱정하는 사람이라면 커널 개발에 참여할 수 있는 개발자들의 수를 늘리는 일에도 반드시 관심을 기울여야 한다.

이 문제를 해결하는 방법 중 하나는 깔끔한 코드를 유지하는 것이다. 이해하기 쉬운 인터페이스, 일관성 있는 레이아웃, ‘한 번에 한 가지만, 제대로 한다’ 등과 같은 원칙을 지키는 일이다. 이것이 리누스 토발즈가 선택한 방법이다.
내가 추천하는 또 한 가지 방법은 코드에 많은 주석을 다는 것이다. 주석은 코드를 읽는 사람이 개발자가 개발 당시 무엇을 얻고자 했는지 이해할 수 있을 만큼 충분해야 한다. 의도와 구현의 차이를 파악하는 과정이 바로 디버깅이다. 의도를 알 수 없다면 디버깅은 어려운 일이 된다.

하지만 주석만으로는 주요 서브시스템이 어떤 일을 해야 하는지 전체를 살펴볼 수 있는 시각과 개발자들이 그 목적을 달성하려고 어떤 방법을 사용했는지에 대한 정보를 얻을 수 없다. 따라서 커널을 이해하기 위한 출발점으로는 가장 필요한 것은 잘 작성된 문서다.

로버트 러브(Robert Love)가 쓴 이 책은 숙련된 개발자만이 알 수 있는 커널 서브시스템에 대한 본질적인 이해와, 이를 구현하려고 개발자들이 어떤 일들을 했는지에 대해 알려준다. 따라서 이 책은 호기심에 커널을 공부하려는 사람들뿐 아니라, 애플리케이션 개발자, 커널 설계를 분석하려는 사람 등 많은 사람에게 충분한 지식을 제공해 줄 수 있다.

또한, 이 책은 커널 개발자가 뚜렷한 목적을 가지고 커널을 수정할 수 있는 다음 단계로 나아가는 데도 도움을 준다. 나는 이런 개발자들에게 많은 시도를 해 볼 것을 권한다. 커널의 특정 부분을 이해하는 가장 좋은 방법은 그 부분을 변경해보는 것이다. 커널을 직접 수정해보면 코드를 읽기만 할 때는 볼 수 없었던 많은 것들을 이해할 수 있다. 더 적극적인 커널 개발자라면 개발자 메일링 리스트에 가입해 다른 개발자들과 의견을 나눠 보는 것도 좋다. 이 방식이 바로 그 동안 커널 개발에 기여한 사람들이 커널을 배웠던, 그리고 계속 배우고 있는 방법이기도 하다. 로버트의 책은 커널 개발의 중요한 부분인 이런 체계와 문화에 대해서도 다룬다.

로버트의 책을 즐기고, 또 많은 것을 배울 수 있기를 바란다. 또 여러분 중 많은 사람이 한발 더 나아가 커널 개발 공동체의 일원이 되기를 진심으로 바란다. 우리는 사람을 공헌도에 따라 평가한다. 여러분이 무언가 리눅스에 기여하게 되었을 때 여러분의 작업으로 얻어진 지식도 수억 아니, 수십억의 인류에게 작지만 즉각적인 도움을 주었다고 평가받을 수 있을 것이다. 이것은 우리에게 주어진 아주 유익한 특권이면서 책임이기도 하다.

- 앤드류 모튼(Andrew Morton)

★ 저자 서문 ★

리눅스 커널에 대한 나의 경험을 책으로 펴 내리라고 처음 결정했을 때 솔직히 어떻게 해야 할지를 몰랐다. 무엇이 내 책을 이 분야의 가장 좋은 책으로 만들어줄 것인가? 나는 어떻게 하면 이 책이 특별한 책이 될 수 있을까에 대해 고심했다.

결국 커널에 대해 아주 특별한 접근 방법을 생각해 낼 수 있었다. 내 일은 커널을 해킹하는 것이다. 내 취미도 커널을 해킹하는 것이다. 내가 사랑하는 것도 커널을 해킹하는 것이다. 수년간 이렇게 지내오면서, 나는 재미있는 일화와 중요한 기법들을 모아 두었다. 내 경험을 통해 나는 어떻게 커널을 해킹하는지(그리고 그에 못지 않게 중요한) 어떻게 해야 커널을 망가뜨리지 않을지에 대한 책을 펴낼 수 있었다. 이 책의 주요 주제는 물론 리눅스 커널의 설계와 구현이다. 하지만 다른 책들과 달리 이 책은 실제 일에 도움이 되는, 그리고 일을 올바르게 할 수 있는 방법을 배우는 데 중점을 두고 있다. 나는 실용 엔지니어이고 이 책 또한 실용 서적이다. 이 책은 재미있고 읽기 쉬우며 유용할 것이다.

나는 독자가 이 책을 통해 (기록된 또한 기록되지 않은) 리눅스 커널의 규칙을 잘 이해하게 되기를 바란다. 그리고 여러분이 이 책과 커널 소스를 읽은 다음 유용하고, 제대로 동작하며, 깔끔하게 구현된 커널 소스를 작성할 수 있기를 기대한다. 물론 재미 삼아 읽는 것도 좋다.

여기까지는 1판에 대한 이야기였다. 시간이 흘렀고, 다시 한번 도전의 시간이 돌아왔다. 이번 개정 3판은 1판과 2판에 비해 많은 것이 바뀌었다. 많은 부분이 개선되고 수정되었으며, 새로운 내용도 많이 추가되었다. 이번 판은 2판 이후 커널 변화를 반영했다. 중요한 사실은 리눅스 커널 공동체가 2.7 커널 개발을 빠른 시일 내에 진행하지 않을 것임을 선언한 것이다. 대신 커널 개발자들은 2.6 커널 개발 및 안정화 작업을 계속하기로 했다. 이 결정은 많은 것을 시사하는데, 그 중 이 책과 관련해 중요한 부분은 바로 최근에 나와 있는 2.6 커널에 대한 책이 한동안 계속 그 유용함을 유지할 수 있다는 것이다. 리눅스 커널이 성숙단계에 접어듦에 따라,

앞으로도 존속할 커널의 내용에 대해 공부하는 것은 더욱 의미 있는 일이 되었다. 이 책은 리눅스 커널의 역사를 이해함과 동시에 미래를 준비하는 관점에서 커널에 대해 서술함으로써 리눅스 커널에 대한 교과서적인 책이 되기를 기대한다.

★ 옮긴이의 말 ★

잡지 부록으로 딸려온 알짜 리눅스 배포본을 가지고 사용하던 PC에 리눅스를 처음 설치해 본 때가 아련히 떠오릅니다. 그 후 제법 많은 시간이 흘렀습니다. 그 사이 리눅스는 수많은 개발자들의 자발적인 노력을 통해 진화를 거듭해 그 영역을 넓혀 왔습니다. 대부분의 인터넷 서비스가 리눅스 서버로 운영되고 있으며, 슈퍼 컴퓨터에서 손 안의 스마트폰까지 컴퓨터가 관련된 곳에서 리눅스가 쓰이지 않는 분야를 찾기가 더 어렵습니다. 제가 그 동안 해온 일들도 리눅스를 떼어 놓고는 생각할 수 없습니다.

2011년 7월, 리눅스의 창시자인 리누스 토발즈는 리눅스 출시 20주년을 기념해 리눅스의 버전 3.0을 선언합니다. 특별히 주목할 만한 큰 변경 사항이 없었음에도 주 버전을 바꾼 이유에 대해 리누스는 버전 숫자가 너무 커져서(2.6 버전은 2.6.39까지 있습니다.) 불편해서라고 밝히기도 했습니다. 그도 틀린 말은 아니었겠지만, 한편으로는 2.6 버전의 안정적인 집권이 장기간 이어짐에 따라, 이제는 리눅스 커널 완성도에 대한 자신감의 표현으로 보는 것도 타당할 것입니다. 아직 현장에서는 2.6버전을 사용한 리눅스 배포판이 많이 쓰이고, 지원도 지속되고 있습니다. 그렇기 때문에, 커널 버전 2.6.34를 주 대상으로 삼은 이 책의 내용은 3.0 버전으로 바뀐 이 시점에도 그대로 유효합니다. 저자의 말마따나 성숙 단계에 접어듦에 따라 변경의 가능성은 점점 적어지므로, 현 상태에서 얻는 지식의 유효 기간도 길어지고 있는 것입니다.

이 책은 코드를 무작정 늘어 놓고 구구절절 내용을 설명하는 책이 아닙니다. 세부 코드에 대한 내용은 과감히 생략하고, 더욱 중요한 커널의 설계 방향과 의도를 설명하는 데 집중합니다. 이 때문에 커널이나 어셈블러에 대한 경험이 없는 개발자도 쉽게 내용을 따라갈 수 있습니다. 그렇다고 해서 대충 겉핥기로 넘어가지도 않습니다. 커널 동작을 이해하는 데 꼭 필요한 부분은 부족하지 않을 정도로 충분히 설명합니다. 세부적인 내용은 말로 설명하기 보다는 코드를 읽어 보고 스스로 코드를 작성해 보는 것이 더 효과적인 것이 사실입니다. 제한된 지면하에서 리눅스 커널의 핵심 내용을 효율적으로 전달하는 훌륭한 구성입니다.

이 책은 꼭 리눅스 커널 개발자에게만 유용한 것은 아닙니다. 리눅스 커널은 대부분 C로 작성되어 있습니다. C++, 오브젝티브C, 자바 등의 객체지향 언어가 주류를 이루는 요즘, C로 작성된 커널은 거리감을 더하는 것이 사실입니다. 하지만, 리눅스 커널에는 컴퓨터의 등장과 함께한 운영체제의 역사가 녹아 들어 있습니다. 운영 체제에서 사용하는 알고리즘, 인터페이스 설계 등은 프로그램 작성 과정에서 마주치는 많은 문제에 대한 지금까지의 고민 결과를 담고 있습니다. 문제를 해결한다는 본질에 있어서 사용하는 언어는 수단에 불과합니다. 일부 리눅스 서브 시스템은 C언어 하에서도 객체 지향 프로그래밍이 가능하다는 것을 보여주기도 합니다. 커널 개발을 하지 않는다 하더라도 커널이 문제를 해결하는 방식을 살펴보는 것은 일반적인 개발 업무에도 큰 도움이 되리라 믿습니다. 특히 커널과 비슷한 고민을 하는 프로그램을 작성하거나 이미 C로 구현된 기존 프로젝트를 손질하는 경우라면 커널에서 의외의 힌트를 얻을 수도 있습니다.

객관적으로 보면 우리나라는 IT 분야의 선진국임에 분명합니다. 인구 5천만에 불과한 나라에서 세계 최고 수준의 하드웨어를 생산하고, 세계 최고 수준의 통신 인프라를 갖췄으며, 세계적인 수준의 서비스를 개발, 운영하고 있습니다. 이 같은 현실이 만들어진 데에는 여러 유능한 개발자와 리눅스 같은 오픈 소스 제품들이 큰 역할을 했을 것입니다. 하지만 사람들의 관심사가 쉽게 결과를 얻는 쪽으로만 편중된다는 점과 그 과정에서 얻어진 오픈 소스 관련 지식이 공유되지 못하고 파편화된다는 점이 아쉬움으로 남습니다. 지금도 커널 코드를 붙들고 씨름하고 있는 분들이 물론 적지 않겠지만, 실제로는 당장의 돈벌이에 도움이 되기 힘든 커널에 관심을 가진 사람이 많지 않은 것이 현실입니다. 커널이라는 분야는 어찌보면 전산학에 있어서 기초과학으로 비유할 수 있을 것 같습니다. 탄탄한 기초과학 발전이 산업혁명을 가능케 했듯이, 많은 분이 커널 개발에 참여함으로서 또 다른 발전을 이끌어 나갈 수도 있지 않을까 생각해 봅니다. 이 책을 통해 리눅스 커널에 대한 이해를 높이고 커널 개발에 참여하는 개척자 분들이 많이 나오길 기대합니다.

기본정보

상품정보
ISBN 9788960773318 ( 896077331X )
쪽수 624쪽
크기
188 * 250 * 35 mm / 1228 g
총권수 1권
시리즈명
에이콘 임베디드 시스템프로그래밍 시리즈
원서명/저자명 Linux kernel development. 3/E/Love, Robert

Klover

Klover 리뷰 안내
교보를 애용해 주시는 고객님들이 남겨주신 평점과 감상을 바탕으로, 다양한 정보를 전달하는 교보문고의 리뷰 서비스입니다.
리워드 안내
구매 후 90일 이내에 평점과 10자 이상의 리뷰 작성 시 e교환권 200원을 적립해 드립니다.
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
한달 후 리뷰
구매 후 30일~ 120일 이내에 작성된 두 번째 구매리뷰에 대해 한 달 후 리뷰로 인지하고 e교환권 100원을 추가 제공합니다.
운영 원칙 안내
Klover 리뷰를 통한 리뷰를 작성해 주셔서 감사합니다. 자유로운 의사 표현의 공간인 만큼 타인에 대한 배려를 부탁합니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
  • 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
  • 도서와 무관한 내용의 리뷰
  • 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
  • 의성어나 의태어 등 내용의 의미가 없는 리뷰
신고하기
다른 고객이 작성리뷰에 대해 불쾌함을 느끼는 경우 신고를 할 수 있으며, 신고 자가 일정수준 이상 누적되면 작성하신 리뷰가 노출되지 않을 수 있습니다.

구매 후 리뷰 작성 시, e교환권 200원 적립

문장수집

문장수집 안내
문장수집은 고객님들이 직접 선정한 책의 좋은 문장을 보여주는 교보문고의 새로운 서비스입니다. 마음을 두드린 문장들을 기록하고 좋은 글귀들은 "좋아요“ 하여 모아보세요. 도서 문장과 무관한 내용 등록 시 별도 통보 없이 삭제될 수 있습니다.
리워드 안내
구매 후 90일 이내에 문장수집 작성 시 e교환권 100원을 적립해드립니다.
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.

구매 후 리뷰 작성 시, e교환권 100원 적립

이 책의 첫 기록을 남겨주세요

교환/반품/품절 안내

상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

이벤트
TOP

저자 모두보기

저자(글)

번역

매장별 재고 및 위치

할인쿠폰 다운로드

  • 쿠폰은 주문결제화면에서 사용 가능합니다.
  • 다운로드한 쿠폰은 마이 > 혜택/포인트 에서 확인 가능합니다.
  • 도서정가제 적용 대상 상품에 대해서는 정가의 10%까지 쿠폰 할인이 가능합니다.
  • 도서정가제 적용 대상 상품에 10% 할인이 되었다면, 해당 상품에는 사용하실 수
    없습니다.

적립예정포인트 안내

  • 통합포인트 안내

    • 통합포인트는 교보문고(인터넷, 매장), 핫트랙스(인터넷, 매장), 모바일 교보문고 등 다양한 곳에서 사용하실 수 있습니다.
    • 상품 주문 시, 해당 상품의 적립률에 따라 적립 예정 포인트가 자동 합산되고 주문하신 상품이 발송완료 된 후에 자동으로 적립됩니다.
    • 단, 쿠폰 및 마일리지, 통합포인트, e교환권 사용 시 적립 예정 통합포인트가 변동될 수 있으며 주문취소나 반품시에는 적립된 통합포인트가 다시 차감됩니다.
  • 통합포인트 적립 안내

    • 통합포인트는 도서정가제 범위 내에서 적용됩니다.
    • 추가적립 및 회원 혜택은 도서정가제 대상상품(국내도서, eBook등)으로만 주문시는 해당되지 않습니다.
  • 기본적립) 상품별 적립금액

    • 온라인교보문고에서 상품 구매시 상품의 적립률에 따라 적립됩니다.
    • 단 도서정가제 적용 대상인 국내도서,eBook은 15%내에서 할인율을 제외한 금액내로 적립됩니다.
  • 추가적립) 5만원 이상 구매시 통합포인트 2천원 추가적립

    • 5만원 이상 구매시 통합포인트 2천원 적립됩니다.
    • 도서정가제 예외상품(외서,음반,DVD,잡지(일부),기프트) 2천원 이상 포함시 적립 가능합니다.
    • 주문하신 상품이 전체 품절인 경우 적립되지 않습니다.
  • 회원혜택) 3만원이상 구매시 회원등급별 2~4% 추가적립

    • 회원등급이 플래티넘, 골드, 실버 등급의 경우 추가적립 됩니다.
    • 추가적립은 실결제액 기준(쿠폰 및 마일리지, 통합포인트, e교환권 사용액 제외) 3만원 이상일 경우 적립됩니다.
    • 주문 후 취소,반품분의 통합포인트는 단품별로 회수되며, 반품으로 인해 결제잔액이 3만원 미만으로 변경될 경우 추가 통합포인트는 전액 회수될 수 있습니다.

제휴 포인트 안내

제휴 포인트 사용

  • OK CASHBAG 10원 단위사용 (사용금액 제한없음)
  • GS&POINT 최대 10만 원 사용
더보기

구매방법 별 배송안내

배송 일정 안내

  • 출고 예정일은 주문상품의 결제(입금)가 확인되는 날 기준으로 상품을 준비하여 상품 포장 후 교보문고 물류센터에서 택배사로 전달하게 되는 예상 일자입니다.
  • 도착 예정일은 출고 예정일에서 택배사의 배송일 (약1~2일)이 더해진 날이며 연휴 및 토, 일, 공휴일을 제외한 근무일 기준입니다.
배송 일정 안내
출고예정일 도착예정일
1일이내 상품주문 후 2~3일 이내
2일이내 상품주문 후 3~4일 이내
3일이내 상품주문 후 4~5일 이내
4일이내 상품주문 후 5~6일 이내

연휴 및 토, 일, 공휴일은 제외됩니다.

당일배송 유의사항

  • 수도권 외 지역에서 선물포장하기 또는 사은품을 포함하여 주문할 경우 당일배송 불가
  • 회사에서 수령할 경우 당일배송 불가 (퇴근시간 이후 도착 또는 익일 배송 될 수 있음)
  • 무통장입금 주문 후 당일 배송 가능 시간 이후 입금된 경우 당일 배송 불가
  • 주문 후 배송지 변경 시 변경된 배송지에 따라 익일 배송될 수 있습니다.
  • 수도권 외 지역의 경우 효율적인 배송을 위해 각 지역 매장에서 택배를 발송하므로, 주문 시의 부록과 상이할 수 있습니다.
  • 각 지역 매장에서 재고 부족 시 재고 확보를 위해 당일 배송이 불가할 수 있습니다.

일반배송 시 유의사항

  • 날씨나 택배사의 사정에 따라 배송이 지연될 수 있습니다.
  • 수도권 외 지역 바로배송 서비스의 경우 경품 수령 선택 여부에 따라 도착 예정일이 변경됩니다.
  • 출고 예정일이 5일 이상인 상품의 경우(결제일로부터 7일 동안 미입고), 출판사 / 유통사 사정으로 품/절판 되어 구입이 어려울 수 있습니다. 이 경우 SMS, 메일로 알려드립니다.
  • 선물포장 주문 시 합배송 처리되며, 일부상품 품절 시 도착 예정일이 늦어질 수 있습니다.
  • 분철상품 주문 시 분철 작업으로 인해 기존 도착 예정일에 2일 정도 추가되며, 당일 배송, 해외 배송이 불가합니다.

해외주문 시 유의사항

  • 해외주문도서는 해외 거래처 사정에 의해 품절/지연될 수 있습니다.

Special order 주문 시 유의사항

  • 스페셜오더 도서나 일서 해외 주문 도서와 함께 주문 시 배송일이 이에 맞추어 지연되오니, 이점 유의해 주시기 바랍니다.

바로드림존에서 받기

  1. STEP 01
    매장 선택 후 바로드림 주문
  2. STEP 02
    준비완료 알림 시 매장 방문하기
  3. STEP 03
    바로드림존에서 주문상품 받기
  • 바로드림은 전국 교보문고 매장 및 교내서점에서 이용 가능합니다.
  • 잡지 및 일부 도서는 바로드림 이용이 불가합니다.
  • 각 매장 운영시간에 따라 바로드림 이용 시간이 달라질 수 있습니다.

수령 안내

  • 안내되는 재고수량은 서비스 운영 목적에 따라 상이할 수 있으므로 해당 매장에 문의해주시기 바랍니다.
  • 바로드림 주문 후 재고가 실시간 변동되어, 수령 예상 시간에 수령이 어려울 수 있습니다.

취소/교환/반품 안내

  • 주문 후 7일간 찾아가지 않으시면, 자동으로 결제가 취소됩니다.
  • 취소된 금액은 결제수단의 승인취소 및 예치금으로 전환됩니다.
  • 교환/반품은 수령하신 매장에서만 가능합니다.

사은품 관련 안내

  • 바로드림 서비스는 일부 1+1 도서, 경품, 사은품 등이 포함 되지 않습니다.

음반/DVD 바로드림시 유의사항

  • 음반/DVD 상품은 바로드림 주문 후 수령점 변경이 불가합니다. 주문 전 수령점을 꼭 확인해 주세요.
  • 사은품(포스터,엽서 등)은 증정되지 않습니다.
  • 커버이미지 랜덤발매 음반은 버전 선택이 불가합니다.
  • 광화문점,강남점,대구점,영등포점,잠실점은 [직접 찾아 바로드림존 가기], [바로드림존에서 받기] 로 주문시 음반 코너에서 수령확인이 가능합니다
  • 선물 받는 분의 휴대폰번호만 입력하신 후 결제하시면 받는 분 휴대폰으로 선물번호가 전달됩니다.
  • 문자를 받은 분께서는 마이 > 주문관리 > 모바일 선물내역 화면에서 선물번호와 배송지 정보를 입력하시면 선물주문이 완료되어 상품준비 및 배송이 진행됩니다.
  • 선물하기 결제하신 후 14일까지 받는 분이 선물번호를 등록하지 않으실 경우 주문은 자동취소 됩니다.
  • 또한 배송 전 상품이 품절 / 절판 될 경우 주문은 자동취소 됩니다.

바로드림 서비스 안내

  1. STEP 01
    매장 선택 후 바로드림 주문
  2. STEP 02
    준비완료 알림 시 매장 방문하기
  3. STEP 03
    바로드림존에서 주문상품 받기
  • 바로드림은 전국 교보문고 매장 및 교내서점에서 이용 가능합니다.
  • 잡지 및 일부 도서는 바로드림 이용이 불가합니다.
  • 각 매장 운영시간에 따라 바로드림 이용 시간이 달라질 수 있습니다.

수령 안내

  • 안내되는 재고수량은 서비스 운영 목적에 따라 상이할 수 있으므로 해당 매장에 문의해주시기 바랍니다.
  • 바로드림 주문 후 재고가 실시간 변동되어, 수령 예상시간에 수령이 어려울 수 있습니다.

취소/교환/반품 안내

  • 주문 후 7일간 찾아가지 않으시면, 자동으로 결제가 취소됩니다.
  • 취소된 금액은 결제수단의 승인취소 및 예치금으로 전환됩니다.
  • 교환/반품은 수령하신 매장에서만 가능합니다.

사은품 관련 안내

  • 바로드림 서비스는 일부 1+1 도서, 경품, 사은품 등이 포함되지 않습니다.

음반/DVD 바로드림시 유의사항

  • 음반/DVD 상품은 바로드림 주문 후 수령점 변경이 불가합니다. 주문 전 수령점을 꼭 확인해주세요.
  • 사은품(포스터,엽서 등)은 증정되지 않습니다.
  • 커버이미지 랜덤발매 음반은 버전 선택이 불가합니다.
  • 광화문점,강남점,대구점,영등포점,잠실점은 [직접 찾아 바로드림존 가기], [바로드림존에서 받기] 로 주문시 음반코너에서 수령확인이 가능합니다.
  1. STEP 01
    픽업박스에서 찾기 주문
  2. STEP 02
    도서준비완료 후 휴대폰으로 인증번호 전송
  3. STEP 03
    매장 방문하여 픽업박스에서 인증번호 입력 후 도서 픽업
  • 바로드림은 전국 교보문고 매장 및 교내서점에서 이용 가능합니다.
  • 잡지 및 일부 도서는 바로드림 이용이 불가합니다.
  • 각 매장 운영시간에 따라 바로드림 이용 시간이 달라질 수 있습니다.

수령 안내

  • 안내되는 재고수량은 서비스 운영 목적에 따라 상이할 수 있으므로 해당 매장에 문의해주시기 바랍니다.
  • 바로드림 주문 후 재고가 실시간 변동되어, 수령 예상시간에 수령이 어려울 수 있습니다.

취소/교환/반품 안내

  • 주문 후 7일간 찾아가지 않으시면, 자동으로 결제가 취소됩니다.
  • 취소된 금액은 결제수단의 승인취소 및 예치금으로 전환됩니다.
  • 교환/반품은 수령하신 매장에서만 가능합니다.

사은품 관련 안내

  • 바로드림 서비스는 일부 1+1 도서, 경품, 사은품 등이 포함되지 않습니다.

음반/DVD 바로드림시 유의사항

  • 음반/DVD 상품은 바로드림 주문 후 수령점 변경이 불가합니다. 주문 전 수령점을 꼭 확인해주세요.
  • 사은품(포스터,엽서 등)은 증정되지 않습니다.
  • 커버이미지 랜덤발매 음반은 버전 선택이 불가합니다.
  • 광화문점,강남점,대구점,영등포점,잠실점은 [직접 찾아 바로드림존 가기], [바로드림존에서 받기] 로 주문시 음반코너에서 수령확인이 가능합니다.

도서 소득공제 안내

  • 도서소득공제란?

    • 2018년 7월 1일 부터 근로소득자가 신용카드 등으로 도서구입 및 공연을 관람하기 위해 사용한 금액이 추가 공제됩니다. (추가 공제한도 100만원까지 인정)
      • 총 급여 7,000만 원 이하 근로소득자 중 신용카드, 직불카드 등 사용액이 총급여의 25%가 넘는 사람에게 적용
      • 현재 ‘신용카드 등 사용금액’의 소득 공제한도는 300만 원이고 신용카드사용액의 공제율은 15%이지만, 도서·공연 사용분은 추가로 100만 원의 소득 공제한도가 인정되고 공제율은 30%로 적용
      • 시행시기 이후 도서·공연 사용액에 대해서는 “2018년 귀속 근로소득 연말 정산”시기(19.1.15~)에 국세청 홈택스 연말정산간소화 서비스 제공
  • 도서 소득공제 대상

    • 도서(내서,외서,해외주문도서), eBook(구매)
    • 도서 소득공제 대상 상품에 수반되는 국내 배송비 (해외 배송비 제외)
      • 제외상품 : 잡지 등 정기 간행물, 음반, DVD, 기프트, eBook(대여,학술논문), 사은품, 선물포장, 책 그리고 꽃
      • 상품정보의 “소득공제” 표기를 참고하시기 바랍니다.
  • 도서 소득공제 가능 결제수단

    • 카드결제 : 신용카드(개인카드에 한함)
    • 현금결제 : 예치금, 교보e캐시(충전에한함), 해피머니상품권, 컬쳐캐쉬, 기프트 카드, 실시간계좌이체, 온라인입금
    • 간편결제 : 교보페이, 네이버페이, 삼성페이, 카카오페이, PAYCO, 토스, CHAI
      • 현금결제는 현금영수증을 개인소득공제용으로 신청 시에만 도서 소득공제 됩니다.
      • 교보e캐시 도서 소득공제 금액은 교보eBook > e캐시 > 충전/사용내역에서 확인 가능합니다.
      • SKpay, 휴대폰 결제, 교보캐시는 도서 소득공제 불가
  • 부분 취소 안내

    • 대상상품+제외상품을 주문하여 신용카드 "2회 결제하기"를 선택 한 경우, 부분취소/반품 시 예치금으로 환원됩니다.

      신용카드 결제 후 예치금으로 환원 된 경우 승인취소 되지 않습니다.

  • 도서 소득공제 불가 안내

    • 법인카드로 결제 한 경우
    • 현금영수증을 사업자증빙용으로 신청 한 경우
    • 분철신청시 발생되는 분철비용

알림 신청

아래의 알림 신청 시 원하시는 소식을 받아 보실 수 있습니다.
알림신청 취소는 마이룸 > 알림신청내역에서 가능합니다.

리눅스 커널 심층분석
개정판 3 판
한달 후 리뷰
/ 좋았어요
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 올해 주식 투자를 시작했다. 아무것도 모르고 초심자의 행운으로 분유값 정도를 벌고 나니, 조금 더 공부해보고 싶어져서 『초격차 투자법』을 구매했다.
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
기대가됩니다~
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
기대가됩니다~
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
기대가됩니다~
기대가됩니다~
기대가됩니다~
기대가됩니다~
이 구매자의 첫 리뷰 보기
/ 좋았어요
하루밤 사이 책한권을 읽은게 처음이듯 하다. 저녁나절 책을 집어든게 잘못이다. 마치 게임에 빠진 아이처럼 잠을 잘수없게 만든다. 결말이 어쩌면 당연해보이는 듯 하여도 헤어나올수 없는 긴박함이 있다. 조만간 영화화되어지지 않을까 예견해 본다. 책한권으로 등의 근육들이 오그라진 느낌에 아직도 느껴진다. 하루밤 사이 책한권을 읽은게 처음이듯 하다. 저녁나절 책을 집어든게 잘못이다. 마치 게임에 빠진 아이 처럼 잠을 잘수없게 만든다. 결말이 어쩌면 당연해보이는 듯 하여도 헤어나올수 없는 긴박함이 있다. 조만간 영화화되어지지 않을까..
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
기대가됩니다~
신고

신고 사유를 선택해주세요.
신고 내용은 이용약관 및 정책에 의해 처리됩니다.

허위 신고일 경우, 신고자의 서비스 활동이 제한될 수 있으니 유의하시어
신중하게 신고해주세요.

판형알림

  • A3 [297×420mm]
  • A4 [210×297mm]
  • A5 [148×210mm]
  • A6 [105×148mm]
  • B4 [257×364mm]
  • B5 [182×257mm]
  • B6 [128×182mm]
  • 8C [8절]
  • 기타 [가로×세로]