操作系统原理——第一章 计算机系统概述(1)

操作系统是什么?

操作系统是利用一个利用一个或多个处理器的硬件资源,为系统用户提供一组服务,它还代表用户管理辅助存储器和输入/输出(I/O)设备

1.1 基本构成

计算机由处理器、存储器和输入/输出部件组成,每类部件都有一个或多个模块,这些部件以某种方式互联,以实现计算机执行程序的主要功能。
计算机有4个主要的结构化部件:

  • 处理器
  • 内存
  • 输入/输出模块(I/O)
  • 系统总线

处理器(Processor)

控制计算机的操作,执行数据处理功能。只有一个处理器时,它通常指中央处理器(CPU)

內存(Main Memory)

  • 存储数据和程序
  • 此类存储器通常时易失性的,即当计算机关机或意外断电时,内存的内容会丢失

相对于此的是磁盘存储器,当计算机关机时,它的内容不会丢失

  • 通常也称为实存储器( real memory)或主存储器( primary memory )

I/O模块(I/O Modules)

在计算机和外部环境之间移动数据

外部环境有各种外部设备组成,包括辅助存储器设备(eg.硬盘)、通信设备和终端

系统总线(System Bus)

在处理器、内存和输入/输出模块间提供通信的设施
在这里插入图片描述
在这里插入图片描述
上图的俯视图中:
处理器的一种功能是与存储器交换数据,它通常使用两个内部寄存器:

  • 内存地址寄存器(MAR):用于确定下次读写的存储器地址
  • 内存缓冲寄存器(MBR):用于放入要写入存储器的数据或从存储器中读取的数据

同理

  • 输入/输出地址寄存器(I/O AR或I/O地址寄存器):用于确定一个特定的输入/输出设备
  • 输入/输出缓冲寄存器(I/O BR或I/O缓冲寄存器):用于输入/输出模块和处理器间交换数据

内存模块有一组单元组成,这些单元由顺序编号的地址定义,每个单元包含一个二进制数,它可解释为一个指令或数据。
输入/输出模块在外部设备处理器存储器之间传送数据。输入/输出模块包含内存缓冲区,用于临时保存数据,知道它们被发送出去。

1.2 微处理器的发展

微处理器可以在一个芯片上容纳一个处理器内核,它的发明为台式计算机和便携式计算机带来了一场硬件革命。

多核微处理器

  • 一个芯片上容纳多个处理器内核,共享执行单元
  • 每个核还可以配多个硬件线程——逻辑处理器

片上系统(SoC)

  • 片上系统不仅指CPU和高速缓存在一个芯片上,也包括系统中的其它硬件,如DSP、GPU、I/O设备(无线电和codecs)和内存
  • 满足便携式设备的需求

图形处理单元GPU

  • 利用单指令多数据技术,有效计算数据集
  • 可以用于普通数值处理,如游戏的物理仿真计算或大型电子表格的计算

数字信号处理器DSP

  • 对流信号如音频或视频进行处理
  • 用于嵌入式I/O设备,如调制解调器
  • 用于编码/解码语音和视频(多媒体数字信号编码器/解码器,codecs)
  • 提供对加密和安全技术的支持

1.3 指令的执行

处理器执行的程序是由一组保存在存储器中的指令组成,最简单的指令处理包括两步:

处理器从存储器中读取一条指令
处理器执行每条指令

单个指令所需要的处理成为一个指令周期,基本指令周期如下图
在这里插入图片描述

  • 每个指令开始时,处理器从存储器中取一条指令,在典型的处理器中,程序计数器PC保存下一次要取的指令地址
  • 取到的指令放在处理器中的指令寄存器IR中。指令中包含确定处理器将要执行的操作的位,处理器解释指令并执行对应的操作。这些动作大体可以分为4类

处理器-存储器:数据可以从处理器传送到存储器,或从存储器传送到处理器
处理器-I/O:通过处理器和I/O模块间的数据传送,数据可以输出到外部设备,或从外部设备向处理器输入数据
数据处理:处理器可以执行很多与数据相关的算术操作或逻辑操作
控制:某些指令可以改变执行顺序

在这里插入图片描述

1.4 中断

中断是一种机制,即允许其它模块(I/O、存储器)在处理器正常处理过程中打断其工作。

