책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 리눅스/유닉스 프로그래밍
· ISBN : 9788979141597
· 쪽수 : 860쪽
· 출판일 : 2001-12-06
책 소개
목차
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. 소스 코드 구조
참고 문헌
찾아보기