본문

목차정보

[목차정보]
1장 스레드: 소개 
­1·1개요 
­1·2PTHREADS API의 세부 배경 지식 
­1·3스레드 생성 
­1·4스레드 종료 
­1·5스레드 ID 
­1·6종료된 스레드와 조인하기 
­1·7스레드 분리하기 
­1·8스레드 속성 
­1·9스레드와 프로세스의 비교 
­1·10정리 
­1·11연습문제 

2장 스레드: 스레드 동기화 
­2·1공유 변수 접근 보호: 뮤텍스 
­2·2상태 변화 알리기: 조건 변수 
­2·3정리 
­2·4연습문제 

3장 스레드: 스레드 안전성과 스레드별 저장소 
­3·1스레드 안전성(그리고 재진입성) 
­3·21회 초기화 
­3·3스레드별 데이터 
­3·4스레드 로컬 저장소 
­3·5정리 
­3·6연습문제­ 

4장 스레드: 스레드 취소 
­4·1스레드 취소하기 
­4·2취소 상태와 종류 
­4·3취소 지점 
­4·4스레드 취소 요청 확인 
­4·5클린업 핸들러 
­4·6비동기적 취소 가능성 
­4·7정리 

5장 스레드: 기타 세부사항 
­5·1스레드 스택 
­5·2 스레드와 시그널 
­5·3스레드와 프로세스 제어 
­5·4스레드 구현 모델 
­5·5POSIX 스레드의 리눅스 구현 
­5·6PTHREADS API의 고급 기능 
­5·7정리 
­5·8연습문제 

6장 프로세스 간 통신 개요 
­6·1IPC 방법의 분류 
­6·2통신 방법 
­6·3동기화 방법 
­6·4IPC 방법 비교하기 
­6·5정리 
­6·6연습문제 

7장 파이프와 FIFO 
­7·1개요 
­7·2파이프 만들기와 사용하기 
­7·3파이프로 프로세스 동기화하기 
­7·4필터 연결에 파이프 사용하기 
­7·5파이프를 사용해 셸 명령과 대화하기: POPEN() 
­7·6파이프와 STDIO 버퍼링 
­7·7FIFO 
­7·8FIFO를 사용하는 클라이언트/서버 응용 프로그램 
­7·9비블로킹 I/O 
­7·10파이프와 FIFO에서 READ()와 WRITE() 함수의 의미 
­7·11정리 
­7·12연습문제 

8장 시스템 V IPC 소개 
­8·1API 개요 
­8·2IPC 키 
­8·3객체 권한과 데이터 구조체의 조합 
­8·4IPC 식별자와 클라이언트/서버 응용 프로그램 
­8·5시스템 V IPC GET 호출이 사용하는 알고리즘 
­8·6IPCS 와 IPCRM 명령 
­8·7모든 IPC 객체 목록 얻기 
­8·8IPC 설정 
­8·9정리 
­8·10연습문제 

9장 시스템 V 메시지 큐 
­9·1메시지 큐 생성하기와 열기 
­9·2메시지 교환 
­9·3메시지 큐 동작 관리 
­9·4 메시지 큐와 연관된 데이터 구조 
­9·5메시지 큐 설정 
­9·6시스템상의 모든 메시지 큐 출력하기 
­9·7메시지 큐를 사용해 클라이언트/서버 프로그래밍하기 
­9·8메시지 큐를 사용하는 파일 서버 응용 프로그램 
­9·9시스템 V 메시지 큐의 불편한 점 
­9·10정리 
­9·11연습문제 

10장 시스템 V 세마포어 
­10·1개요 
­10·2세마포어 집합 만들고 열기 
­10·3세마포어 관리 동작 
­10·4세마포어와 관련된 데이터 구조 
­10·5세마포어 초기화 
­10·6세마포어 동작 
­10·7다중 블록된 세마포어 동작 처리 
­10·8세마포어 값 복구 
­10·9이진 세마포어 프로토콜 구현 
­10·10세마포어 한도 
­10·11시스템 V 세마포어의 단점 
­10·12정리 
­10·13연습문제 

