Loading

深入理解计算机系统 ch1-计算机系统漫游 Part2

1.5 高速缓存至关重要

 hello程序的机器指令最初是放在磁盘上的,当程序加载时,他们被复制到主存;当处理器允许程序时,指令又从主存复制到处理器。从程序员的角度看,这些复制就是开销,减慢了程序“真正”的工作。因此,系统设计者的一个主要目标就是使这些复制操作尽可能快地完成。

  根据机械原理,较大的存储设备要比较小的存储设备运行地幔,而快速设备的造价远高于同类的低速设备。类似地,一个典型的寄存器文件只存储几百节的信息,而主存里可存放几十亿字节。然而,处理器从寄存器文件中读取数据比从主存中读取的开销大快100倍。

  针对这种处理器和主存的差异,系统设计者采用了更小更快的存储设备,称为高速缓存存储器(cache memory),作为暂时的集结区域,存放处理器近期可能需要的信息。

  L1和L2高速缓存是用一种叫做静态随机访问器(SRAM)的硬件技术实现的。比较新的、更强大的系统甚至有三级高速缓存:L1、L2、L3。系统可以获得一个很大的存储器,同时访问速度也很快,原因是利用了高速缓存的局部性原理,即程序具有访问局部区域里的数据和代码的趋势。

 

 

  1.6 存储设备形成层次结构

  

 

 1.7 操作系统管理硬件

 我们可以把操作系统看成是应用程序和硬件之间插入的一层软件。

  操作系统有两个基本功能:(1)防止硬件被失控的应用程序滥用 (2)向应用程序提供简单一致的机制来控制复杂而通常大不相同的低级硬件设备。 操作系统通过几个基本的抽象概念(进程,虚拟内存和文件)实现这两个功能。文件是对I/O设备的抽象表示,虚拟内存是对主存和磁盘I/O设备的抽象表示,进程则是对处理器、主存和I\O设备的抽象表示。

  1.7.1 进程

  进程是计算机科学中最重要和最成功的概念之一

  进程是操作系统对一个正在运行的程序的一种抽象。

  无论是在单核还是多核系统中,一个CPU看上去都像是在并发地执行多个进程,这是通过处理器在进程间切换来实现的。操作系统实现这种交错的机制称为上下文切换

   操作系统保持跟踪进程运行所需的所有状态信息,这种状态,也就是上下文,包括许多信息,比如PC和寄存器文件的当前值,以及主存的内容。

  1.7.2 线程

   在现代系统中,一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。

  1.7.3 虚拟内存

   虚拟内存是一个抽象概念。它为每一个进程提供了一个假象,即每个进程都在独占地使用主存,每个进程看到的内存都是一致的,称为虚拟地址空间。

 

   每个进程看到的虚拟地址空间由大量准确定义的区构成,每个区都有专门的功能。

   -程序代码和数据。 对所有的进程来说,代码是从同一固定地址开始,紧接着是和C全局变量相对应的数据位置。代码和数据区是直接按照可执行目标文件的内容初始化的。

   -堆 。 代码和数据区在进程一开始运行时就被指定了大小,与此不同,当调用像malloc和free这样的C标准库函数时,堆可以在运行时动态地拓展和收缩。

   -栈。 位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数调用。和堆一样,用户栈在程序执行期间可以动态地拓展和收缩。特别地,每次我们调用一个函数时,栈就会增长,从一个函数返回时,栈就会收缩。

  -内核虚拟内存。地址空间顶部的区域是为内核保留的。不允许应用程序读写这个区域的内容或者直接调用内核代码定义的函数。相反,他们必须调用内核来执行这些操作。

 1.7.4 文件

  文件就是字节序列,经此而已。 每个I/O设备包括磁盘、键盘、显示器甚至网络都可以看成文件。

posted @ 2020-03-04 19:17  MQFLLY  阅读(108)  评论(0编辑  收藏  举报