学习《深入理解操作系统》(一)
第一章 计算机系统漫游
1.1信息就是位+上下文
只由ASCII字符构成的文件称为文本文件,除此之外的文件被称为二进制文件。
同样的字节序列所处上下文不同,所代表的意思也不同,比如在整数 浮点数 计算机指令,同样的一个字节序列(11111111)意义显然是不同的。
由此,我们可知信息=位(或者字节序列)+上下文。
1.2程序被其他程序翻译成不同的格式
上图描述了程序员所编写的C源码是如何通过一系列程序的运作变为计算机可识别的二进制可执行程序。
1.3了解编译系统如何工作是大有益处的
益处:
优化程序性能。编译器将源码转化成机器码,同样的逻辑不同条件下生成的机器码不同,从而其性能也会存在差异。
理解链接时出现的错误。
避免安全漏洞。
1.4 处理器读并解释存储在内存中的指令
1.4.1系统的硬件组成
总线:一组连接各个部件并传输信息的电子管道,单次传递信息的信息大小成为字(word)。字的大小为多少字节,每个系统都不同。
I/O设备:输入输出设备,是系统与外界的连接通道,即与外界交换信息的场所。I/O设备通过适配器或控制器与IO总线相连,从而接入系统。
适配器是主板上芯片组。控制器是一块插在主板插槽上的卡。
主存:即内存。存储程序运行时所需的数据以及指令。从物理上讲,内存是指一组动态随机存取存储芯片(DRAM),从逻辑上将是一条线性的字节数组。
CPU:是解释执行存储在内存中的指令的引擎。CPU核心是一个存储一个字大小的存储器,称为程序计数器,总是指向内存中的一条指令。处理器处理程序计数器所指向的指令。处理器指令集描述的是每条机器码指令的效果,处理器微架构描述的是处理器实际上是如何实现的。
1.4.2 运行hello程序
略。
1.5高速缓存至关重要
由于信息在各个部件中消耗大量时间,采用高速读写的存储器来缓存信息,以降低读取信息的时间消耗,但由于高速缓存成本过高,固将高速缓存用在最需要降低时间消耗的CPU和主存之间的读取上。多级缓存更好的权衡了成本与性能。利用高速缓存来提高程序的性能。
1.6存储设备形成的层级结构
1.7 操作系统管理硬件
操作系统通过进程/虚拟内存/文件三个抽象概念 对硬件进行管理,优点:一是防止失控的应用程序对硬件滥用,二是向应用程序提供简单一致的机制来控制复杂而通常大不相同的低级硬件
1.7.1 进程
操作系统对应用程序的抽象就是进程,让每个程序看起来都是独占硬件,实际上每个进程的指令是交错运行的,也就是并行。这种交错运行的机制叫上下文切换。操作系统保持跟踪进程运行所需的所有状态信息,这种状态被称为上下文。一个处理器同一时间只能处理一个进程,当执行另外进程时会保存当前进程的上下文,然后切换的另一进程的上下文,传递控制权过去。另一进程从上次停止的地方开始执行。进程转换是通过操作系统内核管理的。
1.7.2 线程
一个进程可由多个线程的执行单元组成,每个线程运行在进程的上下文中,并共享同样的代码和全局数据。
1.7.3 虚拟内存
虚拟内存是一个抽象的概念,为每个进程模拟了完整的内存空间,每个进程看到的内存都是一致的,这称为虚拟地址空间。
1.7.4 文件
实际上就是字节序列。
1.8系统之间利用网络通讯
1.9重要主题
1.9.1 Amdahl定律
a为系统某部分用时占系统总用时的比,k为该部分提升性能的比例,S为整个系统提升的性能比
1.9.2 并发和并行
线程级并发:进程中采用多个线程进行并发处理,多核操作系统用超线程技术让cpu在线程等待时去执行另外的线程。
指令级并行:处理器同时执行多条指令。处理器一个时钟周期执行超过一条指令,就成为超标量处理器。
单指令多数据并行:一条指令可以产生多个可以并行的操作
1.9.3 计算机系统中抽象的重要性
抽象让我们忽略具体解决方案,关注执行结果,降低对事物理解的复杂性。
转载于:https://my.oschina.net/u/4003871/blog/2251590