乐正

Actions speak louder than words.

操作系统笔记: 计算机系统概述

学习目标:

  • 了解计算机系统的基本组成及它们之间的内部关系。
  • 理解处理器执行一条指令时的每一步骤。
  • 掌握中断的概念,以及处理器如何及为何利用中断。
  • 列举并描述典型的计算机存储体系的每一层。
  • 理解多处理器和多核计算机组织结构的基本特性。
  • 讨论局部性概念,分析多级存储体系的性能。

基本组成

计算机系统有四个主要的结构化部件:

  • 处理器(Prosessor)
  • 内存(Main memory)
  • 输入/输出模块(I/O modules)
  • 系统总线(System bus)

CPU的一种功能是和内存交换数据,为此,它通常使用两种寄存器:存储器地址寄存器( Memory Address Register)和存储器缓冲寄存器(Memory Buffer Register)。同理,输 入/输出地址寄存器(I/O Address Register)和输入/输出缓冲寄存器(I/O Buffer Register) 用于确定一个特定的输入/输出设备与处理器之间交换数据。

指令的执行

程序执行是由不断重复的取指令和执行指令的过程组成的。一个单一的指令需要的处理称为 一个指令周期。取到的指令被放置在存储器的一个寄存器单元内,这个寄存器被称为指 令寄存器(Instruction Register)。指令中包含确定处理器将要执行操作的位和处理器解 释指令并执行对应的操作。大体上,这些动作可以分为四类:

  • 处理器-存储器:数据在处理器和存储器之间交换。
  • 处理器-I/O:CPU可以从外部设备中输入或者输出数据。
  • 数据处理:处理器可以执行很多与数据有关的算数操作或者逻辑操作。
  • 控制:某些指令可以改变执行顺序。

指令的执行涉及这些行为的组合。

中断

所有计算机都提供了允许其他模块(I/O,存储器)中断处理器正常处理过程的机制。中断是 一种用于提高处理器性能的手段。

中断的分类:程序中断、时钟中断、I/O中断和硬件失效中断。

中断和指令周期

利用中断功能,处理器可以在I/O操作的过程中,执行其他指令。当外部设备做好服务的准备 时,该外部设备的I/O模块给处理器发送一个中断请求的信号。这时处理器会做出响应,暂停 当前程序的处理,转去处理服务于特定I/O设备的程序,这个程序称之为中断处理程序

为适应中断产生的情况,在指令周期中增加了中断阶段。

中断处理

当I/O设备完成以此I/O操作时,发生了下列硬件事件:

  1. 设备给处理器发送一个中断信号。
  2. 处理器在响应中断信号前,结束当前指令的执行。
  3. 处理器对中断进行测定,确定存在未响应的中断,开始对提交中断的设备发送确认信号, 确认信号允许该设备取消它的中断信号。
  4. 处理器需要为把控制权转移到中断程序中去做准备。需要保存从中断点恢复当前程序所 需要的信息,至少包括程序状态字(PSW)和保存在程序计数器(PC)中的下一条要执行 指令的地址。

PSW中包含当前运行进程的状态信息,包括内存使用信息、条件码和其他注入允许中断/禁止 中断位、内核/用户模式位等状态信息。

  1. 处理器把响应此中断的中断处理程序地址装入程序计数器中。
  2. 中断处理程序开始处理中断,其中包括检查与I/O操作相关的状态信息或其他引起中断的 事件,还可能包括给I/O设备发送附加命令或者应答。
  3. 中断程序结束后,被保存的寄存器值从栈中释放并恢复到寄存器中。
  4. 最后操作是恢复PSW和程序计数器的值,继续执行被中断的程序。

多个中断

处理多个中断有两种方法。

  • 处理一个中断时,禁止再发生新的中断。当中断处理程序完成后,才允许中断。这种方法 很简单,缺点是没有考虑相对优先级和时间限制的要求。
  • 定义中断优先级,允许高优先级的中断打断低优先级的中断。

"CPU指令周期"

存储器的层次结构

实现存储器系统会用到各种技术,但各个技术之间存在一下关系:

  • 存取时间越快,每『位』的价格越高
  • 容量越大,每『位』的价格越低
  • 容量越大,存取速度越慢

为了既满足大容量存储需求,又能够兼顾性能需求,不能依赖于单一的存储组件,使用存 储器的层次结构

"存储器层次结构"

这个层次结构从上往下看,会出现下列情况:

  • 每『位』价格递减
  • 容量递增
  • 存取时间递增
  • 处理器访问存储器频次递减

容量较大,价格便宜的慢速存储器,是容量较小,价格较贵的告诉存储器的后备。这种存储 结构能够成功的关键在于:低层访问频率递减

处理器访问存储器频次递减有效的基础是访问的局部性原理。在执行程序期间,处理器 的指令访存和数据访存呈现『簇』状。典型的程序包含许多迭代循环和子程序,一旦程序进 入一个循环或子程序执行,就会重复访问一小范围内的指令集合。同理,对表和数组的操作 涉及存取『一簇』数据。

高速缓存

长期以来,由于处理器和内存的速度不匹配,这个限制已经称为很严重的问题。解决方法是 利用局部性原理,即在处理器和内存之间提高一个容量小而速度快的存储器。

高速缓存原理

高速缓存包含一部分内存数据的副本。当处理器试图读取存储器中的一个字节或者字时,要 进行一次检查以确定这个字是否在高速缓存中。如果在,则该字节从高速缓存传递给处理器。 如果不在,则先将由固定数组的字节组成的一块内存数据读入高速缓存,然后该字节从高速 缓存传递给处理器。由于访问局部性现象的存在,当一块数据被读入高速缓存以满足一次存 储器访问时,很可能紧接着的多次访问的数据是该块中的其他字节。

直接内存存取

针对I/O操作的技术:

  • 编程I/O操作
  • 中断驱动I/O
  • 直接内存存取

技术

« 团队小伙伴上第一财经 从零搭建和配置OSX开发环境 »

Comments