操作系统精髓与设计原理学习笔记

操作系统精髓与设计原理学习笔记(一)

  • 计算机系统概述
    • 1.1基本构成
    • 1.2处理器寄存器
      • 1.2.1用户可见寄存器
      • 1.2.2控制和状态寄存器
    • 1.3指令的执行
      • 1.3.1取指令和执行指令
      • 1.3.2 I/O函数
    • 1.4中断
      • 1.4.1中断与指令周期
      • 1.4.2中断处理
      • 1.4.3多个中断
      • 1.4.4多道程序设计
    • 1.5存储器的层次结构

计算机系统概述

1.1基本构成

计算机基本构成:处理器、存储器、输入/输出部件
处理器:逻辑处理单元,控制计算机的操作,执行数据处理功能,(CPU)。
内存:存储数据和程序。特点是易失性,关机后,存储器的内容就会丢失,通常被称为实存储器或主存储器。
输入/输出模块:在计算机和外部环境(外部设备(存储器设备:硬盘、通信设备和终端))之间移动数据。
系统总线:为处理器、内存和输入/输出模块间提供通信的设施。
寄存器简介:
CPU使用的寄存器
存储器地址寄存器(MAR):确定下一次读写的存储器地址。
存储器缓冲寄存器(MBR)存放要写入存储器的数据或从存储器读取的数据。
输入/输出寄存器:
输入/输出地址寄存器(I/O AR)确定一个特定的输入/输出设备。
输入/输出缓冲寄存器(I/O BR)用于在输入/输出模块和处理器间交换数据。

1.2处理器寄存器

处理器包含一组寄存器,它们提供一定的存储能力,比内存访问速度快,但比内存的容量小。
用户可见寄存器:优先使用这些寄存器,可以减少使用机器语言或汇编语言的程序员对内存的访问次数。对高级语言而言,由优化编译器负责决定哪些变量应该分配给寄存器,哪些变量应该分配给内存。一些高级语言(如C语言)允许程序员建议编译器把哪些变量保存在寄存器中。
控制和状态寄存器:用以控制处理器的操作,且主要被具有特权的操作系统例程使用,以控制程序的执行。

1.2.1用户可见寄存器

用户可见寄存器可以通过由处理器执行的机器语言来引用。
数据寄存器:可以被执行数据操作的任何机器指令使用。
地址寄存器:存放数据和指令的内存地址,或者存放用于计算完整地址或有效地址的部分地址。
变址寄存器:变址寻址是一种最常用的寻址方式,它通过给一个基值加一个索引来获得有效地址。
段指针:对于分段寻址方式,存储器被划分为段,这些段由长度不等的字块组成,段由若干长度的字组成。一个存储器引用由一个特定的段号和段内的偏移量组成,采用这种方式,需要由一个寄存器保存段的基地址(起始地址).。
栈指针:如果对用户可见的栈进行寻址,则应该有一个专门的寄存器指向栈顶。这样就可以使用不包含地址域的指令,如入栈(push)和出栈(pop)。

1.2.2控制和状态寄存器

有多种处理器的寄存器用于控制处理器的操作。
程序计数器(PC):包含将取指令的地址。
指令寄存器(IR):包含最近取的指令的内容。
程序状态字(PSW):包含条件码与状态信息,如中断允许/禁止位和内核/用户态位
条件码(标记):是处理器硬件为操作结果设置的位。

1.3指令的执行

处理器执行的程序是由一组保存在存储器中的指令组成的。
指令处理的两个步骤:
1.处理器从存储器中一次读(取)一条指令。(取指阶段)
2.执行读取的指令。(执行阶段)
指令周期:
一个指令需要的处理时间成为一个指令周期。

1.3.1取指令和执行指令

在每个指令周期开始时,处理器从存储器中取一条指令。程序计数器(PC)保存下一次要取的指令地址(即位于下一个存储器地址的指令)。
取得的指令被放置在处理器的一个寄存器中,这个寄存器称作指令寄存器(IR)
指令操作:
处理器-存储器:数据可以从处理器传送到存储器,或者从存储器传送到处理器。
处理器-I/O:通过处理器和I/O模块间的数据传送,数据可以输出到外部设备,或者从外部设备输入数据。
数据处理:处理器可以执行很多与数据相关的算数操作或逻辑操作。
控制:某些指令可以改变执行顺序。改变取指地址。
指令的执行可能涉及这些行为的组合。
指令格式:由操作码与存储器地址构成。

1.3.2 I/O函数

