操作系统精髓:计算机系统概述

1.计算机的基本构成

计算机的四个主要的结构化部件:
#处理器processor:CPU  控制计算机的操作,执行数据处理
#内存:main memory/primary memory:存储数据和程序
#输入/输出模块 I/O module: 在计算机和外部环境之间移动数据,外部环境包括辅存、通信设备和终端
#系统总线system bus:为处理器、内存、输入输出模块间提供通信的设备

内存模块由一组单元组成,这些单元由顺序编码的地址定义。每一个单元包含一个二进制数,可以被解释为一个指令或数据。
输入/输出模块包含内存缓冲区,用于临时保存数据,知道它们被发送出去。

2.处理器寄存器:

处理器包含一组寄存器,它们提供一定的存储功能,比内存访问速度快,但比内存的容量小。

#用户可见寄存器:
 由处理器执行的机器语言引用,常用的数据寄存器包括数据寄存器、地址寄存器、条件码寄存器。
 @数据寄存器:由程序员分配给各个函数,通常是通用的,特殊的如浮点数运算专用寄存器
 @地址寄存器:存放数据和指令的内存地址
              变址寄存器index register:通过在基值上加索引获取地址
      段指针segment pointer:对于分段寻址方式,一个存储器引用由一个特定段号和段内偏移量组成
      栈指针stack pointer:
 
#控制和状态寄存器
 @程序计数器program counter  PC:包含将取指令的地址
 @指令寄存器instruction register IR:包含最近取的指令内容
 @条件码寄存器condition code:条件码为处理器硬件为操作结果设置的位,多个条件码被搜集存放在寄存器中,构成控制寄存器的一部分
 @中断寄存器:每一个指向一个终端例程
程序状态字program status wor PSW:通常包含条件码和其他状态信息,如中断允许/禁止位,内核/用户态位

3.指令的执行

处理器处理的程序是由一组保存在存储器中的指令组成的。
简单而言,指令处理的两个步骤:处理器从存储器一次读取一个指令,然后执行每条指令。两个步骤分别为取值阶段和执行阶段,组成一个指令周期。
程序执行就是由不断重复的取指令和执行指令的过程组成的。

程序计数器PC保存下一次要取的指令地址,通常处理器在每次取指令后递增,以期顺序取得下一指令。
取到的指令被放置在指令寄存器IR,处理器解释指令并做相应的操作。

大体上的四类操作:
#处理器《--》存储器:数据传送
#处理器《--》I/O:输入输出数据
#数据处理:执行数据相关的算数操作和逻辑操作
#控制:修改程序计数器中取址位置

允许I/O模块和处理器直接直接交换数据,这个操作叫做直接内存存取(Direct Memory Access DMA)。

4.中断

 所有计算机都提供了允许其他模块如I/O、存储器中断处理器正常处理过程的机制。
 中断最开始是作为一种提高处理器效率的手段。


中断阶段:

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

在中断阶段,处理器检查是否有中断发生,即检查是否出现中断信号:

# 如果没有,处理器继续运行,并在取指阶段取当前程序的下一条指令

# 如果有,处理器挂起当前程序的执行,并执行一个中断处理程序


中断分类:
#程序中断:由指令执行结果产生
#时钟中断:由处理器内部的计时器产生,允许操作系统以一定规律执行函数
#I/O中断:由I/O控制器产生
#硬件故障中断:

中断处理程序:
利用中断功能,处理器可以在I/O操作的执行过程中执行其他指令。
当处理器接收到一个I/O中断处理信号后,暂停当前程序的处理,转去处理服务于特定I/O设备的程序,这个程序称作中断处理程序interrupt handler。
中断处理程序是操作系统的一部分,它确定中断的性质,并执行所需要的操作。

中断处理:
中断处理激活了很多的事件,包括硬件中的事件和软件中的事件。
#设备给处理器发出一个中断信号
#处理器在响应中断前结束当前指令的执行
#处理器对中断进行测定,确定存在未响应的中断,并给提交中断的设备发送确认信号,确认信号允许该设备取消它的中断信号
#为将控制权转移到中断程序中做准备:
  保存从中断点恢复当前程序所需要的信息,要求的最少信息包括程序状态字PSW和保存在程序计数器中的下一条要执行的指令的地址,把它们压入系统控制栈
