本书一共分为三部分,12章节
部分1:程序结构和执行
部分2:在系统上运行
部分3: 程序间的相互通信
chapter1:计算机系统漫游
通过跟踪hello程序的生命周期来开始对系统的学习。
1.1信息就是位+上下文
hello的生命周期是从源程序开始的,程序员通过编辑文本文件,eg:hello.c
源程序有0,1组成的位组成,8个位一个字节,每个字节通过使用ASCII标准来表示文本符。
1.2程序被翻译成不同的格式
eg;hello在Unix(多任务,多用户)系统上从源文件到目标文件的编译过程
预处理:根据#开头的命令,修改原始的c程序,eg:碰到#include<Stdio.h>时告诉预处理器读取系统头文件的内容
并把它插入程序文本中得到.i结尾的另外一个c程序
编译:将.i文件翻译成.s,为汇编语言程序
汇编:将.s翻译成机器指令,将这些指令打包成 可重定位目标程序de 格式并且将结果存在.o的文件中(二进制文件)
链接:hello程序调用printf(存在于printf.o的单独的预编译好的目标文件中),而这个文件必须与一某种方式合并
到hello.o中,链接器就是负责处理这种合并。结果得到hello(可执行目标文件.exe)。
1.3了解编译系统是如何工作的益处很大,具体在chapter7详细讲解
1.4处理器读并且解释存储在内存的指令
hello最后被存放在磁盘上,要想在Unix运行,将他的文件名输入到成为shell的应用程序中
shell是一个命令行解释器,他输出一个提示符等待输入一个命令行,然后执行这个命令。
1.4.1系统的硬件组成
eg:控制器是本身或者系统的主印制电路板
适配器是一块插在主板插槽上的卡
下面是自己整理的简化笔记
1.
2.由于不断复制,导致花费大量时间,把信息从一个地方搬运到另外一个地方,所以出现高速缓存Cache
也就是在处理器和较大得存储设备(主存)之间插入一个更小更快的存储设备,用来存放近期需要的信息,加快信息的传递
利用局部性原理,大部分的内存操作都是在快速的高速缓存中进行的。
下面的L1和L2使用一种SRAM(随机访问存储器)硬件技术实现的
3.操作系统管理硬件
1.防止硬件失控的应用程序滥用
2.向应用程序提供简单的机制控制复杂的低级硬件设备。
通过三个抽象的实现这两个功能:进程,虚拟内存,文件。
4;进程
内核是系统管理全部进程所用的代码和数据结构的集合。
上下文切换
5.虚拟内存
是一个抽象概念,为每个进程提供假象,即每个进程都独占的使用主存,每个进程看到的内存是一致的成为虚拟地址空间
具体解释见p13.
6,文件
系统中的所有的输出输入都是使用一组UnixI/o的系统函数调用读写文件来实现的
7.通信
系统之间的通信,就是客户端和服务器端之间的联系
网络复制信息,eg:email,telnet,FTP,等
8.并发和并行
并发:线程级
并行:指令级
多线程
9,抽象,eg:java中的类
-》API->.....虚拟机,是对整个计算机的抽象