메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

리눅스 커널의 이해

리눅스 커널의 이해

한빛미디어

번역서

절판

  • 저자 : 다니엘 보베이 , 마르코 체사티
  • 번역 : 이호 , 심마로
  • 출간 : 2001-12-26
  • 페이지 : 864 쪽
  • ISBN : 8979141599
  • 물류코드 :1159
  • 초급 초중급 중급 중고급 고급
5점 (1명)
좋아요 : 14

입출력 포트에서 프로세스 관리까지 - 커널 철저 해부

리눅스가 왜 그렇게 효율적인지 의문을 가져본 적이 있는가? 조금은 별난 프로그램을 사용하려고 할 때 리눅스 성능이 제대로 발휘되는지 궁금한가? 커널 소스 코드를 들여다보려 한 적이 있는가? 위 질문의 답 중에 하나라도 "예"가 있다면, 이 책은 바로 여러분을 위한 책이다. 이 책은 커널을 탐구하는 데 필요한 유익하고, 심오한 통찰력을 제공한다.

비록 리눅스를 우연한 기회로 시작한 해커의 실험으로 보는 이도 있지만, 이제 리눅스는 점점 더 많은 기관의 서버로 자리잡고 있으며, 프로그래밍 기술 역시 나날이 정교해지고 있다. 또한 진보적인 운영체제 개념을 표방하며, 광범위한 분야에서 매우 견고하고, 효율적으로 동작한다고 알려져 있다.

이 책을 읽고 나면, 리눅스의 성능을 최고로 끌어올리는 조건이 무엇인지 이해할 수 있다. 또한 프로세스 스케줄링과 파일 접근 그리고 다양한 환경에서 메모리를 관리하는 동안 시스템 반응을 향상시켜 달라는 요구를 만족시킬 방법도 알 수 있다. 이 책에서는 각 주제를 설명할 때 그것이 왜 중요한지 설명하고, 커널 동작을 유닉스 프로그래머와 사용자에게 익숙한 시스템 콜이나 유틸리티와 연관지어 이야기한다. 커널의 근본 원리가 쉽게 변하지 않는 점을 감안할 때 이 책은 다른 운영체제의 작동 원리나 구조를 파악하는 데도 도움이 될 것이다.

주요 내용

  • 파일 버퍼링과 프로세스 스와핑, DMA를 비롯한 메모리 관리
  • 가상 파일시스템과 Ext2 파일시스템
  • 프로세스 생성과 스케줄링
  • 시그널과 인터럽트, 장치 드라이버의 기본 인터페이스
  • 타이밍
  • 커널 내 동기화
  • 프로세스간 통신(IPC)
  • 프로그램 실행

다니엘 보베이 저자

다니엘 보베이

Daniel P. Bovet

UCLA에서 컴퓨터 과학과 박사 학위를 취득했으며, 지금은 로마 대학교에서 전임 교수로 재직 중이다. 25년이 넘도록 오픈 소스에 관심을 가져왔으며, 리누스 토발즈와 그를 따르는 많은 사람들의 업적에 매료되어 지난 몇 년간 리눅스의 신비를 풀어내려 노력하고 있다. 이런 작업 후에 자신이 알아낸 지식을 책을 옮겼다.

마르코 체사티 저자

마르코 체사티

로마 대학에서 컴퓨터과학 박사 학위와 수학 학위를 취득했다. 동교 공과대학원 컴퓨터과학과 연구 조교로 재직 중이다. 또한 지난 3년 동안 학생들에게 재미있고, 색다른 방법으로 리눅스 커널을 바꾸는 방법을 가르쳐 왔다.

이호 역자

이호

1991년 서울대학교 금속공학과에 입학한 후 컴퓨터 연구회(SCSC)에 들어가면서 컴퓨터에 관심을 갖기 시작했다. 프로그래밍을 좋아하며, 특히 대규모 프로그램을 설계하는 일을 좋아한다. 현재는 리눅스원(주)에서 연구원으로 일하고 있으며, 리눅스 커널과 디바이스 드라이버, 프로그래밍, 임베디드 시스템에 관심이 아주 많다. 또한 음악과 연극을 좋아하며, 취미 활동으로 기타를 연주하기도 한다.