中断分类

中断分类产生原因
程序中断在某种条件下由指令执行的结果产生
时钟中断有处理器内部的计时器产生,允许操作系统按一定的规律执行函数
I/O中断由I/O控制器产生,用于发信号通知一个操作系统的正常完成或各种错误条件
硬件失效中断有诸如掉电或存储器奇偶校验错之类的故障产生

中断是提高处理器效率的一种手段

  • 利用中断功能,处理器可以在I/O操作的执行过程中执行其他指令。
  • 多数I/O设备处理速度都要远慢于处理器,未引入中断机制前,处理器必须暂停等待该设备,严重浪费处理器时间

中断与指令周期

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

中断处理

处理机制

在这里插入图片描述

硬件
在CPU初始化时设置中断使能标志

  • 依据内部或外部事件设置中断标志
  • 依据中断向量调用相应中断服务例程

软件

  • 现场保存(CPU+编译器)
  • 中断服务处理(服务例程)
  • 清除中断标记(服务例程)
  • 现场恢复(CPU+编译器)

简单处理过程

在这里插入图片描述

因中断导致的存储器和寄存器变化

在这里插入图片描述

多个断点

正在处理一个中断时,可以发生一个或多个中断。比如:一个程序正在从一条通信线上接收数据,同时要求打印结果。有两种方法:

  • 正在处理一个中断时,禁止再发生中断
  • 使用优先级策略

相应的,就产生了两种处理方式:

顺序中断处理

当正在处理一个中断时,禁止中断(对任何新的中断请求信号不予理睬,处理完这个再处理下一个)
在这里插入图片描述

缺点:没有考虑相对优先级和时间限制的要求

嵌套中断处理

定义中断优先级,允许高优先级的中断打断低优先级的中断处理程序的运行。

中断嵌套
硬件中断服务例程可被打断

  • 不同硬件中断源可能在硬件中断处理时出现
  • 硬件中断服务例程中需要临时禁止中断请求
  • 中断请求会保持到CPU做出响应

异常服务例程可被打断

  • 异常服务例程执行时可能出现硬件中断

异常服务例程可嵌套

  • 异常服务例程可能出现缺页

在这里插入图片描述

中断、异常和系统调用

系统调用(system call)应用程序主动向操作系统发出的服务请求
异常(exception)非法指令或者其他原因导致当前指令执行失败(如:内存出错)后的处理请求
中断(hardware interrupt)来自硬件设备的处理请求

系统调用

  • 操作系统提供服务的编程接口
  • 通常由高级语言编写(C或者C++)
  • 程序访问通常是通过高层次的API接口而不是直接进行系统调用
  • 三种最常用的应用程序编程接口(API)

Win32 API 用于 Windows
POSIX API 用于 POSIX-based systems (包括UNIX,LINUX,Mac OS X的所有版本)
Java API 用于JAVA虚拟机(JVM)

系统调用的实现

  • 每个系统调用对应一个系统调用号。

系统调用接口根据系统调用号来维护表的索引

  • 系统调用接口调用内核态中的系统调用功能实现,并返回系统调用的状态和结果。
  • 用户不需要知道系统调用的实现。

需要设置调用参数和获取返回结果
操作系统接口的细节大部分都隐藏在应用程序编程接口后, 通过运行程序支持的库来管理

函数调用与系统调用的不同处

系统调用

  • INT和IRET指令用于系统调用
  • 系统调用时,实现堆栈切换和特权级的转换

函数调用

  • CALL和RET指令用于常规调用
  • 常规调用时没有堆栈切换

中断、异常和系统调用比较

源头

  • 中断:外设
  • 异常:应用程序意想不到的行为
  • 系统调用:应用程序请求操作提供服务

响应方式

  • 中断:异步
  • 异常:同步
  • 系统调用:异步或同步

处理机制

  • 中断:持续,对用户应用程序是透明的
  • 异常:杀死或者重新执行意想不到的应用程序指令
  • 系统调用:等待和持续

参考教材

《操作系统——精髓与设计原理(第九版)》 [美] William Stallings 著 陈向群 陈渝 译 电子工业出版社

课堂笔记,如有错误之处,敬请指正!

下转 操作系统原理——第一章 计算机系统概述(2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T&King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值