第一部分:程序结构和执行
第1章:计算机系统漫游
第2章:信息的表示和处理
第3章:程序的机器级表示
第4章:处理器体系结构
第5章:优化程序性能
第6章:存储器层次结构
第二部分:在系统上运行程序
第7章:链接
第8章:异常控制流
第9章:虚拟存储器
第三部分:程序间的交互和通信
第10章:系统级I/O
第11章:网络编程
第12章:并发编程
===第一章:计算机系统漫游==================================================
计算机系统的实现方式虽然不同,但是所有计算机系统都有相似的硬件和软件组件;了解编译器如何实现过程调用的;
编写自己的unix外壳,自己的动态存储分配宝,自己的web服务器;认识到并发带来的希望和陷阱。
通过跟踪hello程序的生命周期开始对系统的学习---从它被程序员创建,到在系统上运行,输出简单的消息,然后终止。
------------code/hello.c------------------------------
#include<stdio.h>
int main(){
printf("hello world\n");
}
--------------code/hello.c----------------------------
1.1 信息就是位+上下文
hello.c文件由ASCII自负构成的文件称为文本文件,其他文件都是二进制文件。
hello.c程序的生命周期从一个源程序或者源文件开始的,源程序是由值0和1组成的位序列,
8个位=一个字节=一个文本字符(大部分现代系统都使用ASCII标准表示文本字符)=一个单字节大小的整数值
系统的所有信息-包括磁盘文件、存储器中的程序、数据 网络上传送的数据,都是一串位表示的,区分不同数据对向的唯一方法是
我们读到这些数据对象时的上下文。同一个字节序列,在不同的上下文中表示的可能是一个整数、浮点数。字符串或者机器指令。
1.2 程序被其他程序翻译成不同的格式
1.3 了解编译系统如何工作
1.4 处理器读并解释存储在存储器中的指令
1.5 高速缓存至关重要
1.6 存储设备形成层次结构
1.7 操作系统管理硬件
1.8 系统之间利用网络通信