심마로 역자

심마로

PC에서 사용할 유닉스를 찾던 92년 겨울에 리눅스를 처음으로 접했다. 93년부터 서울대학교 컴퓨터공학과 대학원에서 리눅스를 사용하면서, 다른 유닉스 기계에도 GNU 소프트웨어를 설치해서 리눅스와 비슷한 환경을 만들어가기 시작했다. 데이터베이스와 관련된 오픈 소스인 Postgres, MySQL 등에 관심이 많다. 지금은 리눅스원(주)에서 연구원으로 재직 중이며, 엔터프라이즈 환경에 리눅스를 적용하는 분야에 주력하고 있다.

홈페이지: http://linuxkernel.net

역자 서문
감수자 서문
차례
서문

1장. 소개
    리눅스와 다른 유닉스 계열 커널 비교
    하드웨어 의존성
    리눅스 버전
    운영체제의 기초 개념
            멀티유저 시스템
            사용자와 그룹
            프로세스
            커널 구조
    유닉스 파일시스템 개요
            파일
            하드 링크와 소프트 링크
            파일 유형
            파일 디스크립터와 아이노드
            접근 권한과 파일 모드
            파일을 다루는 시스템 콜
    유닉스 커널 개요
            프로세스와 커널 모델
            프로세스 구현
            재진입 가능한 커널
            프로세스 주소 공간
            동기화와 임계 영역
            시그널과 프로세스간 통신
            프로세스 관리
            메모리 관리
            장치 드라이버

2장. 메모리 주소 지정
    메모리 주소
    하드웨어 세그먼테이션
            세그먼테이션 레지스터
            세그먼트 디스크립터
            세그먼트 셀렉터
            세그먼테이션 유닛
    리눅스 세그먼테이션
    하드웨어 페이징
            정규 페이징
            확장 페이징
            하드웨어 보호 정책
            페이징 예제
            3단계 페이징
            하드웨어 캐시
            변환 참조 버퍼
    리눅스 페이징
            선형 주소 필드
            페이지 테이블 다루기
            예약된 페이지 프레임
            프로세스 페이지 테이블
            커널 페이지 테이블
    리눅스 2.4 예상

3장. 프로세스
    프로세스 디스크립터
            프로세스 상태
            프로세스 구별
            프로세스간 친족 관계
            대기큐
            프로세스 사용 제한
    프로세스 전환
            하드웨어 컨텍스트
            태스크 상태 세그먼트
            switch_to 매크로
            부동 소수점 레지스터 저장
    프로세스 생성
            clone(), fork(), vfork() 시스템 콜
            커널 스레드
    프로세스 끝내기
            프로세스 종료
            프로세스 제거
    리눅스 2.4 예상

4장. 인터럽트와 예외
    인터럽트 시그널 역할
    인터럽트와 예외
            인터럽트와 예외 벡터
            IRQ와 인터럽트
            예외
            인터럽트 디스크립터 테이블
            하드웨어적인 인터럽트와 예외 처리
    예외 핸들러와 인터럽트 핸들러의 중첩 실행
    인터럽트 디스크립터 테이블 초기화
            인터럽트와 트랩, 시스템 게이트
            임시적인 IDT 초기화
    예외 핸들링
            예외 핸들러를 위한 레지스터 저장
            예외 핸들러에서 복귀
            예외 핸들러 호출
    인터럽트 핸들링
            인터럽트 벡터
            IRQ 자료 구조
            인터럽트 핸들러를 위한 레지스터 저장
            do_IRQ() 함수
            인터럽트 서비스 루틴
            하반부
            IRQ 선의 동적 핸들링
    인터럽트와 예외에서 복귀
            ret_from_intr() 함수
            ret_from_sys_call() 함수
            ret_from_exception() 함수
    리눅스 2.4 예상

