이미 소장하고 있다면 판매해 보세요.
|
1장 소개
리눅스와 다른 유닉스 계열 커널 비교 하드웨어 의존성 리눅스 버전 운영체제의 기초 개념 유닉스 파일 시스템 개요 유닉스 커널의 개요 2장 메모리 주소 지정 메모리 주소 하드웨어 세그먼테이션 리눅스에서의 세그먼테이션 하드웨어 페이징 리눅스 페이징 3장 프로세스 프로세스와 경량 프로세스, 스레드 프로세스 디스크립터 프로세스 전환 프로세스 생성 프로세스 끝내기 4장 인터럽트와 예외 인터럽트 신호의 역할 인터럽트와 예외 예외 핸들러와 인터럽트 핸들러의 중첩 실행 인터럽트 디스크립터 테이블 초기화 예외 처리 인터럽트 처리 소프트 IRQ와 소작업 작업 큐 인터럽트와 예외에서 복귀 5장 커널 동기화 커널이 요청을 서비스하는 방법 동기화 원시 기법 커널 자료 구조로의 접근 동기화 경쟁 조건 방지의 예 6장 타이밍 측정 클록와 타이머 회로 리눅스 시간 관리 구조 시간과 날짜 갱신 시스템 통계 갱신 소프트웨어 타이머와 지연 함수 타이밍 측정 관련 시스템 콜 7장 프로세스 스케줄링 스케줄링 정책 스케줄링 알고리즘 스케줄러가 사용하는 자료 구조 스케줄러가 사용하는 함수 멀티프로세서 시스템에서 실행 큐 부하 조절 스케줄링 관련 시스템 콜 8장 메모리 관리 페이지 프레임 관리 CPU별 페이지 프레임 캐시 메모리 영역 관리 불연속적인 메모리 영역 관리 9장 프로세스 주소 공간 프로세스의 주소 공간 메모리 디스크립터 메모리 구역 페이지 폴트 예외 핸들러 프로세스 주소 공간의 생성과 제거 힙 관리 10장 시스템 콜 POSIX API와 시스템 콜 시스템 콜 핸들러와 서비스 루틴 시스템 콜로의 진입과 복귀 매개 변수 확인 커널 래퍼 루틴 11장 시그널 시그널의 역할 시그널 발생 시그널 배달 시그널 처리 관련 시스템 콜 12장 가상파일 시스템 가상 파일 시스템의 역할 VFS 자료 구조 파일 시스템 유형 파일 시스템 다루기 파일 시스템 마운트하기 경로명 탐색 VFS 시스템 콜 구현 파일 락킹 13장 입출력 아키텍처와 디바이스 드라이버 입출력 아키텍처 디바이스 드라이버 모델 장치 파일 디바이스 드라이버 문자 장치 드라이버 14장 블록장치 드라이버 블록 장치 다루기 일반 블록 계층 입출력 스케줄러 블록 장치 드라이버 블록 장치 파일 열기 15장 페이지 캐시 페이지 캐시 페이지 캐시에 블록 저장하기 디스크에 더티 페이지 쓰기 sync( ), fsync( ), fdatasync( ) 시스템 콜 16장 파일 접근 파일 읽기와 쓰기 메모리 매핑 직접 입출력 전송 비동기 입출력 17장 페이지 프레임 회수 페이지 프레임 회수 알고리즘 역 매핑 PFRA 구현 스와핑 스왑 캐시 18장 EXT2, EXT3 파일 시스템 Ext2의 일반적인 특징 Ext2 디스크 자료 구조 Ext2 메모리 자료 구조 Ext2 파일 시스템 생성 Ext2 메소드 Ext2 디스크 공간 관리 Ext3 파일 시스템 19장 프로세스 통신 파이프 FIFO 시스템 V IPC POSIX 메시지 큐 20장 프로그램 실행 실행 파일 실행 파일 형식 실행 도메인 exec 계열 함수 부록 A 시스템 시작 부록 B 모듈 참고문헌 찾아보기 |
|
1장. 소개
이 장에서는 독자의 이해를 돕기 위해 유닉스 커널의 내부에는 무엇이 있으며, 어떻게 리눅스가 다른 유명한 유닉스 시스템과 경쟁할 수 있는지의 전반적인 모습을 제시한다. 2장. 메모리 주소 지정 모든 유닉스 커널의 핵심은 메모리 관리이다. 여기에서는 80x86 프로세서가 메모리에 있는 데이터를 가리키기 위해 가지고 있는 회로와 리눅스가 이를 활용하는 방법을 설명한다. 3장. 프로세스 리눅스가 제공하는 중요한 추상 개념인 프로세스를 소개한다. 각 프로세스를 특권이 없는 사용자 모드(Unprivileged User Mode)와 특권이 있는 커널 모드(Privileged Kernel Mode)에서 어떻게 실행하는지 설명한다. 4장. 인터럽트와 예외 사용자 모드와 커널 모드 사이의 전환을 일으키는 '인터럽트(Interrupt)'와 '예외(Exception)'라는 정착된 하드웨어 메커니즘을 설명한다. 5장. 커널 동기화 커널은 여러 장치 및 프로세서에서 나오는 인터럽트를 처리해야 하는 경우가 많이 있다. 커널이 이런 모든 요청을 중첩해서 실행할 수 있게 하려면 동기화 기법이 필요한데 이 장은 유니프로세서 시스템과 모두를 위한 동기화 기법을 논의한다. 6장. 타이머 측정 인터럽트들 중 하나는 리눅스가 경과한 시간을 다루는데 매우 중요하다. 이 장에서는 이를 자세히 설명한다. 7장. 프로세스 스케줄링 리눅스가 시스템에 있는 모든 동작 중인 프로세스를 차례로 실행하여 모든 프로세스가 자신의 일을 끝마칠 수 있게 하는 방법을 설명한다. 8장. 메모리 관리 시스템에 있는 가장 중요한 자원인(물론 프로세서를 제외하고) 사용 가능한 메모리를 다루는데 필요한 복잡한 기법을 설명한다. 이 자원을 리눅스 커널과 사용자 애플리케이션 모두에 할당해야 한다. 9장. 프로세스 주소 공간 커널이 메모리를 많이 사용하는 애플리케이션의 메모리 요청을 어떻게 처리하는지 보여준다. 10장. 시스템 콜 사용자 모드에서 실행중인 프로세스가 커널에 서비스를 요청하는 방법을 설명한다. 11장. 시그널 한 프로세스가 다른 프로세스에 동기화 시그널을 전송하는 방법을 설명한다. 12장. 가상 파일시스템 또 다른 중요한 주제로 리눅스에서 파일 시스템을 구현하는 방법을 알아볼 차례이다. 이 주제를 놓고 여러 장이 연속해서 다루는 데 먼저 이 장에서는 여러 가지 서로 다른 파일 시스템을 지원하는 일반적인 계층(레이어)을 소개한다. 13장. 입출력 아키텍처와 디바이스 드라이버 실제 장치에 대해 커널이 어떻게 연산을 수행하는지 살펴본다. 또한 인텔 80x86의 입출력 구조와 리눅스 디바이스 드라이버 모델을 소개한다. 14장. 블록 디바이스 드라이버 리눅스에는 하드웨어 장치에 도달할 수 있는 관문을 제공하는 특수한 파일이 있다. 여기에서는 이러한 특수 파일과 이에 대응하는 하드웨어의 디바이스 드라이버를 살펴본다. 15장. 페이지 캐시 디스크 접근 시간도 알고 넘어가야 할 중요한 주제 중 하나이다. 이 장에서는 RAM을 현명하게 사용하여 디스크의 접근 횟수를 줄이고, 그 결과 시스템 성능을 현저히 높이는 방법을 보여준다. 16장. 파일 접근 앞에서 다룬 내용을 바탕으로 사용자 애플리케이션이 일반 파일에 접근하는 방법을 설명한다. 17장. 페이지 프레임 회수 리눅스에서 항상 사용 가능한 충분한 메모리가 있도록 보장하는 기법을 설명한다. 이 장을 끝으로 리눅스의 메모리 관리에 관한 논의를 마친다. 18장. Ext2, Ext3 파일 시스템 파일을 다루는 마지막 장으로 가장 많이 사용하는 리눅스 파일 시스템인 Ext2와 최근에 이를 더욱 개선한 Ext3을 설명한다. 19장. 프로세스 통신 시그널 외에 사용자 모드 프로세스가 사용할 수 있는 통신 방법을 소개한다. 20장. 프로그램 실행 사용자 애플리케이션을 시작하는 방법을 설명한다. 부록 A. 시스템 시작 리눅스가 부팅하는 과정을 간단히 설명한다. 부록 B. 모듈 실행중인 커널을 동적으로 재구성하여 필요에 따라 기능을 추가하고 제거하는 방법을 설명한다. |
|
리눅스 커널이란
-. 커널은 말 그대로 메모리에 상주하여 시스템 디바이스와 메모리, 프로세스를 관리하고, 입출력을 처리하는 등 운영체제의 핵심 역할을 수행하는 프로그램이다. 모든 운영체제에는 커널이 있고, 그 성능에 따라 운영체제 전체의 성능이 영향을 받는다. 리눅스 운영체제 또한 커널이 있다. 이 커널을 리눅스 커널이라고 한다. 리눅스 커널의 가장 큰 특징은 사용자 스스로가 커널을 만들 수 있다는 것이다. 리눅스의 다른 프로그램처럼 커널도 기본적으로 소스 형태으로 배포되며 배포판 패키지, 혹은 ftp나 BBS유저그룹을 통해 내려받을 수 있다. 다른 운영체제의 커널에 비해 오픈소스인 리눅스 커널은 유저에 의해서 더욱 빠르고 강한 커널로 발전하고 있다. |
|
커널 2.6 완벽 분석! 새로운 커널 세계의 문을 연다
리눅스가 어떤 원리로 동작하는지, 그리고 어떻게 여러 종류의 시스템에서 잘 동작하는지를 제대로 이해하기 위해서는 운영체제의 핵심, 즉 리눅스 커널에 깊숙히 들어가 볼 필요가 있다. 리눅스 커널은 CPU와 외부 세계 사이의 모든 상호작용을 처리하며, 어떤 프로그램이 프로세서의 시간을 어떤 순서로 사용할지 결정한다. 또한 한정된 메모리를 관리하여 수백 개의 프로세스가 시스템을 효율적으로 공유할 수 있도록 하며, 데이터 전송 순서를 관리하여 CPU보다 상대적으로 느린 하드디스크를 CPU가 필요 이상으로 기다리지 않도록 한다. 이 책은 커널에서 사용되는 주요 자료구조, 알고리즘, 프로그래밍 트릭으로 여러분을 안내하는 길잡이다. 저자들은 컴퓨터 안에서 실제로 작업이 어떻게 이루어지는지 알고 싶어하는 독자들에게 표면적인 특징들을 넘어서는 값진 식견을 제공한다. 또한 인텔 x86 아키텍처를 위한 주요 특징에 대해서도 설명하며 관련된 코드 세그먼트는 한 줄씩 자세히 설명한다. 그렇다고 단순히 코드의 기능만을 다루는 것은 아니다. 리눅스가 왜 그렇게 동작하는지 이해하기 위한 바탕이 되는 이론을 함께 다룬다. 이 책은 커널 버전 2.6을 다루고 있다. 버전 2.6에서 거의 대부분의 커널 서브시스템이 많이 변경되었는데, 메모리 관리와 블럭 장치 부분이 특히 많이 변경되었다. 『리눅스 커널의 이해』(개정3판)는 리눅스의 내부 동작을 이해할 수 있도록 해 줄 것이다. 이 책은 학문적인 내용을 넘어서 리눅스가 어떤 조건에서 가장 잘 동작하는지, 그리고 프로세스 스케줄링, 파일 접근, 메모리 관리 중에도 빠른 시스템 응답 시간을 어떻게 제공하는지를 알게 해 줄 것이다. 이 책은 여러분이 리눅스 시스템을 이해하는 것을 도와줄 것이다. <주요내용> - 메모리 관리 (파일 버퍼링, 프로세스 스와핑, DMA 등) - 가상 파일시스템 계층, Ext2와 Ext3 파일시스템 - 프로세스 생성과 스케줄링 - 시그널, 인터럽트, 장치 드라이버의 핵심 인터페이스 - 타이밍 - 커널 내부 동기화 - 프로세스간 통신(IPC) - 프로그램 실행 |