第一章 计算机系统漫游
计算机系统是由硬件和系统软件组成的。所有计算机系统都是由相似的硬件和软件组成,它们又执行着相似的功能。
以hello程序为例。
1.1信息就是位+上下文
hello程序的生命是从源程序(源文件)开始的。源程序是程序员编写的,hello.c。源程序是 0和1 的比特位,8个一组。ASCII标准来表示文本字符。 这样的文件称为文本文件,所有其他的文件称为二进制文件。
一个基本思想:系统中所有的信息-----包括磁盘文件、存储器中的程序、存储器中存放的用户数据以及网络上传送的数据,都是由一串比特表示的。区分的惟一方法是这些数据对象的上下文。
1.2 程序被其他程序翻译成不用的格式
hello程序生命周期一开始时高级C程序,能够被人读懂。
编译系统(预处理器,编译器,汇编器,链接器)
预处理阶段:
根据字符#开头的命令(directives),修改原始的C程序。
编译阶段:
变成汇编语言程序。
汇编语言,为不同高级语言的不同编译器提供了通用的输出语言。
汇编阶段:
将汇编语言指令翻译成可重定位(relocatable)目标程序格式,并保存在helloc.c中。
链接阶段:
链接printf函数。并入后。可执行文件加载到存储器后,由系统负责执行。
1.3 了解编译系统如何工作是大有益处的
优化程序性能。
理解链接时出现的错误。
避免安全漏洞。
1.4 处理器读并解释储存在存储器中的指令
1.4.1 系统的硬件组成
总线:贯穿整个系统的是一组电子管道,称为总线。
I/O设备:是系统与外界的联系通道。
主存:临时的存储设备
处理器:解释(或执行)存储在主存中指令的引擎。
1.4.2 执行hello程序
1.5 高速缓存
1.6 形成层次结构的存储设备
1.7 操作系统管理硬件
操作系统两个基本功能:防止硬件被失控的应用程序滥用。
1.7.1 进程
并发运行
上下文切换
系统保存进程运行所需要的所有状态信息,称为上下文。
1.7.2 线程
每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。
1.7.3 虚拟存储器
抽象概念。
为每个进程提供一个假象,好像进程都在独占使用主存。每个进程看到的存储器都是一致的,称为虚拟地址空间。
程序代码和数据
堆
共享库
栈
内核虚拟存储器 内核是操作系统总是驻留在存储器中的部分。
1.7.4 文件
文件是字节序列。每个I/O设备,包括磁盘、键盘、显示器,甚至于网络,都可以看成是文件。
1.8 利用网络系统和其他系统通信