오늘부터 주기적으로 The Linux Programming Interface (이하 TLPI) 책을 읽고, 정리하여 남기려 한다.
이 책은 리눅스 man 페이지를 작성한 Michael Kerrisk의 책으로, 리눅스 프로그래밍에 있어서 바이블이라 할 수 있는 책이다.
내용이 1500 페이지에 육박하는 방대한 양이라 굉장히 걱정이 되지만, 그래도 꾸준하게 읽어보자.
This book could have been purely about standard UNIX (that is, POSIX) system programming because most features found on other UNIX implementations are also present on Linux and vice versa.
이 책은 온전히 표준 UNIX (POSIX라고 함) 시스템 프로그래밍에 관한 책이다. 왜나하면 다른 UNIX 구현에서 볼 수 있는 대부분의 기능이 Linux에도 있고 그 반대도 있기 때문에.
리눅스라고 해서 UNIX와 구별해서 보는 것이 아니라, 표준 UNIX인 POSIX를 다루는 시스템 프로그래밍 전체에 대한 책이다.
간단하게 POSIX를 정리하고 가자면, 이렇다.
POSIX는 이식 가능 운영 체제 인터페이스 (portable operating system interface)의 약자로, 서로 다른 UNIX OS의 공통 API를 정리하여 이식성이 높은 유닉스 응용 프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 인터페이스 규격이다.
출처 : https://ko.wikipedia.org/wiki/POSIX
POSIX는 운영체제 자체가 아니라 응용 프로그램과 운영체제 간의 ‘인터페이스’를 정의하는 개념이기 때문에 프로그래머는 인터페이스가 존중되는 한 운영체제와 응용 프로그램을 자유롭게 작성할 수 있습니다. 또한 하드웨어, 운영체제, 공급업체에 독립적이기 때문에 응용프로그램의 이식성을 더 쉽게 얻을 수 있습니다.
1991년, 이러한 POSIX 표준을 만족하는 Linux가 탄생했고 아직까지도 오픈소스 소프트웨어로 스마트폰, 임베디드 기기 등 다양한 분야에서 널리 사용되고 있습니다.
출처 : https://medium.com/naver-cloud-platform/posix-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0-1-linux-%EB%A6%AC%EB%88%85%EC%8A%A4-%ED%8C%8C%EC%9D%BC-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EC%A2%85%EB%A5%98%EC%99%80-%ED%8A%B9%EC%A7%95-96a2e93e33b3
저자는 책의 챕터를 이렇게 나누었다.
Background and concepts
UNIX와 C, Linux의 역사
표준 UNIX의 overview
Linux와 UNIX 프로그래밍의 기본 개념
Fundamental features of the system programming interface
파일 I/O
프로세스
메모리 할당
유저와 그룹
프로세스 자격 증명 (process credentials)
시간 (time)
시스템 제한과 옵션 (system limits and options)
시스템 및 프로세스 정보 검색 (retrieving system and process information)
More advanced features of the system programming interface
파일 I/O 버퍼링
파일 시스템
파일 속성 (file attributes)
확장 속성 (extended attributes)
액세스 제어 목록 (access control list)
디렉토리와 링크 (directories and links)
타이머 (timers)
Process, programs, and threads
프로세스 생성, 종료, 자식 프로세스 모니터링, 프로그램 실행
POSIX 쓰레드
Advanced process and program topics
프로세스 우선순위와 스케쥴링 (process priorities and scheduling)
프로세스 자원
데몬 (daemons)
Interprocess communication (IPC)
IPC overview
파이프와 FIFO (pipes and FIFOs)
System V IPC-message queues, semaphores, and shared memory
메모리 매핑 (memory mappings)
가상 메모리 작동 (virtual memory operations)
Sockets and network programming
IPC and network programming with sockets
Advanced I/O topics
alternative I/O models
첫 서문을 다 읽었다. 이제부터 하나하나 차근차근 배워나가자!