《程序员的自我修养——链接、装载与库》
来源:互联网 发布:微信做宣传的软件 编辑:程序博客网 时间:2024/05/21 13:34
第一部分
第一章 温故而知新
1.1 从Hello World说起
1.2万变不离其宗
中央处理器 CPU
内存
I/O控制芯片
总线
SMP与多核
1.3站得高,望得远
1.4操作系统做什么
提供抽象的接口
管理硬件资源
1.4.1不要让CPU打盹
多任务系统 Multi-tasking
抢占式 Preemptive
1.4.2设备驱动
1.5内存不够怎么办
1.5.1关于隔离
虚拟地址空间 Virtual Address Space
物理地址空间 Physical Address Space
1.5.2分段(Segmentation)
把一段与程序所需要的内存空间大小的虚拟空间映射到某个地址空间
1.5.3分页(Paging)
分页的基本方法是把地址空间人为地等分成固定大小的页,每一页的大小由硬件决定,或硬件支持多种大小的页,由操作系统选择决定页的大小。
MMU
1.6众人拾柴火焰高
1.6.1线程基础
什么是线程 Thread
线程访问权限
线程调度与优先级
运行
就绪
等待
可抢占线程和不可抢占线程
Linux的多线程
1.6.2线程安全
竞争与原子操作
同步与锁
二元信号量 Binary Semaphore
互斥量 Mutex
临界区 Ciritical Section
读写锁 Read-Write Lock
条件变量 Condition Variable
可重入(Reentrant)与线程安全
可重入函数特点
不适用任何(局部)静态或全局的非const变量
不返回任何(局部)静态或全局的非const变量的指针
仅依赖于调用方提供的参数
不依赖任何单个资源的锁(mutex等)
不调用任何不可重入的函数
过度优化
volatile
阻止编译器为了提高速度将一个变量缓存到寄存器内而不写回
阻止CPU换序
不可移植的方法
1.6.3线程内部情况
三种线程模型
一对一模型
多对一模型
多对多模型
1.7本章小结
第二部分
第二章 编译和链接
2.1 被隐藏了的过程
2.1.1 预编译
2.1.2 编译
2.1.3 汇编
2.1.4 链接
2.2 编译器做了什么
2.2.1 词法分析
2.2.2 语法分析
2.2.3 语义分析
2.2.4 中间语言生成
2.2.5 目标代码生成与优化
2.3 连接器年龄比编译器长
2.4 模块拼装——静态链接
2.5 本章小结
第三章 目标文件里有什么
3.1 目标文件的格式
3.2 目标文件是什么样的
3.3 挖掘SimpleSection.o
3.3.1 代码段
3.3.2 数据段和只读数据段
3.3.3 BBS段
3.3.4 其他段
3.4 ELF文件爱你结构描述
3.4.1 文件头
3.4.2 段表
3.4.3 重定位表
3.4.4 字符串表
3.5 链接的接口——符号
3.5.1 ELF符号表结构
3.5.2 特殊符号
3.5.3 符号修饰与函数签名
3.5.4 extern "C"
3.5.5 弱符号与强符号
3.6 调试信息
3.7 本章小结
第四章 静态链接
4.1 空间与地址分配
4.1.1 按序叠加
4.1.2 相似段合并
4.1.3 符号地址的确定
4.2 符号解析与重定位
4.2.1 重定位
4.2.2 重定位表
4.2.3 符号解析
4.2.4 指令修正方式
4.3 COMMON块
4.4 C++相关问题
4.4.1 重复代码消除
4.4.2 全局构造与析构
4.4.3 C++与ABI
4.5 静态库链接
4.6 链接过程控制
4.6.1 链接控制脚本
4.6.2 最"小"的程序
4.6.3 使用ld链接脚本
4.6.4 ld链接脚本语法简介
4.7 BFD库
4.8 本章小结
第三部分
第四部分
- 《程序员的自我修养——链接、装载与库》
- 《程序员的自我修养——链接、装载与库》
- 《程序员的自我修养—链接、装载与库》
- 《程序员的自我修养——链接、装载与库》勘误
- 专访《程序员的自我修养——链接、装载与库》作者俞甲子
- 推荐:《程序员的自我修养——链接、装载与库》 读书笔记
- 《程序员的自我修养——链接、装载与库》 读书总结
- 程序员的自我修养——链接,装载与库(第1,2部分)
- 程序员的自我修养——链接,装载与库(第3,4部分)
- 读书笔记之《程序员的自我修养——链接、装载与库》
- 程序员的自我修养 链接、装载、与库——读书笔记
- 《程序员的自我修养——链接、装载与库》第一章笔记
- Notes:《程序员的自我修养——链接、装载与库》
- 程序员的自我修养--链接,装载,库
- 程序员的自我修养 -- 链接、装载与库
- 读书笔记之《程序员的自我修养--链接、装载与库》
- 《程序员的自我修养》-链接、装载与库
- 程序员的自我修养--链接、装载与库
- statspack性能报告——概述(1)!
- JAVA 中URL链接中文参数乱码的处理方法
- extjs radioGroup怎么取选中的值?怎么设置值选中?
- 无线网络加密方式对比
- ME_PURCHDOC_POSTED
- 《程序员的自我修养——链接、装载与库》
- 单例,应用程序委托和顶层数据
- mjpg-streamer和jpegsrc.v8b.tar.gc的编译
- php 调节者模式(代码)
- socket的服务器/客户端模型——时间服务器的版本演进
- 转载
- 如何隐藏system函数的窗口
- android访问本地web(不是127.0.0.1而是10.0.2.2)
- Oracle DB Server内存划分参考