5장. 타이밍 측정
    하드웨어 시계
            실시간 시계
            타임스탬프 카운터
            프로그래밍 가능한 구간 타이머
    타이머 인터럽트 핸들러
    PIT의 인터럽트 서비스 루틴
    TIMER_BH 하반부 함수
            날짜와 시간 갱신
            자원 사용 통계 갱신
            CPU 시분할
            타이머 역할
            정적 타이머
            동적 타이머
            동적 타이머 응용
    타이밍 측정과 관련한 시스템 콜
            time(), ftime(), gettimeofday() 시스템 콜
            adjtimex() 시스템 콜
            setitimer()와 alarm() 시스템 콜
    리눅스 2.4 예상

6장. 메모리 관리
    페이지 프레임 관리
            페이지 프레임 요구와 해제
            버디 시스템 알고리즘
    메모리 영역 관리
            슬랩 할당자
            캐시 디스크립터
            슬랩 디스크립터
            일반 캐시와 특수 캐시
            버디 시스템의 슬랩 할당자 인터페이스
            캐시에 슬랩 할당
            캐시에서 슬랩 제거
            객체 디스크립터
            메모리에서 객체 정렬
            슬랩 컬러링
            캐시에 객체 할당
            캐시에서 객체 해제
            일반 목0적 객체
    불연속적0인 메모리 영역 관리
            불연속적인 메모리 영역의 선형 주소
            불연속적인 메모리 영역 디스크립터
            불연속적인 메모리 영역 할당
            불연속적0인 메모리 영역 해제
    리눅스 20.4 예상

7장. 프로세스 주소 공간
    프로세스 주소 공간
    메모리 디스크립터
    메모리 영역
            메모리 영역 자료 구조
            메모리 영역 접근 권한
            메모리 영역 다루기
            선형 주소 구간 할당
            선형 주소 구간 해제
    페이지 폴트 예외 핸들러
            주소 공간 밖 잘못된 주소 처리
            주소 공간 내 잘못된 주소 처리
            요구 페이징
            Copy On Write
    프로세스 주소 공간 생성과 삭제
            프로세스 주소 공간 생성
            프로세스 주소 공간 삭제
    힙 관리
    리눅스 2.4 예상

8장. 시스템 콜
    포직스 API와 시스템 콜
    시스템 콜 핸들러와 서비스 루틴
            시스템 콜 초기화
            system_call() 함수
            매개변수 전달
            매개변수 확인
            프로세스 주소 공간에 접근
            동적 주소 검사: 수선 코드
    포장 함수
    리눅스 2.4 예상

9장. 시그널
    시그널의 역할
            시그널을 받았을 때 수행하는 동작
            시그널과 관련한 자료 구조
            시그널 자료구조에 대한 작업
    시그널 보내기
            send_sig_info()와 send_sig() 함수
            force_sig_info()와 force_sig() 함수
    시그널 받기
            시그널 무시하기
            시그널의 기본 동작 수행
            시그널 잡기
            시스템 콜 재실행
    실시간 시그널
            시그널 처리와 관련한 시스템 콜
            kill() 시스템 콜
            시그널 동작 바꾸기
            대기 중인 블록된 시그널 검사
            블록된 시그널 집합 수정
            프로세스 보류
            실시간 시그널을 위한 시스템 콜
    리눅스 2.4 예상

10장. 프로세스 스케줄링
    스케줄링 정책
            프로세스 선점
            퀀텀의 지속 시간은 어느 정도여야 하는가?
    스케줄링 알고리즘
            스케줄러가 사용하는 자료 구조
            schedule() 함수 
            실행 가능한 프로세스가 얼마나 우수한가?
            리눅스/SMP 스케줄러
            스케줄링 알고리즘 성능
    스케줄링과 관련한 시스템 콜
            nice() 시스템 콜
            getpriority()와 setpriority() 시스템 콜
            실시간 프로세스와 관련한 시스템 콜
    리눅스 2.4 예상

11장. 커널 동기화
    커널 제어 경로
    동기화 기법
            커널 모드 내 프로세스 선점 금지
            원자적인 연산 
            인터럽트 금지
            커널 세마포어를 이용한 락킹
            세마포어에서 데드락 피하기
    SMP 구조
            공통 메모리
            하드웨어적인 캐시 동기화 지원
            SMP 원자적인 연산
            분산 인터럽트 처리
    리눅스/SMP 커널
            주요 SMP 자료 구조
            스핀락
            읽기/쓰기 스핀락
            리눅스/SMP 인터럽트 처리
            리눅스/SMP 하반부 처리
            전역 커널 락과 지역 커널 락
            프로세서간 인터럽트
    리눅스 2.4 예상

