具体描述
内容简介
本书主要讲述与程序员有关的一些技术资料。书中对浮点数操作、C标准依从
性、开发国际化软件、公共目标文件格式(COFF)、ELF目标文件等内容进行了介
绍,并且列举了许多实例来进一步说明。本书内容详实,对软件开发人员充分利用
系统性能十分有益。
本书的读者对象为使用SCOOpenServer开发系统及其它UNIX系统开发应
用软件的开发人员,以及计算机专业的大学高年级学生及研究生。
作者简介
目录信息
关于本书
符号约定
相关文档
其它参考资料
第1章 浮点运算
1.1 IEEE算术运算
1.1.1 单精度
1.1.2 双精度
1.1.3 扩展精度
1.1.4 规格化数
1.1.5 非规格化数
1.1.6 最大和最小可表示的浮点数的值
1.1.7 特殊情况的取值
1.1.8 NaN和无穷大
1.1.9 舍入控制
1.1.10 异常、粘着位(stickybits)以及陷阱位(trapbits)
1.2 单精度浮点运算
1.3 扩展双精度类型
1.4 IEEE要求
1.4.1 浮点格式与整型格式转换
1.4.2 平方根
1.4.3 比较和不可排序条件
1.4.4 在input/output中的NaN和无穷大
第2章 符合标准C语言
2.1 新旧风格函数的混合使用
2.1.1 编写新的代码
2.1.2 升级旧代码
2.1.3 综合考虑
2.1.4 几个例子
2.2 变实参函数
2.2.1 示例
2.3 类型转换:unsigned及其值的保留
2.3.1 背景
2.3.2 编译操作
2.3.3 示例一:使用常量
2.3.4 位字段
2.3.5 示例二:结果相同
2.3.6 整型常量
2.3.7 示例三:整型常量
2.4 单词化及预处理
2.4.1 ANSIC编译阶段
2.4.2 旧版本中C的编译阶段
2.4.3 逻辑源行
2.4.4 宏替换
2.4.5 构成字符串
2.4.6 单词检查
2.5 使用const和volatile类型限定符
2.5.1 用于左值的类型
2.5.2 派生类型中的类型限定符
2.5.3 使用c0nst类型读取字符的值
2.5.4 使用volatile类型
2.6 多字节字符和宽字符
2.6.1 “亚洲化”就意味着多字节字符
2.6.2 编码的特点
2.6.3 宽字符
2.6.4 转换函数
2.6.5 C语言特性
2.7 标准前导文件和保留字
2.7.1 发展过程
2.7.2 标准前导文件
2.7.3 供应用程序使用的保留名
2.7.4 用于扩充而保留的名称
2.7.5 正确使用名称
2.8 国际化
2.8.1 本地环境
2.8.2 set1ocale()函数
2.8.3 被改变的函数
2.8.4 新函数
2.9 表达式的分组及求值
2.9.1 定义
2.9.2 Kernighan和RitchieC重新安排许可权
2.9.3 ANSIC规则
2.9.4 括弧分组与求值
2.9.5 “asif”规则
2.10 不完整类型
2.10.1 概述
2.10.2 不完整类型的完整化
2.10.3 声明
2.10.4 表达式
2.10.5 判断
2.10.6 例子
2.11 兼容类型和混合类型
2.11.1 多重声明
2.11.2 不同编译系统的兼容性
2.11.3 同一编译系统的兼容性
2.11.4 兼容的指针类型
2.11.5 兼容的数组类型
2.11.6 兼容的函数类型
2.11.7 特殊情况
2.11.8 混合类型
第3章 建立和使用消息目录
3.1 建立消息目录
3.2 使用消息目录的源程序示例
3.3 消息目录与应用程序的结合
3.4 运行应用程序
第4章 使用受托系统设施
4.1 使用受保护子系统
4.2 受托系统使用指南
4.3 编程示例
4.4 subsys.c示例
4.5 prwarn.c示例
4.6 loge.c示例
第5章 使用事件管理程序API
5.1 操作及语义概述
5.2 事件设备
5.3 使用事件队列
5.4 事件管理程序调用
5.5 示例
第6章 Ksh下的作业控制
第7章 公共目标文件格式(COFF)
7.1 定义与规范
7.1.1 节
7.1.2 物理地址与虚拟地址
7.1.3 目标机
7.2 文件头
7.2.1 幻数
7.2.2 标志位
7.2.3 文件头说明
7.3 可选头信息
7.3.1 标准UNIX系统的a.out头
7.3.2 可选头说明
7.4 节头
7.4.1 标志
7.4.2 节头声明
7.4.3 bss节头
7.5 节
7.6 重定位信息
7.6.1 重定位信息项的声明
7.7 行编号
7.7.1 行编号声明
7.8 符号表
7.8.1 专用符号
7.8.2 内层程序块
7.8.3 符号和函数
7.8.4 符号表项
7.8.5 符号名
7.8.6 存储类
7.8.7 专用符号的存储类
7.8.8 符号值域
7.8.9 节号域
7.8.10 节号和存储类
7.8.11 类型字段
7.8.12 类型域和存储类
7.8.13 符号表项的结构
7.8.14 辅助表项
7.8.15 文件名
7.8.16 节
7.8.17 标记名
7.8.18 结构的结束符
7.8.19 函数
7.8.20 数组
7.8.21 程序块和函数的结束符
7.8.22 程序块和函数的起始符
7.8.23 与结构、联合和枚举相关的名称
7.8.24 辅助表项的声明
7.9 字符串表
7.10 访问例程
第8章 ELF目标文件
8.1 文件格式
8.1.1 文件格式
8.1.2 数据表示
8.2 程序链接
8.2.1 ELF头
8.2.2 节头
8.2.3 字符串表
8.2.4 符号表
8.2.5 重定位
8.3 程序执行
8.3.1 程序头
8.3.2 程序加载(与特定处理器相关)
8.3.3 程序解释程序
8.3.4 动态链接程序
第9章 增强的汇编接口
9.1 术语定义
9.2 示例
9.2.1 定义
9.2.2 使用
9.3 使用汇编宏
9.3.1 宏定义
9.4 编写asm宏
第10章 映射文件选项
10.1 使用映射文件选项
10.1.1 映射文件结构和语法
10.1.2 段声明
10.1.3 映射指令
10.1.4 尺寸符号声明
10.2 映射示例
10.3 映射文件默认设置
10.4 内部映射结构
10.5 出错消息
10.5.1 警告
10.5.2 致命错误
第11章 Desktop集成
11.1 背景知识
11.2 图形接口标准和库
11.3 向下兼容
11.4 将图标放在Deskt0p上
11.4.1 创建图标像素文件
11.4.2 定义图标触发器
11.4.3 安装图标文件
11.4.4 动画图标
11.4.5 本地化图标标签和消息
11.4.6 为用户数据文件创建图标
11.5 运行时调整显示分辨率
11.6 支持Desktop颜色选择程序
11.6.1 定义与显示器有关的颜色
11.7 与会话管理程序进行通信
第12章 客户软件安装工具箱
12.1 创建可用custom安装的软件版本
12.1.1 关于软件存储对象(SSO)
12.1.2 确定产品的结构
12.1.3 确定SSO文件属性
12.1.4 建立版本树
12.1.5 建立CDMT的环境
12.1.6 创建CDMT输入文件
12.1.7 创建和构造SSO树
12.1.8 创建可用custom安装的文档
12.2 高级的软件安装
12.2.1 关于组件脚本
12.2.2 软件管理阶段
12.2.3 创建软件升级
12.2.4 SSO路径映射API
12.2.5 使用SSO路径映射API
· · · · · · (收起)
读后感
用户评价
这本书的装帧设计真是让人眼前一亮,那种沉稳的深蓝色调,配上烫金的字体,拿在手里就有一种厚重和专业的质感。我记得我是在一家老旧的书店里偶然翻到它的,当时就被封面那种低调的奢华吸引住了。内页的纸张质量也相当不错,即使是经常翻阅,也不会轻易泛黄或者磨损。排版布局上,作者显然是花了不少心思,章节标题和正文之间的留白恰到好处,阅读起来非常舒适,不会有那种压迫感。尤其是一些代码示例的展示区域,使用了清晰的等宽字体,并且注释部分也做了特别的区分,这对于我们这些需要对照阅读的程序员来说,简直是福音。那种感觉就像是拿到了一本精心打磨的艺术品,而不是冷冰冰的技术手册。说实话,光是看着这本书摆在我的书架上,就觉得自己的技术品味都提升了不少。它不仅仅是一本工具书,更像是一件可以长久珍藏的物件。而且,边角的圆滑处理也体现了制作方对用户体验的细致考量,长时间阅读也不会硌手。
这本书的案例研究部分,简直是教科书级别的范本。作者似乎把多年来在复杂环境中处理过的真实世界难题,都巧妙地融入到了每一项技术讲解的后续环节中。这些案例并非是孤立的、脱离实际的理论演示,而是紧密围绕着性能优化、系统稳定性以及资源管理这些核心痛点展开的。我记得,在讨论网络堆栈性能调优时,书中提供了一个基于实际负载测试得出的结论,明确指出了在特定内核版本下,某些默认参数设置会导致意想不到的锁竞争。这比单纯阅读内核源码更能直观地理解问题所在。而且,这些案例的代码片段非常干净利落,没有多余的冗余代码,可以直接在测试环境中复现并验证效果。通过这些实战的演绎,我不仅学会了“怎么做”,更重要的是理解了“为什么这么做在特定场景下是最高效的”,这种迁移能力,远比死记硬背API签名重要得多。
这本书的修订和更新频率,也体现了作者和出版方对技术生命周期的尊重。虽然我手中的版本已经经过了几次迭代,但能感受到它并非是那种“一锤子买卖”的敷衍之作。每一次修订,似乎都能看到对新兴技术趋势的微调和对旧有知识的精炼。它不像某些经典书籍那样,由于年代久远而显得力不从心,而是始终保持着与当前主流开发环境的同步性。例如,在涉及到权限模型和安全沙箱的讨论时,它不仅涵盖了传统的设计思路,也加入了对现代容器化环境所需新安全范式的思考。这种持续的打磨和进化,使得这本书的“保质期”大大延长。对于我们这种需要长期维护和开发高可靠系统的工程师来说,拥有一本能够随着技术环境演进而保持活力的参考书,是极其宝贵的投资,它保证了我们所学知识的有效性和前沿性,避免了信息滞后带来的隐患。
我必须承认,这本书的知识密度高得惊人,初次翻阅时,我感觉自己像是在用漏勺舀水。它几乎没有水分,每一个段落都承载着实实在在的技术干货。这对于那些追求效率、时间宝贵的老手来说是巨大的优势,但对于初入这个领域的菜鸟来说,可能会有些门槛。我记得我第一次尝试啃读关于文件系统虚拟化那一章时,不得不放慢速度,反复阅读好几遍,甚至得借助其他辅助材料来打通认知壁垒。但是,正是这种“硬核”的深度,让它在同类书籍中脱颖而出。它没有刻意去迎合“小白友好”的趋势,而是坚守了专业技术的严谨性。这本书更像是一位严厉的导师,它不会手把手地教你走路,而是要求你具备一定的基础,然后在你到达瓶颈时,提供那个能帮你突破藩篱的钥匙。一旦你跟上了它的节奏,你会发现,它为你节省了在海量官方文档中摸索的时间,是无可估量的。
这本书的行文风格,说实话,非常具有启发性,它不像许多技术文档那样,仅仅是平铺直叙地罗列API和函数签名,而是更侧重于“为什么”和“怎么样才能做得更好”。我尤其欣赏作者在描述底层原理时那种抽丝剥茧的叙事方式。他总是能用最精炼的语言,将那些晦涩难懂的操作系统内核机制,转化为读者可以理解的逻辑流程图。比如,它对进程间通信(IPC)机制的讲解,不是简单地复制手册页的内容,而是深入剖析了在不同负载情况下,共享内存与消息队列的性能权衡点,甚至还加入了历史演变的角度去佐证当前的最佳实践。这种“带着历史感”的技术剖析,让我对底层架构有了更深层次的敬畏和理解。读完相关章节后,我感觉自己不再是只会调用函数的“码农”,而更像是一个在系统层面进行布局的建筑师。每当我遇到新的疑难杂症时,这本书总能提供一个全新的视角去审视问题,而不是简单地给出“标准答案”。