11장 시스템 V 공유 메모리 
­11·1개요 
­11·2공유 메모리 세그먼트 생성과 열기 
­11·3공유 메모리 사용 
­11·4예제: 공유 메모리를 통한 데이터 전송 
­11·5가상 메모리상의 공유 메모리 위치 
­11·6공유 메모리에 포인터 저장하기 
­11·7공유 메모리 제어 동작 
­11·8공유 메모리와 관련된 데이터 구조체 
­11·9공유 메모리 한도 
­11·10정리 
­11·11연습문제 

12장 메모리 매핑 
­12·1개요 
­12·2매핑 생성: MMAP() 
­12·3맵 영역 해제: MUNMAP() 
­12·4파일 매핑 
­12·5매핑된 영역 동기화: MSYNC() 
­12·6MMAP() 추가 플래그 
­12·7익명 매핑 
­12·8매핑된 영역 재매핑: MREMAP() 
­12·9MAP_NORESERVE와 스왑 영역 낭비 
­12·10MAP_FIXED 플래그 
­12·11비선형 매핑: REMAP_FILE_PAGES() 
­12·12정리 
­12·13연습문제 

13장 가상 메모리 동작 
­13·1메모리 보호 모드 변경: MPROTECT() 
­13·2MLOCK()과 MLOCKALL() 메모리 잠금 
­13·3메모리 상주 결정하기: MINCORE() 
­13·4미래의 메모리 사용 패턴: MADVISE() 
­13·5정리 
­13·6연습문제 

14장 POSIX IPC 소개 
­14·1API 개요 
­14·2시스템 V IPC와 POSIX IPC 비교 
­14·3정리 

15장 POSIX 메시지 큐 
­15·1개요 
­15·2메시지 큐 열기, 닫기, 링크 해제하기 
­15·3 디스크립터와 메시지 큐의 관계 
­15·4메시지 큐 속성 
­15·5메시지 교환 
­15·6메시지 통지 
­15·7리눅스 고유의 특징 
­15·8메시지 큐 한도 
­15·9POSIX와 시스템 V 메시지 큐 비교 
­15·10정리 
­15·11연습문제 

16장 POSIX 세마포어 
­16·1개요 
­16·2기명 세마포어 
­16·3세마포어 동작 
­16·4무기명 세마포어 
­16·5기타 동기화 기법과의 비교 
­16·6세마포어 한도 
­16·7정리 
­16·8연습문제 

17장 POSIX 공유 메모리 
­17·1개요 
­17·2공유 메모리 객체 생성 
­17·3공유 메모리 객체 사용 
­17·4공유 메모리 객체 제거 
­17·5공유 메모리 API 비교 
­17·6정리 
­17·7연습문제 

18장 파일 잠금 
­18·1개요 
­18·2FLOCK()을 이용한 파일 잠금 
­18·3FCNTL()을 이용한 레코드 잠금 
­18·4의무 잠금 
­18·5/PROC/LOCKS 파일 
­18·6프로그램의 하나의 인스턴스만 실행 
­18·7오래된 잠금 기법 
­18·8정리 
­18·9연습문제 

19장 소켓: 소개 
­19·1개요 
­19·2SOCKET() 소켓 생성: SOCKET() 
­19·3소켓을 주소에 결속하기: BIND() 
­19·4일반적인 소켓 주소 구조: STRUCT SOCKADDR 
­19·5스트림 소켓 
­19·6데이터그램 소켓 
­19·7정리 

20장 소켓: 유닉스 도메인 
­20·1유닉스 도메인 소켓 주소: STRUCT SOCKADDR_UN 
­20·2유닉스 도메인의 스트림 소켓 
­20·3유닉스 도메인의 데이터그램 소켓 
­20·4유닉스 도메인 소켓 접근 권한 
­20·5연결된 소켓 쌍 생성: SOCKETPAIR() 
­20·6리눅스 추상 소켓 네임스페이스 
­20·7정리 
­20·8연습문제 