#处理器将中断处理程序入口地址装入程序计数器中
  根据计算机系统结构和操作系统的设计,可以针对每一个中断有一个中断处理程序,也可以只为某一类中断设置同一个中断处理程序
一旦完成了程序计数器的装入,处理器就可以开始下一个指令周期
#与中断执行程序相关的程序计数器和pSW被保存在系统栈中
#执行中断处理
#中断处理处理结束后,被保存的寄存器值从栈中释放并恢复到寄存器中
#从栈中恢复PSW和程序计数器的值,其结果是下一条要执行的指令来自前面被中断的程序

多个中断处理的两种方法:
#处理中断时,禁止再次发生中断:
  缺点:没有考虑相对优先级和时间限制的要求
#定义中断优先级,允许优先级高的中断中断优先级低的中断

多道程序设计:
允许多道程序都处于活动状态,多道程序轮流执行。
当处理器处理程序时,执行的顺序取决于它们相对优先级和是否有I/O等待。
当一个程序被中断,中断处理完后,不一定会立刻恢复处理被中断程序,而是继续根据执行顺序决定

5.高速缓存

长期以来,内存和处理器的速度不匹配,解决方法是利用局部性原理principle of locality,即在处理器和内存之间提供一个容量小而速度快的存储器,称作高速缓存。
原理:试图使访问速度接近现有最快的存储器,同时保持价格便宜的大存储容量。

读操作过程:
高速缓存包含一部分内存数据的副本,当处理器试图读取存储器中的一个字或者字节时,要进行一次检查以确定这个字节或字是否在高速缓存中,如果在,该字节或字从高速缓存中传递给处理器;如果不在,则由固定数目的字节组成的一块内存数据先被读入高速缓存,然后该字节或字从高速缓存传递给处理器。

6.I/O通信技术

三种可能的技术:
#可编程I/O:
 当处理器正在执行程序并遇到一个与I/O相关的指令时,它通过给相应的I/O模块发送命令来执行这个指令
#中断驱动I/O
 处理器给模块发送I/O指令,然后继续做其他一些有用的工作。当I/O模块准备好和处理器交换数据时,它将打断处理器的执行并请求服务。

以上两种,处理器仍然主动干预在处理器和I/O模块之间的数据传输,并且任何数据传输都必须完全通过处理器
#直接内存存取DMA
 由系统总线中一个独立模块完成,也可以并入一个I/O模块。

 工作方式:
 #当处理器要读写一块数据时,它给DMA模块产生一条命令,传送以下信息:是读还是写、设计I/O设备地址、读写存储单元、需要读写的字节数
 #处理器将这个操作委托给DMA单元后,继续其他工作。DMA单元直接与存储器交互,传送整个数据块,每次传输一个字
   #DMA模块传送完成后,发送一个中断信号给处理器
 这样只有在开始传送和传送结束时处理器才参与

 

7.过程的调用和返回

过程的调用和返回的最常用的技术就是栈。当处理器执行一个调用时,它将返回地址放在栈中;当执行一个返回时,它使用栈顶的指针。
在过程调用中,通常还要传递参数。当处理器处理一次调用时,不仅在栈中保存返回地址,而且保存传递给被调用过程的参数。
被调用过程从栈中访问这些参数,在返回前,返回参数也可以放在栈中返回地址的下面。

为一次过程调用保存的整个参数集合,包括返回地址,称作栈帧stack frame。

8.可重入过程
程序代码的一个副本可以在同一个时间内被多个用户共享使用。

可重入的两个重要特征:
#程序代码不能修改自身
#每一个用户的局部数据都要单独保存

在共享系统中,可从如可以更加有效地使用内存:程序代码的一个副本保留在内存中,有多个应用程序可以调用它。
过程的每一个执行实例称作激活,将执行永久部分的代码,但拥有自己的局部变量和参数的副本。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值