목차정보
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 연습문제 해답 |