影响程序运行的因素

1.2 影响程序运行的因素(存储设备)

  hello.c 的程序,是无法感觉到运行过程的,但是在计算机是需要进行大量的计算,起初hello程序的机器指令是存放在磁盘上的,当程序加载时,他们被复制到主存,当处理器运行程序时,指定从主存中复制到处理器,相似地,数 据 串 “h e l­
io, w orld/n” 开始时在磁盘上,然后被复制到主存,最后从主存上复制到显示设备,从程序员的角度来看,这些复制就是开销,减慢了程序“真正”的工作。因此,系统设计者 的一个主要目标就是使这些复制操作尽可能快地完成。

  • 硬件因素:
      1.越大的存储要比较小的存储设备运行的慢,(cpu速度 > 内存 > 硬盘)
       一个典型系统上的磁盘驱动器可能比主存大1000倍 ,但是对 处理器而言,从磁盘驱动器上读取一个字的时间开销要比从主存中读取的开销大1000万倍
       一个典型的寄存器文件只存储几百字节的信息,而主存里可存放几十亿字节 然而处理器从寄存器文件中读数据比从主存中读取几乎要快100倍随着这些年半导体技术的进步,
       这种处理器与主存之间的差距还在持续增大。加快处理器的运行速度比加快主存的运行速度要容易和便宜得多
      2.快速设备的造价要高于同类的低俗设备
  • 解决处理器和主存速度方案

  针对这种处理器与主存之间的差异,系统设计者采用了更小更快的存储设备,称为高 速缓存存储器(cache m em ory,简称为cache或高速缓存),作为暂时的集结区域,存放处 理器近期可能会需要的信息。图 1-8展示了一个典型系统中的高速缓存存储器。位于处理 器芯片上的L 1 高速缓存的容量可以达到数万字节,访问速度几乎和访问寄存器文件一样 快。一个容量为数十万到数百万字节的更大的L 2 高速缓存通过一条特殊的总线连接到处 理 器 。进 程 访 问 L 2 高 速 缓 存 的 时 间 要 比 访 问 L 1 高 速 缓 存 的 时 间 长 5 倍 ,但 是 这 仍 然 比 访 问主存的时间快5~10倍。L1和 L2高速缓存是用一种叫做静态随机访问存储器(SRAM) 的硬件技术实现的。比较新的、处理能力更强大的系统甚至有三级高速缓存:L l、L 2 和 L3。系统可以获得一个很大的存储器,同时访问速度也很快,原因是利用了高速缓存的局 部性原理,即程序具有访问局部区域里的数据和代码的趋势。通过让高速缓存里存放可能 经常访问的数据,大部分的内存操作都能在快速的高速缓存中完成

1.3 存储设备的层次结构

  在处理器和主存之间,插入一个更小更快的存储设备这种想法已经成为一个普遍的概念,普遍来说越小的存储设备越贵,访问速度越快,就用日常电脑来说cpu价格>内存价格>硬盘价格,

  存储器的主要思想就是上一层的存储器作为下一层的的存储器的高速缓存,寄存器文件就是L1的高速缓存,L1是 L2的高速缓存,L2是 L3的高速缓存,L3是主存 的高速缓存,而主存又是磁盘的高速缓存,寄存器文件就是L1的高速缓存,L1是 L2的高速缓存,L2是 L3的高速缓存,L3是主存 的高速缓存,而主存又是磁盘的高速缓存,所以物理优化就是升级配置,

1.4 系统管理硬件

   当我们在linux运行程序的时候,shell 和 hello,程序都没有直接访问键盘、显示器、磁盘或者主存,他们是通过 操作系统提供的服务,操作系统就是程序和硬件之间的桥梁,目前所有的程序对硬件的操作都必须通过操作系统

操作系统的基本功能

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

进程

   进程是计算机科学中最重要和最成功的概念之一,它是对操作系统正在运行的程序的一种抽象,在一个系统上可以运行多个进程,看起来都在单独使用硬件,其实,一个进程的指令和另一个进程的指令时交错执行的,所以用户可运行的程序时大于cpu个数的,
就比如我挂着qq,登录微信,打开网易云音乐播放bgm,都可以同时运行的,无论是在单核还是多核系统中,一 个 CPU看上去都像是在并发地执行多个 进程,这是通过处理器在进程间切换来实现的。操作系统实现这种交错执行的机制称为上 下文切换
   操作系统保持跟踪运行所需的所有状态信息,这个状态就是上下文,包含的信息有 pc 和寄存器文件当前的值,以及主存的内容,在任何一刻,单处理器只能执行一个进程的代码,当操作系统决定要把控制权从当前进程转移到某个新进程时,就会进行上下文切换,即保存当前进程的上下文、恢复新进程的上下文,然后将控 制权传递到新进程。新进程就会从它上次停止的地方开始
   所以当在shell 用运行 hello.c 程序时两个并发的进程:shell进程和hello 进程。最开始,只有shell进程在 运行,即等待命令行上的输入。当我们让它运行h e llo 程序时,shell通过调用一个专门 的函数,即系统调用,来执行我们的请求,系统调用会将控制权传递给操作系统。操作系 统保存shell进程的上下文,创建一个新的hello 进程及其上下文,然后将控制权传给新的 h e llo 进程。h e llo 进程终止后,操作系统恢复shell进程的上下文,并将控制权传回 给它,shell进程会继续等待下一个命令行输入

内核
   管理一个程序到另外一个程序中的装换,内核时操作系统常驻主存的部分,内核不是一个独立的程序,他是管理系统全部进程所用代码和数据结构的集合

线程

   一个进程实际上可以有多个线程的执行单元组成,每个线程都在运行程序的上下文,并共享通的代码和全局数据,利用线程可以完成并行处理的需求,所有线程成为重要的变成模型,应为多线程比多进程之间更容易共享数据,所以线程更为高效,

虚拟内存

   虚拟内存是一个抽象概念,可以让每个进程看起来独占主存,
---- 未完成

结论

高速缓存存储器存在的应用程序员能够利用高速缓存将程序的性能提高一个数量级

原文地址:https://www.cnblogs.com/zdoubly/p/13663621.html