머리말 3
제1장 Linux Overview 9
1.1 Linux 운영체제의 역사 9
1.2 리눅스 운영체제의 특징 11
제2장 리눅스 활용을 위한 기본 지식 16
2.1 리눅스의 사용자 계정 16
2.2 리눅스의 부팅 과정 17
2.3 GNU gcc 컴파일러 18
2.4 쉘 22
2.5 환경 설정 23
2.6 계층 구조적 파일 시스템 24
제3장 프로세스(Process)와 스레드(Thread) 27
3.1 프로세스의 상태 28
3.1.1 프로세스의 상태 전이 29
3.1.2 리눅스 프로세스의 상태 30
3.2 프로세스의 문맥 교환(context switch) 34
3.2.1 프로세스의 문맥(context)과 태스크 구조체 34
3.2.2 프로세스 간의 문맥 교환(context switch) 36
3.3 시스템 호출과 프로세스의 상태 전이 38
3.4 프로세스의 생성과 소멸 49
3.4.1 프로세스의 종료와 child 프로세스 종료 대기 52
3.4.2 child 프로세스의 상속 54
3.5 프로세스의 프로그램 교체(로딩)를 위한 시스템 호출 exec 그룹 56
제4장 리눅스 스케줄링 61
4.1 성능 향상을 위한 선점 스케줄링의 고려 사항 62
4.2 리눅스 스케줄링 63
4.2.1 스케줄링 관련 시스템 호출 65
제5장 파일 시스템 70
5.1 개요 70
5.2 파일 시스템 inode 71
5.3 파일 시스템과 마운트(mount) 72
5.4 파일 시스템(파티션) 구조 73
5.4.1 inode 내의 파일 데이터 블록 정보 74
5.5 디렉토리 파일과 파일 접근 75
5.6 파일 입출력 77
5.6.1 파일 입출력 함수 79
5.7 파일에의 임의 접근(Random Access) 83
5.8 파일의 제어 87
제6장 메모리 관리 91
6.1 프로세스의 가상 주소 공간 92
6.2 동적 메모리 할당 96
제7장 메모리 사상 파일(Memory Mapped file) 101
7.1 개요 101
7.2 기타 함수들 108
제8장 Pipe: IPC(Inter-Process Communication) I 111
8.1 Pipe에 의한 IPC 112
8.1.1 pipe에 의한 파일 복사 114
8.1.2 pipe의 크기 115
8.1.3 Non-blocking pipe 입출력 116
8.1.4 pipe와 shell 118
8.2 Named pipe와 FIFO 파일 121
제9장 시그널 : IPC II 127
9.1 사용자 정의 시그널 처리기 131
9.2 시그널과 시스템 호출 133
9.3 시그널에 의한 동기화 138
제10장 병행 프로세스 간의 임계 구역 및 상호배제 : IPC III 제146
10.1 임계 구역과 상호배제 146
10.2 fcntl 함수에 의한 Readers’ lock과 Writer’s lock 148
10.2.1 lockf 함수에 의한 파일/레코드 locking 154
10.3 교착 상태(Deadlock) 155
10.3.1 Lock 획득 요청의 순서 정렬에 의한 방법 157
10.4 세마포어(Semaphore) 158
10.4.1 세마포어와 상호배제 159
10.4.2 세마포어에 의한 동기화 160
10.4.3 바이너리 세마포어와 카운팅 세마포어 161
10.4.4 리눅스 계열의 세마포어 161
제11장 프로세스 간 고급 통신 도구 : IPC IV 169
11.1 메시지 큐(Message Queue) 170
11.2 공유 메모리(Shared memory) 177
11.2.1 병행 프로세스에 의한 double buffering의 예 180
11.2.2 IPC 관리를 위한 쉘 명령어들 185
제12장 시간관리187
12.1 시간 표시를 위한 구조체 187
12.1.1 달력시간 187
12.1.2 struct tm 188
12.1.3 시간처리 함수들 188
12.2 인터벌 타이머(Interval Timer) 193
제13장 Network Programming 197
13.1 개요 197
13.2 Connection-oriented(연결형) 통신과 Connectionless(비연결형) 통신 200
13.3 소켓의 사용에 의한 통신 기법 201
13.3.1 클라이언트 – 서버 모델 201
13.3.2 포트 203
13.3.3 소켓과 프로토콜 204
13.3.4 소켓 주소 구조체 206
13.3.5 소켓의 바인딩(binding) 207
13.4 연결형 통신을 위한 함수들과 예제 프로그램 208
13.4.1 통신 접속을 위한 함수들 208
13.5 메시지 송수신을 위한 함수들 211
13.5.1 바이트 순서 및 연산(Byte Ordering) 213
13.5.2 네트워크 정보 214
13.5.3 주소 변환 함수 216
13.5.4 연결형 통신 절차 및 예제 216
13.6 비연결형 통신을 위한 함수들과 예제 프로그램 221
13.6.1 관련 함수들 222
13.6.2 비연결형 통신과 예제 프로그램 224
제14장 스레드 프로그래밍 229
14.1 스레드(thread) 개요 229
14.2 프로세스와 스레드의 관계 230
14.2.1 스레드간에 공유하는 자원들 231
14.2.2 스레드간에 공유하지 않는 자원들 231
14.3 POSIX Thread(Pthread) 232
14.3.1 Pthread의 생성과 종료 233
14.3.2 Pthread 식별자(identifiers) 237
14.3.3 스레드의 조인(Joining threads) 238
14.3.4 스레드의 분리와 조인(Detaching/Joining) 239
14.4 다중 스레드(Multi-threaded) 프로그래밍 244
14.4.1 Boss/Worker 모델 244
14.4.2 Peer 모델 249
14.4.3 파이프라인(Pipeline) 모델 250
14.5 스레드의 임계구역(Critical Section)과 상호 배제(mutual Exclusion) 252
14.5.1 스레드를 이용한 생산자/소비자 문제 254
14.5.2 스레드의 상호배제(Mutual Exclusion) 257
14.5.3 mutex 사용 함수들(pthread_mutex(3)) 259
14.6 스레드의 동기화와 컨디션(Condition) 변수 263
14.6.1 컨디션 변수의 생성과 제거 함수들 263
14.6.2 컨디션 변수에 대한 waiting 및 signaling 264
14.7 Pthead의 세마포어에 의한 동기화 272
14.8 Pthread 스케줄링 276
리뷰
상품평
아직 상품평이 없습니다.
팝업 메시지가 여기에 표시됩니다.