12장. 가상 파일시스템
    VFS의 역할
            공통 파일 모델
            VFS가 처리하는 시스템 콜
    VFS 자료 구조
            수퍼블록 객체
            아이노드 객체
            파일 객체
            디렉토리 파일 객체에 대한 특수 처리
            디엔트리 객체
            디엔트리 캐시
            프로세스와 관련한 파일
    파일시스템 마운트하기
            파일시스템 등록
            루트 파일시스템 마운트하기
            일반 파일시스템 마운트하기
            파일시스템 언마운트하기
    경로명 탐색
    VFS 시스템 콜 구현
            open() 시스템 콜
            read()와 write() 시스템 콜
            close() 시스템 콜
    파일 락킹
            리눅스 파일 락킹
            파일 락킹 자료 구조
            FL_LOCK 락
            FL_POSIX 락
    리눅스 2.4 예상

13장. 입출력 장치 관리
    입출력 아키텍처
            입출력 포트
            입출력 인터페이스
            장치 제어기
            DMA
    파일을 입출력 장치와 연관시키기
            장치 파일
            장치 파일의 VFS 처리
    장치 드라이버
            커널 지원 수준
            입출력 연산 모니터링
            입출력 포트 접근
            IRQ 요청
            DMA 가동
            장치 제어기의 지역 메모리
    문자 장치 처리
    블록 장치 처리
            섹터, 블록, 버퍼
            버퍼 입출력 연산 개요
            미리 읽기의 역할
            block_read()와 block_write() 함수
            bread()와 breada() 함수
            버퍼 헤드
            블록 장치 요청
            요청큐와 블록 장치 드라이버 디스크립터
            ll_rw_block() 함수
            저수준 요청 처리
    페이지 입출력 연산
            페이지 입출력 연산 시작
            페이지 입출력 연산 종료
    리눅스 2.4 예상

14장. 디스크 캐시
    버퍼 캐시
            버퍼 헤드 자료 구조
            getblk() 함수
            버퍼 사용 카운터
            버퍼 할당
            디스크에 더티 버퍼 기록하기
    페이지 캐시
            페이지 캐시 자료 구조
            페이지 캐시 처리 함수
            페이지 캐시 튜닝
    리눅스 2.4 예상

15장. 정규 파일 접근
    정규 파일 읽기와 쓰기
            정규 파일에서 읽기
            정규 파일 미리 읽기
            정규 파일에 쓰기
    메모리 매핑
            메모리 매핑 자료 구조
            메모리 영역과 관련한 연산
            메모리 매핑 생성
            메모리 매핑 제거
            메모리 매핑에 대한 요구 페이징
            더티 메모리 매핑 페이지를 디스크로 플러시하기
    리눅스 2.4 예상

16장. 스와핑: 메모리 해제 방법
    스와핑이란 무엇인가?
            스왑 아웃할 페이지 종류
            스왑 영역 내 페이지 분산 방법
            스왑 아웃될 페이지 선택 방법
            페이지 스왑 아웃을 수행할 시기
    스왑 영역
            스왑 영역 디스크립터
            스왑 아웃된 페이지 식별자 
            스왑 영역의 활성화와 비활성화
            빈 페이지 슬롯 찾기
            페이지 슬롯의 할당과 해제
    스왑 캐시
    스왑 페이지 전송
            페이지 프레임과 페이스 슬롯의 락킹
            rw_swap_page() 함수
            read_swap_cache_async() 함수
            rw_swap_page_nocache() 함수
    페이지 스왑 아웃
            try_to_swap_out() 함수
            공유 메모리 매핑의 페이지 스왑 아웃
    페이지 스왑 인
    페이지 프레임 해제
    빈 메모리 감시하기
            페이지, 스왑, 버퍼 캐시에서 페이지 회수하기
            디엔트리와 아이노드 캐시에서 페이지 회수하기
            try_to_free_pages() 함수
            do_try_to_free_pages() 함수
            kswapd 커널 스레드
    리눅스 2.4 예상