I/O模块(例如磁盘控制器)可以直接与处理器交换数据。处理器可以通过指定存储单元的地址来启动对存储器的读和写一样,处理器也可以从I/O模块中读取数据或向I/O模块中写数据。
在某些情况下,允许I/O模块直接与内存发生数据交换,以减轻在完成I/O任务过程中的处理器负担。此时,处理器允许I/O模块具有从存储器中读或往存储器中写的特权,这样I/O模块与存储器之间的数据传送无需通过处理器完成。在这类传送过程中,I/O模块对存储器发出读命令或写命令,从而免去了处理器负责数据交换的任务。这个操作称为直接内存存取。

1.4中断

事实上所有计算机都提供了允许其他模块(I/O、存储器)中断处理器正常处理过程的机制。
中断分类:
程序中断:在某些条件下由指令执行的结果产生,例如算数溢出、除数为0、试图执行一条非法的机器指令,以及访问到用户不允许的存储器位置。
时钟中断:由处理器内部的计时器产生,允许操作系统以一定的规律执行函数。
I/O中断:由I/O控制器产生,用于发信号通知一个操作的正常完成或各种错误条件。
硬件故障中断:由诸如掉电或存储器奇偶错误之类的故障产生。

1.4.1中断与指令周期

中断的作用:例如在IO程序执行准备的过程中,可以继续执行用户程序,当用户程序接收到IO操作准备完成的中断信号后。此时中断执行IO命令,多以中断不一定是在执行IO指令的时候。

1.4.2中断处理

中断的过程中,处理器会将PSW和PC压入控制栈,根据中断,处理器加载新的PC值,并保存剩余的处理器状态信息,然后处理中断。完成后,恢复处理状态信息,并恢复老PSW和PC值。
处理过程:
1. 设备给处理器发出一个中断信号。
2. 处理器在响应中断前结束当前执行的指令。
3. 处理器对中断进行测定,确定存在未响应的中断,并给提交中断的设备发送确认信号,确认信号允许该设备取消它的中断信号。
4. 处理器需要把控制权转移到中断程序中去做准备。(需要保存当前的信息)
5. 处理器把响应此中断的中断处理程序入口的地址装入程序计数器中。
6. 中断处理程序完成后,之前保存的信息还原。
7. 继续执行用户程序。

1.4.3多个中断

处理多个中断有两种方法:
1. 当处理一个中断时,禁止再发生中断。禁止中断的意思是处理器将对任何新的中断请求信号不予理睬。如果在这期间发生了中断,通常中断保持挂起,当处理器再次允许中断时,再由处理器检查,若存在新的中断,则运行中断。多个中断也需要按照顺序执行。
该方法的缺陷:
没有考虑定义中断优先级,和时间限制的要求。
2. 定义中断优先级,允许高优先级的中断打断低优先级的中断处理程序的运行

1.4.4多道程序设计

如在处理器等待该用户程序的实践过程,此时处理器是空闲的,造成了浪费。
假设处理器执行两道程序。一道程序从存储器中毒数据并放入外部设备中,另一道是包括大量计算的应用程序。处理器开始执行输出程序,给外部设备发送一个写命令,接着开始执行其他应用程序。当处理器处理很多程序时,执行顺序取决于他们的相对优先级以及它们是否正在等待I/O。

1.5存储器的层次结构

为了存储器达到一个容量、读写速度、价格上的折中,通常使用组合型的存储器。
高速存储器到低速存储器特点:
1. 每一个位的价格递减
2. 容量递增
3. 存取时间递增
4. 处理器访问存储器的频率递减
若数据存储在二级存储器中,则先将二级存储器数据存放在一级存储器中,处理器在从一级存储器中获得数据。
4成立的条件是,当处理器执行一个循环时,处理器只需重复访问一个指令集合,因此对其它级别的处理器访问频率会递减。
此原理可以应用于多级存储器组织结构中。最快、最小和最贵的存储器类型由位于处理器内部的寄存器组成。
内存:
向下跳过两级存储器层次就到了内存层次,内存是计算机中主要的内部存储器系统。内存中的每个单元位置都有一个唯一的地址对应,而且大多数机器指令会访问一个或多个内存地址。内存通常是高速的,容量较小的高速缓存的扩展。高速缓存通常对程序员不可见,或者更确切的说,是对处理器不可见。高速缓存用于在内存和处理器的寄存器之间分段移动数据,以提高数据访问的性能。

你可能感兴趣的:(操作系统)