0스콘 0
장바구니

장바구니에 상품이 없습니다.

리눅스 시스템 프로그래밍

  • H.Press
출판
4.59
MB

소장

15,000스콘

소장

15,000스콘

작품 소개

이 책에서는 컴퓨터공학 관련 학과에서 운영체제를 이수하기 위한 선수 과목인 ‘시스템 프로그래밍’의 교재이다.
본 도서에서는 리눅스 운영체제의 역사와 특징 소개, 병행 프로세스/스레드의 개념 및 커널과의 관계, 시스템 호출과 인터럽트 및 context switching의 관계, 프로세스 스케줄링, 주요 시스템 호출과 디스크 및 타이머 인터럽트 핸들러의 내부 소개, 프로세스 기반 병행 프로그래밍 및 관련 리눅스 API의 활용, 리눅스 파일 시스템과 관련 API의 활용 등을 다루고 있으며, 이러한 내용이 리눅스 커널을 이해하고 활용하는데 도움이 될 것이다.

 

머리말

오늘날 리눅스 운영체제는 클라우드, 서버, 데스크탑, 임베디드 시스템 및 모바일 기기 등에서 광범위하게 사용되고 있다. 본 교재는 컴퓨터공학 관련 학과에서 “운영체제”를 이수하기 위한 선수 과목인 “시스템 프로그래밍”의 교재로서 리눅스 운영체제 API의 활용을 주로 다루며, 그 외에 운영체제의 개념을 포함한 다음 내용을 다룬다.

– 리눅스 운영체제의 역사와 간략한 특징 소개
– 병행 프로세스/스레드의 개념 및 커널과의 관계
– 시스템 호출과 인터럽트 및 context switching의 관계
– 프로세스 스케줄링
– 주요 시스템 호출과 디스크 및 타이머 인터럽트 핸들러의 내부 소개
– 프로세스 기반 병행 프로그래밍 및 관련 리눅스 API의 활용
– 리눅스 파일 시스템과 관련 API의 활용
– 메모리 관리 및 관련 API의 활용
– 프로세스 간 통신과 관련 API의 활용
– 임계구역과 상호배제 및 세마포어
– 데드락과 처리
– 시간 관리와 관련 API의 활용
– 소켓 기반 네트워크 프로그래밍
– Pthread를 활용한 병행 스레드 프로그래밍

위와 같은 내용이 심도 있는 리눅스 커널의 이해 및 활용의 기초 도서로 참고 되기를 바란다.

2014년 2월
저자 김 정 국

목차

머리말 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

저자 정보

  • 김정국

    • 국적 해당 정보가 없습니다.
    • 출생
    • 학력 서울대학교 계산통계학과 졸업
      KAIST 전산학과 석사 및 박사학위
    • 수상 2010년 11월, S/W 산업발전 기여 공로, 대통령 표창 수상

업데이트

업데이트 내역이 없습니다.

리뷰

0
(0명)

상품평

아직 상품평이 없습니다.

상품을 구매한 로그인 고객만 상품평을 남길 수 있습니다.