17장. Ext2 파일시스템
    일반적인 특성
    디스크 자료 구조
            수퍼블록
            그룹 디스크립터와 비트맵
            아이노드 테이블
            여러 파일 유형이 디스크 블록을 사용하는 방법
    메모리 자료 구조
            ext2_sb_info와 ext2_inode_info 구조
            비트맵 캐시
    파일시스템 생성
    Ext2 메소드
            Ext2 수퍼블록 연산
            Ext2 아이노드 연산
            Ext2 파일 연산
    디스크 공간 관리
            아이노드 생성
            아이노드 제거
            데이터 블록 주소 지정
            파일 구멍
            데이터 블록 할당
            데이터 블록 해제
    Ext2 정규 파일 읽기와 쓰기
    리눅스 2.4 예상

18장. 프로세스 통신
    파이프
            파이프 사용하기
            파이프에 자료 구조
            파이프 생성과 제거
            파이프에서 읽기
            파이프에 쓰기
    FIFO
            FIFO 생성과 열기
            FIFO 읽기와 쓰기
    시스템 V IPC
            IPC 자원 사용하기
            ipc() 시스템 콜
            IPC 세마포어
            IPC 메시지
            IPC 공유 메모리
    리눅스 2.4 예상

19장. 프로그램 실행 
    실행 가능한 파일
            프로세스의 자격과 특질
            명령행 인자와 셸 환경
            라이브러리
            프로그램 세그먼트와 프로세스 메모리 영역
            실행 추적
    실행 가능한 형식
    실행 도메인
    exec 계열 함수
    리눅스 2.4 예상

부록 A. 시스템 시작
부록 B. 모듈
부록 C. 소스 코드 구조
참고 문헌

찾아보기

운영체제란 반석위에 집을 짓는 사람이라면

그 기초가 되는 운영체제에 대한 호기심을 가지지 않을 수 없을 것이다.

나도 예외는 아니어서 용기를 내어 이 책을 읽게되었다.



윈도 프로그래머이지만 리눅스 커널에 대한 책을 택한 이유는

이미 검증된 유닉스 계열의 "오픈 소스" 운영체제란 점 때문이었다.

내 구미대로 능력 껏 수정, 혹은 새로만들 수 있는 토대가 될 수 있다는

꿈을 꾸었기 때문이다.



"리눅스 커널의 이해"는 이런 나의 기대를 저버리지 않았다.

결론적으로 운영체제가 어떻게 구성되어 있는지에 대한 감을 잡을 수 있는데

좋은 길잡이 역할을 하였다.

운영체제 수업의 교재로 시작한 책답게 (실습하기 편하도록?)

80x86 CPU에 촛점이 맞추어져 있어 테스트하기 편했으며,

많은 학생들에게 검증된 이해하기 쉬운 설명이 좋았고, 더군다나

난해한 코드는 쉬운 코드로 바꾸어 설명하고 있어 약간의 C와 어셈블리 지식으로

다가가기에 큰 어려움이 없었다.



리눅스의 전반적은 모습부터 많은 지면을 할애하여 유닉스 커널의 핵심이라 할 수 있는

프로세스와 메모리 관리에 대하여 자세히 설명하고 있다.

부록으로 첨부된 리눅스의 부팅 과정, 모듈 및 소스 코드 구조에 대한 내용도

리눅스의 이해에 도움이 되었다.

다만, 파일 시스템, 장치 드라이버, 네트워크는 자세히 다루고 있지 않기 때문에

별도의 리눅스 운영체제에 대한 전반적인 참고서가 또 필요할 것같다.



이책의 장점이라면, 보유한 리눅스의 성능을 업그레이드 하는 방법이라던지,



최고의 리눅서 혹은 시스템 프로그래머로의 힘들고 먼길에 친절한 친구로서

부족함이 없는 것같다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
리눅스 커널의 이해
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
리눅스 커널의 이해
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
리눅스 커널의 이해
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실