21장 소켓: TCP/IP 네트워크 기초 
­21·1인터넷 
­21·2네트워킹 프로토콜과 계층 
­21·3데이터 링크 계층 
­21·4네트워크 계층: IP 
­21·5IP 주소 
­21·6전송 계층 
­21·7RFC(REQUESTS FOR COMMENTS) 
­21·8정리 

22장 소켓: 인터넷 도메인 
­22·1인터넷 도메인 소켓 
­22·2네트워크 바이트 순서 
­22·3데이터 표현 
­22·4인터넷 소켓 주소 
­22·5호스트와 서비스 변환 함수 
­22·6함수 INET_PTON()과 INET_NTOP() 
­22·7클라이언트/서버 예제(데이터그램 소켓) 
­22·8DNS(DOMAIN NAME SYSTEM) 
­22·9/ETC/SERVICES 파일 
­22·10프로토콜 독립적인 호스트와 서비스 변환 
­22·11클라이언트 서버 예제(스트림 소켓) 
­22·12인터넷 도메인 소켓 라이브러리 
­22·13더 이상 사용하지 않는 호스트와 서비스 변경 API 
­22·14유닉스 소켓과 인터넷 도메인 소켓 
­22·15더 읽을거리 
­22·16정리 
­22·17연습문제 

23장 소켓: 서버 설계 
­23·1반복 서버와 병렬 서버 
­23·2반복 UDP 에코 서버 
­23·3병렬 TCP 에코 서버 
­23·4다른 병렬 서버 설계 
­23·5INETD(인터넷 슈퍼서버) 데몬 
­23·6정리 
­23·7연습문제 

24장 소켓: 고급 옵션 
­24·1스트림 소켓에서 부분 읽기와 부분 쓰기 
­24·2SHUTDOWN() 시스템 호출 
­24·3소켓 전용 I/O 시스템 호출: RECV()와 SEND() 
­24·4SENDFILE() 시스템 호출 
­24·5소켓 주소 가져오기 
­24·6TCP에 대한 고찰 
­24·7소켓 모니터링: NETSTAT 
­24·8TCPDUMP를 이용한 TCP 트래픽 감시 
­24·9소켓 옵션 
­24·10SO_REUSEADDR 소켓 옵션 
­24·11ACCEPT()를 통한 FLAGS와 OPTIONS 상속 
­24·12TCP와 UDP 
­24·13고급 기능 
­24·14정리 
­24·15연습문제 

25장 터미널 
­25·1개요 
­25·2터미널 속성값 읽기와 수정 
­25·3STTY 명령 
­25·4터미널 특수문자 
­25·5터미널 플래그 
­25·6터미널 I/O 모드 
­25·7터미널 라인 속도(비트 전송률) 
­25·8터미널 라인 제어 
­25·9터미널 윈도우 크기 
­25·10터미널 식별 
­25·11정리 
­25·12연습문제 

26장 대체 I/O 모델 
­26·1개요 
­26·2I/O 멀티플렉싱 
­26·3시그널 기반 I/O 
­26·4EPOLL API 
­26·5시그널과 파일 디스크립터 기다리기 
­26·6정리 
­26·7연습문제 

27장 가상 터미널 
­27·1개요 
­27·2유닉스 98 가상 터미널 
­27·3마스터 열기: PTYMASTEROPEN() 
­27·4프로세스를 가상 터미널과 연결: PTYFORK() 
­27·5가상 터미널 I/O 
­27·6스크립트(1) 구현 
­27·7터미널 속성과 윈도우 크기 
­27·8BSD 가상 터미널 
­27·9정리 
­27·10연습문제 

부록 A 연습문제 해답