《Linux系统编程》----读书笔记(1)
时间:2009-05-08 来源:garyneville
- 系统软件运行于系统的底层,与内核和系统核心库直接进行交互。
- 常见的系统软件包括shell、文本编辑器、编译器、调试器、核心工具(GNU Core Utilities)和系统守护进程等。
- 系统编程最突出的特点是要求系统程序员必须对他工作的系统的硬件和操作系统有深入和全面的了解,当然它们还有库和系统调用上的区别。
- 在系统编程的分支中,通常包括内核开发,或者至少有设备驱动的内容。
- 系统编程有三大基石:系统调用,C库和C编译器。
- C库(libc)是Unix应用程序的核心。在现代的Linux系统中,C库由GNU libc提供,简称glibc。
- 除了标准C库,glibc还提供了系统调用封装,线程支持和基本应用工具。
- API定义了软件模块之间在源代码层交互的接口。ABI定义的则是在特定的架构上两个或者多个软件模块之间的二进制接口。ABI必须保证二进制代码兼容,保证一段目标代码能够在任何具有同样ABI的系统上都正常运作,而不需要重新编译。
- ABI主要关注的问题有调用约定、字节序、寄存器使用、系统调用、链接、库行为和二进制格式。
- Linux仅力图和两个最广发使用的标准保持兼容:POSIX和Single Unix Specification(SUS)。
- 文件是Linux系统中最基本和重要的抽象。因此很多的交互工作是通过读取和写入文件来完成。
- 文件通过文件名访问,但文件本身并不直接与文件名直接关联。相反,文件通过inode来访问,inode使用唯一的数值进行标志。
- 一个inode存储文件关联的元数据,如它的修改时间戳、所有者、类型、长度以及文件的数据的地址--唯独没有文件名。
- inode即是Unix文件系统在磁盘上实际物理对象,也是Linux内核中的数据结构的概念实体。
相关阅读 更多 +