LINUX系统编程[LINUX System Pogramming](中文版) 内容简介
在某些时刻,几乎所有的程序员都要与其程序所处操作系统中的系统调用和程序库打交道。《LINUX系统编程》主要讨论如何编写Linux系统软件——代码位于底层,并且直接跟内核及核心系统程序库对话。《Linux系统编程》描述了使用标准接口包括使用Linux独有的高级接口时,在功能和性能之间如何进行权衡取舍的策略。
该书同样也是一本内行人士编写灵活高效代码的学习指南。作为内核黑客和《LINUX系统编程》的作者,Robert Love不仅阐释了系统接口应该如何工作,还介绍了它们实际上是如何工作的,以及怎样安全有效地使用它们。《Linux系统编程》包含了帮助你在任何层面编写更佳代码的实用技巧。
《LINUX系统编程》主题包括:
读写文件以及其他文件I/O操作,包括Linux内核如何实现和管理文件I/O,内存映射与优化
技术进程管理的系统调用,包括实时进程
文件与目录——创建、移动、复制、删除和管理
内存管理——内存分配接口,管理内存,以及优化内存访问
信号及其在Unix系统中的角色,以及基本和高级信号接口
时间、休眠和时钟管理,从基础开始讲述,并且涵盖POSIX时钟和高精度计时器拥有《Linux系统编程》,你将从理论和应用的角度深入了解Linux,可以最大限度地利用系统的潜能。
LINUX系统编程[LINUX System Pogramming](中文版) 目录
译者序
版权声明
第 1 章 简介和主要概念
第 2 章 文件 I/O
第 3 章 缓冲输入输出
第 4 章 高级文件 I/O
第 5 章 进程管理
第 6 章 高级进程管理
第 7 章 文件与目录管理
第 8 章 内存管理
第 9 章 信号
第 10 章 时间
附录 A GCC 对C 语言的扩展
附录 B 参考书目
LINUX系统编程[LINUX System Pogramming](中文版) 精彩文摘
1.1.2 调用系统调用
用户空间应用程序不可能直接访问内核。基于系统安全和稳定的考虑,用 户空间程序禁止直接执行内核的代码或者操作内核数据。相反,内核必须提供 这样一个机制,用户空间程序能够发送信号通知内核它希望调用一个系统调 用。这个应用程序因此能够通过这一机制深入到内核中,执行那些内核允许执 行的代码。这个机制在不同的机器各不相同,例如,在 i386 上,用户空间程序执行参数为 0x80 的中断指令 int,这个指令触发系统将当前运行环境切换到内核的保护区域,内核执行终端处理函数的区域一一但是什么是中断 0x80 的处理函数呢?除了这个系统外,没有别的系统调用处理函数。
应用程序通过机器寄存器通知内核执行哪一个系统调用,带什么参数。系 统调用通过数字标注,从 0 开始。在 i386 架构上,要想请求系统调用 5(正好是open()),用户空间程序必须在使用 int 指令前将 5 填写到 eax 寄存器中。
参数传递也通过类似的方式进行处理。还是以 i386 为例,寄存器被用于每一个可能的参数一一寄存器ebx、 ecx、 edx、 esi 和edi 顺序存储前 5 个参数。对于一些少见的超过 5 个参数的系统调用,使用一个的寄存器指向用户空间中存储所有参数的缓存区即可。当然,大部分系统调用仅有少数的参数。
其他架构处理系统调用的方式不同,但是基本的精神是一致的。作为一个 系统程序员,你通常不需要知道内核是怎样处理系统调用的。这部分内容己经 成为系统架构的标准调用惯例的一部分,并通过编译器和 C 库自动处理。
→→→→→→→→→→→→→→→→→→→→查找获取
2019年12月6日 下午1:14 1F
感谢