网络工程师

网络工程师... 1

1.     操作系统原理... 3

1.1.           操作系统概论... 3

1.1.1.    操作系统的概念... 3

1.1.2.    操作系统的发展... 8

1.1.3.    操作系统的分类... 8

1.1.4.    操作系统结构... 15

1.2.           操作系统运行机制... 17

1.2.1.    中央处理器CPU.. 17

1.2.2.    存储体系... 20

1.2.3.    中断与异常机制... 21

1.2.4.    系统调用... 27

1.2.5.    I/0技术... 29

1.2.6.    时钟... 30

1.3.           进程线程模型... 31

1.3.1.    多道程序设计模型... 31

1.3.2.    进程模型... 33

1.3.3.    线程模型... 43

1.3.4.    进程(线程)调度... 48

1.4.           并发与同步... 53

1.4.1.    进程(线程)间相互作用... 53

1.4.2.    进程互斥... 55

1.4.3.    信号量... 60

1.4.4.    经典的进程同步问题... 61

1.4.5.    管程... 61

1.4.6.    进程通信... 63

1.5.           内存管理... 66

1.5.1.    基本概念... 66

1.5.2.    分区存储管理方案... 71

1.5.3.    覆盖技术与交换技术... 76

1.5.4.    页式存储管理方案... 78

1.5.5.    虚拟存储技术与虚拟页式存储管理方案的实现... 80

1.6.           文件管理... 90

1.6.1.    概述... 90

1.6.2.    文件的结构... 95

1.6.3.    文件目录... 102

1.6.4.    文件系统的实现... 107

1.6.5.    文件的保护和安全... 115

1.6.6.    文件系统的性能... 119

1.6.7.    Windows的FAT文件系统和UNIX文件系统... 122

1.7.           I/O管理... 124

1.7.1.    设备与设备分类... 124

1.7.2.    I/O硬件组成... 126

1.7.3.    I/O软件的特点及结构... 130

1.7.4.    典型的I/O技术... 134

1.7.5.    I/O性能问题及解决方案小结... 137

1.8.           死锁... 137

1.8.1.    死锁的基本概念... 137

1.8.2.    死锁预防... 140

1.8.3.    死锁避免... 143

1.8.4.    死锁检测与解除... 145

1.8.5.    资源分配图... 147

 

 

 

四级上机考试环境:

      windows7

      单选题 60题 ,60分;

      多选题 20题,40分;

考核要点:

       网络系统规化与设计的基础知识;

       中小型网络的系统组建;

       设备配置调试;

       网络系统现场维护与管理的基本技能;

 

考试时间:

       90分钟

分数及课程:

       总分100分,由指定的两门专业基础课程组成;

 

要求:

      两门课程分别达到30分及以上;

  1. 操作系统原理

    1. 操作系统概论

      1. 操作系统的概念

计算机系统

计算机系统介绍

按用户的要求接收和存储信息,自动进行数据处理并输出结果信息。

计算机系统资源的占用

任何一个程序  在执行前,先要得到  计算机系统的  内存空间后 才能被装入内存,程序的执行要依靠中央处理器完成,

并且在执行过程中,许哟啊调用 公共服务子程序 和共享文件,使用各种计算机外部设备。

控制和协调计算机资源

识别用户要求

操作系统的定义

操作系统定义

计算机系统  中的 一个系统软件,是 一些 程序模块的集合。

这些程序 模块 能有效地 组织 和管理 计算机系统中的硬件和软件资源,向用户 提供各种服务功能。

操作系统任务

组织和管理计算机系统中的硬件和软件资源

有效

尽可能提高中央处理器的利用率,尽可能少地空转。

资源调度策略

合理

向用户提供各种服务功能

向程序开发设计人员提供高效的程序设计接口

向用户提供接口,使得用户能够灵活,方便,高效地使用计算机

操作系统的特征

并发性

宏观上

用户程序与用户程序之间并发执行;

用户程序与操作系统程序之间并发执行。

微观上

在单处理器的环境下,同时运行着的程序 是交替在中央处理器运行的 。

多处理器系统

宏观与微观上,即在处理器一级上,程序也是并发 的。

分布式系统

分布式系统中,多个计算机的并存,使得程序的并发 特性得到了更充分的体现。

共享性

共享资源

中央处理器

内存储器

外存储器

外部设备

共享形式

互斥共享

有些资源在一段特定的时间内,只能由一个用户程序使用。 通常称为 临界资源。

同时共享

这类资源在同一段时间内,可以被多个程序同时访问。  微观上,这些资源的访问还是交替的。  如硬盘。

随机性

操作系统 不能对 所运行的程序的行为 以及硬件设备的情况 作出 任何事先的假定,操作系统正处于什么样的状态之中是无法确切知道的。

研究操作系统的观点

软件的观点

操作系统是一种大型软件系统,是多种功能程序的集合。

外在特性

操作系统的外部表现形式,即它的操作命令定义集  和 它的界面; 完全确定了操作系统这个软件的使用方式。

内在特性

指操作系统 具有 一般应用软件 所不具备的特殊结构。

资源管理的观点

计算机系统的资源: CPU,存储器,外部设备,信息。

操作系统负责记录资源使用情况,并提供一些机制 去协调程序间 的竞争  与 同步, 提供机制 对资源进行合理使用,施加保护,以及采取虚拟技术来 扩充资源等。

进程的观点

操作系统 是 由多个 可以同时 独立运行的程序  和一个对这些程序进行协调的 核心所组成。

每个进程都完成某一特定任务,进程可以分为用户进程和系统进程两大类,操作系统控制和协调这些进程的运行。

虚拟器的观点

将操作系统的功能分成 若干个层次,每一层次完成特定的 功能,从而构成一个虚及其,并为上一层提供支持,构成它的运行环境。

服务提供者观点

被看作是服务提供者。   为用户使用便利,该服务提供者提供了一组 功能强大,方便,易用的广义指令(称为系统调用)。

操作系统的功能

进程管理

进程控制

进程同步

进程间通信

调度(处理器调度)

进程调度

线程调度

作业调度

存储管理

内存的分配与回收

内存保护

内存扩充

文件管理

文件存储空间的管理

目录管理

文件系统的安全性

设备管理

外部设备的分配

外设的启动

外设故障处理

用户接口

  1. 操作系统的发展

手工操作

监控程序(早期批处理)

多道批处理

分时系统

UNIX通用操作系统

个人计算机操作系统

Android操作系统

  1. 操作系统的分类

批处理操作系统

基本工作方式

用户将作业交给系统管理员,系统管理员受到一定数量作业后,组成一批作业,输入到计算机处理。

特点与分类

特点是 成批处理。

可 分为  简单批处理系统  和 多道批处理系统 。

设计思想

早期,简单批处理系统 被称为 监控系统。 监控程序  自动控制  批作业的执行。

作业控制说明书

作业的 运行步骤  由作业控制说明书 来传递给监控程序,通常放在被处理作业的前面。

一般指令和特权指令

特权指令 如 输入输出指令,停机指令等,只有 监控程序才能够执行;

用户只能执行一般指令。  需要执行特权指令时,处理器 会通过 特殊的机制将控制权 交给监控程序。

系统调用的过程

特殊机制,通常是指  中断 或者异常处理,把控制流程转移到监控程序内的一些特定位置 。

然后,由监控程序执行被请求的功能代码。

处理结束后,监控程序回复系统调用之前的现场。

SPOOLing技术

Simultaneous Peripheral Operating On-Line , 同时的外部设备连机操作,  其基本思想是:  用磁盘设备 作为主机的直接输入/输出设备,主机直接从磁盘上选取作业运行,作业的执行结果也存在磁盘上。

通道  负责将用户作业  从卡片机上动态写入磁盘。

分时系统

基本工作方式

分时系统中, 一台计算机主机连接了若干个终端,每个终端可由一个用户使用。

系统接收用户的命令之后,采用时间片 轮转的方式处理服务请求。

设计思想

将CPU的时间 划分成 若干个小片段,恒威时间片。  操作系统以时间片 为单位,轮流为每个终端用户服务。

特点

多路性

交互性

独占性

及时性

主要目标

追求的目标是 及时响应用户输入的交互命令。  通常包 用户从终端 发出命令  到 系统给予回答  所经历的时间定义为响应时间。

分时与批处理

处理原则是:  分时优先,批处理在后。

前台

系统的分时运行状态称为 前台。

后台

系统的批处理运行状态 称为 后台。

实时操作系统

基本概念

计算机 能在规定的时间内,及时响应外部时间的请求,同时完成对该事件的处理,并能够控制所有实时设备  和  实时任务 协调一致地工作的 操作系统。

主要目标

主要目标是:   在严格的时间范围内,对外部请求作出反应,系统具有高度可靠性。

分类

硬实时系统

对关键的 外部时间 的响应 和 处理时间有者极 严格的要求。  时间精确度通常在 微妙以下。

软实时系统

对事件的响应和 处理时间  有一定的时间范围要求。

能力

实时时钟管理

过载防护

出现过载现象是,能够迅速分析判断并找出 最重要的实时任务,然后通过抛弃或者 延后次要任务以保证最重要任务成功运行。

高可靠性

嵌入式操作系统

基本概念

运行在 嵌入式芯片环境中的,对整个芯片 以及相关资源进行统一协调,调度,指挥和控制的系统软件。

特点

易于连接,低成本等,定制化

开发环境

嵌入式操作系统  通常配有 对应的嵌入式操作系统开发环境。   在开发环境中,提供了 源码级 可配置的 系统模块设计,多种同步源于,可选择的调度算法,可选择的分配策略。

嵌入式操作系统与嵌入式系统

嵌入式操作系统 是 嵌入式系统的控制中心;

嵌入式系统 是嵌入式操作系统  的 设备环境与应用环境的结合。

个人计算机操作系统

基本概念

一种 单用户,多任务的操作系统。

主要特点

在某一时间内为单个用户服务;

采用图形界面人机交互方式;

使用简单,方便;

费用便宜;

网络操作系统

基本概念

为计算机网络配置的操作系统;

它是  基于计算机网络的,在各种计算机操作系统之上,按网络体系结构协议标准 设计开发的软件,包括网络管理,通信,安全,资源共享和各种网络应用。

目标和功能

目标是:  通信 以及 资源共享;

功能是:  信息交换;

计算机网络的模式

集中式模式

运算处理在主计算机发生,终端仅作为 I/O设备使用。

分布式模式

每台计算机都有运算处理能力,堕胎计算机通过网络交换数据 并 共享资源和服务。

不仅能共享资源,服务,还能共享运算处理能力。

分布式操作系统

基本概念

分布式系统将大量的计算机  通过网络连结在一起,可以获得极高的运算能力  及 广范的数据共享。   分布式操作系统为 为分布式系统提供配置。

特征

统一的操作系统

资源的深度共享

透明性

自治性

功能

把系统中 所有计算机构成 一个完整的,功能更加强大的 计算机系统。

优点

分布式

可靠性

集群

分布式系统的一种。  通常由一群 处理器密集构成,集群操作系统专门服务于这样的集群。

集权操作系统的指挥下,可以用低成本的微型计算机和以太网设备产品,构造出性能相当于超级计算机性能的集群。

智能卡操作系统

智能卡

将一个集成电路芯片 镶嵌于塑料基片中,封装成卡的形式,其外形 于覆盖磁条的磁卡相似。

基本概念

又称 片内操作系统(Chip Operating System,COS),通常智能卡的存储容量 为若干千字节KB。

指令标准及类型

指令类型 大致可分为:  数据管理类,通信控制类 和安全控制类。

基本功能

资源管理

通信管理

安全管理

应用管理

处理过程

智能卡进行具体处理时,读写器与智能卡之间通过 命令-响应对  方式进行通信和控制。

即  读写器发出操作命令,智能卡接收命令,操作系统对命令加以解释,完成命令的解密与校验。  然后调用相应程序来进行数据处理,产生应答信息,加密后送给读写器。

  1. 操作系统结构

整体式结构

基本概念

首先确定操作系统的总体功能, 然后将总体功能分解为若干个子功能,实现每个子宫内的程序称为模块。   依次分解为较小的模块。

主要优点

结构紧密, 接口简单直接,系统效率较高。

缺点

模块间转接随便,独立性差;

数据独立性差;

模块组合结构常以大型表格为中心,保证数据完整性,往往采用全局中断的方法, 限制了系统的并发性;

层次结构

基本概念

包所有功能模块,按功能流图的调用次序,分别将这些模块排列成若干层,各层之间只能是单向依赖 或 单向调用关系。

优点

增加了可读性;  可适应性 和 可靠性;

分层设计原则

1.把与机器特点紧密相关的软件,如中断处理,输入输出管理等放在 紧靠硬件的最底层。

2. 通常把 多种操作方式 共同要 使用的基本部分放在内层,  而把随 操作方式而改变的部分 放在外层。

微内核(客户机/服务器)结构

基本概念

采用客户机/服务器结构的操作系统  适宜于 应用在 网络环境下 分布式处理的计算环境中,称为 微内核结构。

典型操作系统

Mach 操作系统;

Windows NT 的早期版本。

运行在核心态的内核

运行在用户态的进程层

优点

可靠

灵活

适宜于分布式环境

缺点

效率较低

  1. 操作系统运行机制

    1. 中央处理器CPU

CPU的构成与基本工作方式

CPU的构成

运算器

实现任何指令中的算术 和 逻辑运算,时计算机计算的核心;

控制器

负责控制程序运行的流程,包括取指令,维护CPU状态,CPU于内存的交互等

寄存器

指令在CPU内部做处理的过程中暂存数据,地址  以及 信息的存储设备, 在计算机的存储系统中, 它具有最快的访问速度。

高速缓存

一般由  控制器中的  内存管理单元管理,它利用 程序局部性原理使得  高速指令处理 和低速内存访问 得以 匹配, 大大地提高了 CPU 的效率。

处理器中的寄存器

用户可见寄存器

对于高级语言来说, 编译器 通过一定的算法分配 并使用这些寄存器,以最大限度地减少程序运行时访问主存储器的次数。

数据寄存器

又 称 通用寄存器, 主要用于各种算术逻辑指令 和访存指令。

地址寄存器

用于存储数据 及 指令的物理地址,线性地址 或者有效地址,用于某种特定方式的寻址

条件码寄存器

保存CPU 操作结果的各种标记位,这些标记 在条件分支指令中被测试, 以控制程序指令的流向。

控制和状态寄存器

控制处理器的操作,一般 由 具有特权的操作系统代码使用, 以控制其他程序的执行。

程序计数器

记录了将要取出的指令的地址。

指令寄存器

包含了最近取出的指令。

程序状态字

记录了处理器的运行模式信息等。

指令执行的基本过程

处理器从存储器读取一条指令

取指令 取到的指令 被放在处理器的指令寄存器中,指令中包含了处理器 将要采取的动作的位。

执行这条指令

指令大致分为五类:

1. 访问存储器指令,负责处理器和存储器之间的数据传送;

2.I/O指令,负责处理器和I/O模块之间的数据传送和命令发送;

3.算术逻辑指令,用以执行有关数据的算术和逻辑操作;

4.控制转移指令,可以指定一个新的指令的执行起点;

5.处理器控制指令,用于修改处理器状态,改变处理器工作方式等。

特权指令和非特权指令

在 多用户 或  多任务  的  多道程序设计 环境中,它的指令必须分为两部分: 特权指令 和非特权指令;

处理器的状态

管态和目态

CPU状态的转换

目态到管态的转换

通过 中断 或 异常;

管态到目态的转换

通过设置 PSW指令(修改程序状态字);

限制用户程序执行特权指令

当用户程序 占用CPU时, 应让CPU 在目态下工作。  若此刻取到了特权指令,CPU将拒绝执行该指令,并形成 一个非法操作事件。   中断机制识别到该事件后,转交给操作系统处理。

程序状态字PSW

CPU的工作状态代码

指明管态还是目态

条件码

反应指令执行后的结果特征

中断屏蔽码

指出是否允许中断

  1. 存储体系

存储器的层次结构

容量,速度和成本的匹配

通过访问频率来协调。

存储访问局部性原理

现代程序设计技术注重 程序代码的复用, 程序中有很多循环 和子循环调用,一旦进入这样的程序段,就会重复存取相同的指令集合。

在较短的时间内,能比较稳定地保持在一个存储器的局部区域中,处理器主要和存储器的这个局部打交道。

存储保护

界地址寄存器

在CPU中设置一对 界限寄存器  来存放 该用户作业 在主存中 的上限和下限地址。

存储键

为了存储保护的目的,每个存储快都有一个与其相关的  由  二进位组成的存储保护键,附加在每个存储块上。

当一个用户被允许进入主存时,操作系统分配给它 一个唯一的,不与其他作业相同的存储键号;  并将分配给该作业的  各存储块的存储键,也设置成同样的键号。

  1. 中断与异常机制

中断与异常的概念

中断与异常

中断

中断的概念

指CPU 对 系统中  或  系统外 发生的异步事件的响应。

异步事件 是指 无一定时序关系的随机发生的事件,是 所有要打断处理器的 正常工作次序,并要求取处理 某一事件的 一种常用手段

中断中的一些基本概念

引起中断事件  称为中断事件 或 中断源;

中断源 向 处理器发出的请求信号  称为中断请求;

处理中断事件的程序 称为中断处理程序;

发生中断时 正在执行的程序 的暂停点 叫 中断断点;

处理器暂停当前操作,转而处理中断的过程 称为 中断响应;

中断处理结束之后 恢复原来执行的程序  称为 中断返回;

一个计算机系统  提供的中断源 的有序集合 称为中断字;

中断处理程序入口地址映射表,称为中断像量表;

表中的每一项 称为 一个中断向量,主要由程序状态字 和 指令计数器的值  组成;

中断的作用

中断技术 解决了 主机和外设并行工作的问题,消除了  因外设 的慢速 而使得主机等待的现象。

从用户的角度看中断

即 正常执行的程序被打断,当完成中断处理后  在恢复执行。

异常

中断 由外部事件引发,而异常  则是 由正在执行的指令 引发的。

中断与异常的分类

典型的中断

时钟中断

由处理器内部的计时器产生,允许 操作系统以一定规律执行函数;

输入输出(I/O)中断

由 I/O控制器发生,用于通知一个I/O操作的 正常完成 或者 发生的错误。

控制台中断

硬件故障中断

由掉电,存储器校验错 等硬件故障引起。

典型的异常

程序性中断

在某些条件下,由指令执行结果产生。  如: 被零除,非法指令等;

访管指令异常

中断系统

中断基本概念

中断系统  是  硬件和软件相互配合,相互渗透 而使得 计算机系统得以充分发挥能力的计算模式;

硬件中断装置 负责 捕获中断源发出的中断请求,并以一定方式响应中断源;

中断请求的接收

通过在 计算机硬件的  中断逻辑线路  和中断寄存器实现的:   中断逻辑线路 用于接收中断信号, 并把受到的中断信号 寄存在 线路中的 硬件触发器中。

中断响应

中断响应机制

处理器的控制部件中  设置有 中断信号扫描结构, 它在 每条指令执行周期内的最后时刻  扫描中断寄存器,查看是否有中断信号到来。  若有中断到来,处理器接收 由 硬件 中断装置发来的  中断向量代号;

处理器准备工作

保存中断点的恒旭执行上下文环境(包括 程序状态字,程序计数器,和一些寄存器的值)。  它们一般保存在一个专门的系统堆栈中。

查询中断向量

处理器根据中断向量代号, 查询中断向量表,获得 与 该中断源 相联系的中断处理程序的入口地址,并将PC置成该地址。

中断处理

处理器的控制权转移到中断处理程序后, 中断处理程序开始工作。  中断处理程序结束工作之后, 处理器会检测到一条中断返回指令;  执行中断返回指令时, 处理器把被中断的程序的上下文环境从系统堆栈中恢复。

几种典型中断的处理

I/O中断

一般由 I/O设备的控制器或者通道发出。

I/O操作正常结束

如果要继续进行I/O操作,则需要在准备好以后重新启动I/O。   若 请求I/O的程序 正处于等待 I/O的状态,则应该将其唤醒。

I/O异常

常常需要重新执行失败的I/O操作, 不过重试的次数往往有一个上限。 当重试次数过大,系统将判定硬件故障,并通知管理员。

时钟中断

时钟中断处理程序  通常 要作很多 的 与系统运转,管理和维护相关的工作。

维护软件时钟

系统由若干个软件时钟,控制着定时任务 以及 处理器时间配额。

处理器调度

维护当前进程的时间片软件时钟,并在时间片到时后 运行调度程序 选择下一个被调度的进程 。

控制系统定时任务

通过软件时钟  和调度程序  定时激活一些系统任务,例如检测死锁,进行系统记账等;

实时处理

例如产生系统  心跳, 激活系统看门狗等。

硬件故障中断

一般由硬件的问题引起,排除此类故障 通常需要认为干预。

程序性中断

多数是  程序指令出错,指令越权  或  指令寻址越界  引发的系统系统保护。

只能由操作系统完成的程序性中断

如 访问合法的, 但是不在内存的虚地址 引发的缺页中断等;

可以由程序自己完成的程序性中断

如:断点中断,单步跟踪等。

系统服务请求(访管中断)

一般 由处理器 提供的专用指令(又称 访管指令)来激发。

中断优先级与中断屏蔽

多级中断与中断优先级

多级中断

从硬件上看, 多级中断系统表现为:  又多跟中断请求线  从不同设备 连接到中断逻辑线路上。 不同中断请求线上的中断信号,表示它们又不同的中断级别。

多级中断的作用

对各类中断信号依据其紧急程度和重要性划分级别。

解决多个重要程度相当的多个中断信号同时到达,如何处理的问题。一般可以采用: 固定优先数,轮转法。

中断屏蔽

主机是否允许响应 或 禁止某些中断,由 PWS 的中断屏蔽位决定。

对于被屏蔽的中断信号,通常仍然保存在中断寄存器中,有些可以在以后继续响应,而有些则被简单丢弃。

机器故障不可屏蔽。

  1. 系统调用

为了从操作系统获得服务,用户程序必须使用系统调用。

访管指令把用户态切换成内核态,并启用操作系统。

系统调用简介

系统调用  是用户在程序中调用操作系统 所提供的一些子功能,通常由特殊的机器指令实现。

系统调用与一般过程调用的区别

本质上 是应用程序  请求操作系统和信  完成 某一特定功能的一种过程调用。

运行在不同的系统状态

状态的转换

返回问题

一般过程调用在被调用过程执行完后,将返回调用过程继续执行。

系统调用则会在被调用过程执行完后,对所有要求运行的进程进行优先级分析。

嵌套调用

对深度有一定的限制。

系统调用的分类

进程控制类系统调用

如创建 和终止进程的系统调用,获得和设置进程属性的系统调用等 。

文件操作类系统调用

如拆个年间文件,打开文件等;

进程通信类系统调用

设备管理类系统调用

用来请求 和释放 有关设备, 以及启动设备操作等 。

信息维护类系统调用

可用来了解系统当前的用户数,操作系统版本等信息。

广义指令和机器指令

在一些计算机系统中, 把系统调用命令 称为 广义指令。 但是广义指令 和机器指令在性质上是不同的。

机器指令时由硬件线路直接实现的。

而广义指令是由操作系统所提供的一个或多个子程序模块,是软件实现的。

系统调用的处理过程

陷入(TRAP) (异常处理机构)

系统调用引起处理及中断的指令称为 陷入或 异常指令(或称 访管指令)。

操作系统中, 每个系统调用都对应一个事先给定的功能号,如0,1,2,3,等。

系统调用的过程

系统设计人员  必须实现各种  系统调用功能 的子程序  编造入口地址表,每个入口地址都 与相应的系统 程序名对应起来。

其余操作过程,与中断同理。

参数传递

访管(陷入)指令自带参数

通过有关通用寄存器来传递参数

在内存中开辟专用堆栈区来传递参数

  1. I/0技术

I/O结构

早期计算机系统中,外部设备的控制器 通过  I/O硬件结构 与中央处理器连接。

对设备控制器的操作 由 处理器直接发出的 I/O指令来实现。

通道

通道的概念

独立于CPU的, 专门负责数据I/O传输工作的处理单元。

它代替CPU对I/O操作进行控制,又称为 I/O处理机。

通道的工作原理

当处理器执行到  一条“启动外设”的指令时,就按指令中给定的参数启动指定的设备。

设备启动成功后,对该外部设备的控制权转移到通道,由通道控制该外部设备的有关操作。

该外设 与主存发生的信息传送,由通道控制。

外部设备工作结束后,产生一个I/O中断,操作系统进行分析后,就可以知道外设的具体工作情况。

优点

最大优点是  可以实现 CPU  与各种外设并行工作。

通过并行工作能力,操作系统可以让多个程序同时执行,并在同一时刻让各个程序分别使用计算机系统的不同资源。

通道技术的应用

一般用于大型机系统 和对I/O处理能力要求比较严格的系统中。   一般低档次的微机中没有通道。

DMA技术

通过系统总线 中的一个独立控制单元,即 DMA 控制器,自动地控制成块数据在内存 和I/O单元之间的传送。

缓冲技术

用在 外设 与其他硬件部件之间的  一种 数据暂存技术,利用存储器件在外设中设置了数据的一个存储区域,称为缓冲区。

缓冲技术有两种:

一种是外设与外设间通信的;

一种是外设和处理器间的。

  1. 时钟

时钟的工作

为系统发现陷入死循环的作业

实现各个作业按时间片轮转运行

输出时间信号给相关的实时控制设备

定时唤醒任务

记录时间间隔

记录时间

时钟的分类

硬件时钟

在电路中的晶体振荡器,每隔一定间隔产生固定的脉冲频率,时钟电路中的时钟寄存器依据时钟电路所产生的脉冲数,对时钟寄存器进行加1的工作。

软件时钟

利用内存单元模拟时钟寄存器,并采用一段程序来计算相应的脉冲数。

时钟的用途

绝对时钟

不受外界干扰,对运行的一种时钟。 作为整个计算机系统中的时间参考基准。

相对时钟

  1. 进程线程模型

    1. 多道程序设计模型

程序的顺序执行(单道程序设计)

程序是一个在时间上 按严格次序前后相继 的操作序列, 这写操作 是机器指令 或 高级语言编写的语句。

顺序性

封闭性

程序执行结果的确定性

程序执行结果的可再现性

多道程序系统中程序执行环境的变化

多道程序设计技术的引入

每个用户程序都需要一定的资源

系统中的各部分的工作方式不再是单纯串行的,而是并发执行的

多道程序设计环境的特点

多道程序设计,就是允许 多个程序同时进入内存并运行;

它是操作系统所采用的 最基本,最重要的技术,其根本目的是提高整个系统的效率。

衡量系统效率的尺度--系统吞吐量

吞吐量 是指 单位时间内  系统所处理作业(程序)的道数(数量)。

多道程序设计带来了资源竞争

特点

独立性

随机性

资源共享性

一般来说,多道环境下,执行程序的道数  总是多余计算机系统 中 CPU的个数。  单CPU系统更是如此。

程序的并发执行

并发执行,是指 两个 或 两个以上程序 再计算机系统中 同时处于 已开始执行  且 尚未结束的状态。

单CPU系统中,从微观上看,它们仍然是顺序执行的。

并发程序再执行期间具有相互制约的关系

多道程序的并发执行,总是伴随着资源的共享和竞争,这使得  本来毫无逻辑关系的程序之间 产生了相互制约的关系。

程序与计算不再一一对应

并发执行中,允许多个用户作业 调用一个共享程序段,从而形成 多个计算。

并发程序执行结果不可再现

并发程序执行结果与其执行的相对速度有段,是不确定的。

  1. 进程模型

进程的概念

进程与程序的联系和区别

联系

程序是构成进程的组成部分之一。  从静态的角度看, 进程是由 程序,数据 和进程控制块 三部分组成。

区别

程序是静态的,而进程是动态的。

进程是程序的执行过程, 具有生命中期,有诞生亦有消亡。

进程的特性

并发行

即可以通其他进程一道向前推进

动态性

进程动态产生,动态消亡;

进程的生命周期内,其状态动态变化。

独立性

交往性

异步x性

进程的状态及其状态转换

三状态进程模型

运行态

指 进程已获得CPU,并且再CPU上执行的状态。

单CPU系统中, 最多只有一个进程处于运行态。

就绪态

已经具备运行条件,但由于没有获得 CPU 而不能运行  所处的状态。

等待态

也称  阻塞态,或 封锁态。

指 进程 因等待某种事件发生,而暂时不能运行的状态。  引起等待的原因一旦消失,进程便转为 就绪态。

状态转换

就绪->运行

对于单处理机系统而言,进程调度程序 根据调度算法(如 优先级 或 时间片) 把处理机分配给某个就绪进程,建立该进程运行状态标记,并把 控制转入该进程的启动程序。

运行->就绪

该变化通常出现在 分时操作系统中。

正在运行的进程  由于规定的运行时间片用完,而使系统发出 超时中断请求,超时中断处理程序  把该进程的状态修改为就绪状态,保留进程现场信息,收回处理机并转入进程调度程序。

运行->等待

处于运行态的进程 能否继续运行,除了受时间限制,还受其他种种因素的影响。   如:  运行态的进程 需要等待文件的输入,控制便自动转入系统控制程序,通过设备管理程序进行文件输入。  输入过程中,这个进程由运行态变为等待态,然后控制转入进程调度程序。

等待->就绪

被阻塞的原因获得解除后,并不能立即投入运行,处理机满足不了进程的需要,将其状态由等待变为就绪。

五状态进程模型

运行态

处于此状态的进程的数目 小于等于处理机的数目 。  在没有其他进程可以执行时,通常会自动执行系统的空闲进程。

就绪态

就绪进程可以排成一个就绪队列,也可以按多个优先级来划分队列。

阻塞态

所有处于阻塞状态的进程 排成一个阻塞队列,也可以按等待事件的不同,分成多个子队列。

创建态

操作系统在创建状态  要进行的 工作包括,分配和建立进程控制块表项,建立资源表格并分配资源,加载程序并建立地址空间表等。

结束态

回收除进程控制块之外的其他资源,并让其他进程从进程控制块中手机有关信息。

主要状态转换

创建进程

创建进程的可能原因包括:

用户登陆,

操作系统创建以提供某项服务,

批处理作业等。

提交

完成一个新进程的创建过程,新进程进入就绪状态。  由于性能,内存,进程总数等原因,系统会限制并发进程总数。

调度运行

释放

运行到结束的转换 可分为 正常退出,异常退出。

异常退出指:   进程执行超时,内存不够,非法指令或地址访问,I/O操作失败,被其他进程所终止等原因而退出。

超时

由于 用完时间片  或 高优先级进程 就绪等原因 导致进程暂停运行。

事件等待

可能的原因包括: 申请系统服务或资源,通信,I/O操作

事件出现

七状态进程模型

虚拟地址

操作系统引入 虚拟存储管理技术后,需要进一步区分进程的地址空间状态,一些低优先级进程 可能等待较长事件,被对换至外存。

类型

创建

就绪

进程在内存且 可立即进入运行态

运行

阻塞

进程在内存 并等待某事件的出现。

就绪挂起

进程在外存,但只要进入内存,即可运行。

阻塞挂起

进程在外存,并等待某事件的出现。

结束

状态转换

挂起

把一个进程  从内存转到 外存

激活

把一个进程 从 外存转到 内存。

提交

完成一个新进程 的创建过程,新进程进入就绪态,或者就绪挂起态。

进程控制块

进程控制块的概念

利用Process Control Block,  PCB 来描述进程的基本情况 以及 进程的运行变化过程。

PCB 时进程存在的唯一标志。

PCB的内容

调度信息

包括  进程名,进程号,存储信息,优先级,当前状态,资源清单,家族关系,消息队列指针,进程队列指针  和 当前打开文件等。

现场信息

PCB 只记录可能 会被 其他进程改变的寄存器,如 程序状态字,时钟,界地址寄存器等。

进程的组成

PCB  时进程的 灵魂,进程控制块 保存由进程的地址信息,通过PCB 可以得到进程程序的存储位置,也可以找到整个进程。

程序和数据 时进程的躯体。

PCB组织

线性方式

将所有的PCB 部分状态组织在一个连续表中。 适用于进程数目不多的系统。

索引方式

对具有相同状态的进程,分别设置各自的PCB索引表,其 表目为  PCB 在 线性表中的地址。   构成  就绪索引表  和等待索引表。

此外,在内存固定单元 设置三个指针, 分别指示 就绪索引表  和等待索引表 的起始地址,以及 执行态PCB 在 线性表 中的地址。

链接方式

对于具有相同状态进程的PCB, 通过PCB 中的链接字  构成一个队列。

链接字 指出  本队列下一 PCB  在线性表 中的编号,编号为0 表示队尾。 队首 固定单元中相应的队列指针指示。

进程的队列

就绪队列

有些系统中,就绪队列可能由若干个。

等待队列

运行队列

单CPU系统中,整个系统只有一个运行队列。

实际上,一个运行队列  中只有一个进程。

进程控制

基本概念

进程控制的概念

对 进程在整个生命周期中 各种状态之间的转换进行有效的控制。

进程控制通过原语来实现。

原语的概念

由若干条指令组成,用来实现某个特定的操作。

通过 一段不可分割的 或 不可中断的程序  实现其功能。

源于的执行 必须时连续的,是操作系统 核心的一个组成部分,必须在管态下执行, 且常驻内存。

原语 和 系统调用的区别

原语  和 系统调用 都可以被进程所调用,两者的差别  在于原语具有不可中断性。

原语一般由系统进程调用;  而许多系统调用的功能都可用 目态下运行的系统进程完成。

进程控制原语

创建原语

功能

一个进程使用 创建原语 创建一个新的进程,前者称为 父进程,后者 称为 子进程。   整个系统可以形成 一个树形结构的进程家族。

操作过程

具体的操作过程是:

先 申请一 空闲PCB区域,将有关信息填入 PCB, 置该进程为就绪状态,最后把它插入就绪队列中。

导致进程创建的事件

包括:

系统初始化,

执行了正在运行的进程 所调用的 进程创建  系统调用

用户请求创建一个新进程,

一个批处理作业的初始化;

撤销原语

功能

撤销进程的实质 是撤销 PCB。

操作过程

找到要被撤销进程的PCB, 将它 从所在队列中消去,撤销属于该进程的 子孙进程,释放被撤销进程 所占用的全部资源,并消去 被撤销进程的 PCB。

阻塞原语

功能

某进程执行过程中,需要执行I/O操作, 则由 该进程调用阻塞原语 把进程从 运行态 转换为 阻塞态。

操作过程

首先中断CPU执行, 把 CPU的当前状态 保存在  PCB 的现场信息中, 把进程的当前状态  置为 等待状态,并把它插入到 该事件的等待队列中去。

唤醒原语

功能

一个进程因为等待事件的发生 而处于等待状态,当等待事件完成后, 就用唤醒原语将其转换为 就绪状态。

操作过程

在等待队列中找到该进程,置 进程的当前抓鬼你太 为 就绪状态, 然后将它  从等待队列中撤出, 并插入到就绪队列中排队,等待调度执行。

UNIX的fork()函数及使用

fork()函数创建子进程步骤

为子进程分配一个空闲的 进程描述符;

赋予子进程唯一标识 pid;

以依次一页的方式 复制 父进程用户地址空间;

获得子进程共享资源的指针,如打开的文件和当前工作目录等;

子进程就绪,加入调度队列;

对子进程返回标识符0;  向父进程返回子进程的pid;

父进程与子进程

相同点

子进程 得到与父进程用户地址空间相同的一份拷贝,包括文本,数据和bss段,堆 以及用户栈;

不同点

去呗在于 它们有不同的PID。

fork()函数执行的特点

被调用一次,返回两次: 一次在调用进程中,一次在新创建的子进程中。

父进程中,fork返回子进程的PID。

子进程中,fork 返回0;

  1. 线程模型

线程的引入

进程具有两个基本属性:

1.进程是一个可拥有资源的独立单位;

2.可以独立调度和分派的基本单位;

进程是一个资源拥有者,在进程的创建,撤销和切换中, 系统必须为之付出较大的时空开销。

为使更好地支持并发,将这两个属性分开,由操作系统分开进行处理。  在这种思想指导下,产生了线程。

线程的基本概念

线程是进程的一个实体,是CPU调度 和分派的基本单位。

线程只拥有在 运行中 必不可少的资源(如程序计数器,一组寄存器和栈)。  同一个进程中的多个线程之间可以并发执行。

线程的属性

每个线程由一个唯一的标识符和 一张线程描述表,它记录了线程执行的寄存器和栈等线程信息;

不同的线程可以执行相同的程序;

同一进程中的各个线程  共享该进程的内存地址空间。

线程是处理器的独立调度单位;

一个线程被创建后,便开始了它的生命周期。

引入线程的好处

创建线程和回收线程花费时间少

线程切换花费时间少

同一进程内的线程共享内存和文件,线程通信无须调用内核

线程能独立执行,更好发挥 处理器与外围设备的并行工作能力

线程与进程的比较

调度

同一进程的线程调度,不会引起进程切换,可以显著地提高系统的并发程度。

并发性

进程之间可以并发执行,在一个进程的多个线程之间也可以并发执行。

拥有资源

进程是拥有资源的独立单位,可以拥有自己的资源;

线程不拥有系统资源,只有一些必不可少的资源。

系统开销

创建或者 撤销进程时  操作系统所付出的 开销 将 显著地 大于创建或 撤销线程时的开销。

进程切换的开销 也远大于  线程切换的开销。

在有的系统中,线程的切换,同步和通信 都无需操作系统内核的干预。

线程实现机制

用户级线程

基本概念

只存在于用户态中,对它的创建,撤销和切换 不会通过系统调用来实现,这种线程于内核无关。

优点

用户级线程包  可以在不支持线程的操作系统上实现。

通过这一方法,可以用函数库实现线程。

线程切换至少 要比陷入内核要快 一个数量级。

实现

线程在一个运行时系统的顶部运行,这个运行时系统 是一个管理线程的 过程的集合。

线程的管理

每个 进程 通过使用 专用的线程表, 来跟踪该进程中的线程。

内核级线程

基本概念

依赖于内核,它们的创建,撤销和切换 都由内核实现。

在内核保留了一个线程控制块,系统根据该控制块 感知该线程的存在,并对线程进行控制。

支持内核级 线程的 典型操作系统时 Windows。

内核线程表

在内核中 用来记录系统中所有线程的线程表。

对线程的操作,通过系统调用,对线程表的更新 就完成了 线程创建 或 撤销工作。

优点

线程阻塞时,可以选择运行同一个进程中的另一个线程,或者另个进程的线程。

缺点

系统调用的代价比较大。

用户级线程和内核级线程的比较

调度和切换速度

核心级线程 调度方式 采用抢占方式 和非抢占方式;

用户级线程的切换速度块;

系统调用

用户级线程 调用系统调用时,把系统调用看作时整个进程的行为;

内核级线程 调用系统调用时,把系统调用 看作时线程行为,该进程的其他线程可以被调度执行。

线程执行时间

对于只设置了 用户级 线程的系统,调度是 以进程 为单位进行的;

对于设置的是核心级线程,其调度是以线程为单位进行的。

混合实现方式

支持混合方式线程的  典型操作系统是 Solaris。

具体方法是:    使用内核级线程,然后将用户级线程 与 某些 或者 全部内核线程  多路复用起来。

Pthread线程包

Phread线程包标准

IEEE标准  1002.1c 定义了线程标准。Pthread是 基于该标准实现的线程包。

Pthread线程特性

Pthread线程 每一个 都含有一个标识符,一组寄存器  和一组存储在结构中的属性。

Pthread函数

pthread_create

pthread_exit

pthread_join

pthread_yield

pthread_attr_init

pthread_attr_destroy

  1. 进程(线程)调度

调度的分类

高级调度

也称 作业调度,主要任务是 按一定的原则, 对磁盘中 处于 后备状态的作业  进行选择并创建为进程。

一般在大型批处理系统中配有作业调度,而在其他系统中,通常不需配置作业调度。

中级调度

主要任务是 按照给定的原则和策略,将处于磁盘对换区中,且具备运行条件的  就绪进程调入内存,或者将处于内存 就绪态,或内存阻塞态的进程  交换到对换区。

采用虚拟存储管理的操作系统中,中级调度 被页面调入策略,页面置换策略  和页面清除策略 所取代。

低级调度

进程(线程)调度。   决定就绪队列中 那个进程将获得处理机,并实际将处理机分配给该进程的操作。

是计算机系统中,使用最频繁,算法最复杂的调度。

调度的主要功能和时机

进程(线程)调度的主要功能

记录系统中所有进程(线程)的执行状况;

根据一定的算法,从就绪队列中选出一个进程来,准备把CPU分配给它;

CPU分配给进程(线程),即  把选中进程(线程)的进程(线程)控制块 内有关的现场信息 送入处理器 相应的寄存器中,从而让它占用CPU运行。

进程(线程)调度的时机

CPU为不可抢占方式

这个环境下,执行进程调度一般下述情况发生:

正执行的进程(线程)运行完毕;

正执行的进程(线程)调用阻塞原语;

正执行的进程(线程)调用唤醒原语;

时间片用完;

CPU为可抢占方式

就绪队列中的某个进程(线程) 的优先级 高于 当前运行 进程(线程)的优先级时, 引发调度。

调度算法设计原则

进程行为

几乎所有进程的I/O请求 或 计算都是交替突发的。     分为  计算密集型 与 I/O密集型;

随着CPU变得越来越快,更多的进程倾向为I/O密集型;

系统分类

批处理系统

在商业领域仍广范应用。

采用非抢占式算法,或 对每个进程都有长时间周期的抢占式算法,通常都是可接收的。 这种方式减少了进程切换,改善了性能。

交互式系统

交互式环境中,为避免一个进程霸占CPU 拒绝为其他进程服务,抢占式必需的。   服务器也归于此类。

实时系统

有实时限制的系统中,抢占有时是不需要的,进程通常很快地完成各自的工作并阻塞。

调度算法的设计目标

公平

保持系统的所有部分尽可能忙碌

吞吐量越高越好

周转时间:小就是好的

CPU利用率

最小响应时间

截止时间

进程(线程)调度算法

调度算法  解决以何重次序 对各就绪进程(线程) 进行处理机的分配  以及 按何种时间比例 让进程(线程)占用处理机

先来先服务

非抢占式 先来先服务算法,是所有调度算法种最简单的。   按照它们请求CPU的顺序使用CPU。

优点

易于理解;

便于使用;

缺点

计算密集型与CPU密集型进程同时存在时,计算密集型进程运行将耗费大量的时间。

最短作业优先

适用于 运行时 可以预知的  另一个非抢占式的批处理调度算法,短作业优先运行。

最短剩余时间优先

最短作业优先的  抢占式版本。  调度程序总是选择 其剩余运行时间最短的那个进程运行。

轮转法

轮转法的基本思想

将CPU 的处理时间 划分成一个个时间片,就绪队列种的诸 进程 轮流运行一个时间片。

时间片

时间片 长度的选取非常重要,将直接影响 系统开销和响应时间。

过小,则调度频繁,加重系统开销;

过大,则轮转法就退化成 先进先出算法;

设为 20-50ms通常 是 一个比较合理的折中。

系统响应时间

进程数目一定时,时间片Q 的大小 与系统响应时间成正相关。

如响应时间为T,进程数目为N , 则 Q=T/N;

就绪进程的数目

计算机的处理能力

处理能力,直接决定了每道程序的处理时间。

最高优先级算法

调度 每次将处理机  分配给 具有最高优先级的就绪进程(线程)。

进程(线程)的优先级 有进程(线程)优先数决定。

进程优先数设定

静态

进程(线程)创建时,根据 进程(线程)初始特性 或 用户要求而确定的,运行期间不能改变 。

动态

创建时先确定一个初始优先数,在运行中,随着特性的改变(如等待时间增长),不断修改优先级。

与CPU调度方式结合

该算法  可以和不同的CPU调度 方式 结合起来,从而形成 可抢占式 最高优先级算法  和不可抢占式最高优先级算法。

多级反馈队列算法

综合了先进先出调度算法,时间片轮转算法,和可抢占式最高优先级算法的一种调度算法。

被调度队列的设置

按优先级设置若干个就绪队列;不同优先级队列有不同的时间片;

同一队列之内的调度原则

除了第n级 队列式按  轮转法调度外,其他各级队列 内  均按 先进先出调度算法;

不同队列之间的调度原则

系统总是先调度级别较高的队列,仅当级别较告的队列为空时,采取调度次一级队列中的进程。

进程(线程)优先级的调整原则

正执行的进程(线程)用完时间片后,便被换出并进入到次一级的就绪队列。

当等待进程被唤醒时,它进入与其优先级相同的就绪队列。  若该进程优先级 高于正在执行的进程(线程),便抢占CPU。

最短进程优先

从当前可运行进程中,找出最短的那一个仅从,使用老化算法,即通过 当前测量值 和估计值 进行加权平局 而得到下一个估计值的技术。

实时系统中的调度算法

速率单调调度算法

一种 经典静态实时调度算法,适用于满足下列条件的进程:

1.每个周期性进程 必须在其周期内完成。

2.没有进程依赖于任何其他进程;

3.每一进程突发中需要相同的CPU时间量

4.任何非周期性进程都没有最终时限;

5.进程抢先即刻发生而没有系统开销。

分配个每个进程一个固定的优先级,优先级等于进程触发时间发生的频率。

最早最终时限优先调度

动态算法,只要一个进程需要CPU时间,就宣布它的到来和最终时限。   维持一个可运行进程列表,按最终实现排序。  该算法运行列表中的第一个进程。  当有新的进程就绪时,系统检查该进程的最终时限,若在当前进程之前结束,则先占该进程运行。

  1. 并发与同步

    1. 进程(线程)间相互作用

相关进程和无关进程

相关进程

在逻辑上具有某种联系的进程称为 相关进程;

无关的并发进程  一定没有共享的变量,它们分别在各自的数据集合上操作。

无关进程

在逻辑上没有任何联系的进程 称为无关进程。

一个进程的执行可能影响其他进程的执行结果,则 说 这些 并发进程 是相关的。

与时间有关的错误

程序的执行的速度 不由 进程 自身控制。

对于相关进程来说,可能若干 并发进程同时使用共享资源,  即 一个进程一次使用未结束,另一进程也开始使用,形成交替使用资源。

并发程序共享公共变量

根本原因在于:

在 并发程序中共享了 公共变量,使得程序的计算结果  与并发程序 执行的速度有关。

公共数据库访问

进程间的同步和互斥

同步

指  多个进程中 发生的事件存在某种时序关系,必须协同动作, 相互配合,以共同完成一个任务;

互斥

指 由于 共享资源所要求的排他性,进程间要相互竞争,以使用这些互斥资源。

  1. 进程互斥

解决互斥由两种做法:

1. 由竞争各方平等协商,即 基于进程间平等协商的互斥算法;

2.引入进程管理者,由管理者协调竞争各方  对 互斥资源的使用。

基本概念

临界资源

指  计算机系统中  需要互斥使用的 硬件或软件资源,如外设,共享代码段,共享数据结构等;

多个进程对临界资源进程访问时,特别是写入 或 修改操作时,必须互斥地进行。

计算机系统也有一些可以同时访问的共享资源不是临界资源,如只读数据。

进程间的相互制约关系

互斥

多个进程不能同时使用同一个资源,这是正确使用资源的最基本要求;

死锁

多个进程互不相让,导致系统功能不能正常运行;

饥饿

某些 进程 一直得不到资源,或 得到资源的概率很小, 导致系统内资源使用不公平。

临界资源的访问过程

进入区

为了进入临界区 使用临界资源,在进入区 检查 是否可 进入临界区。

如可以进入,通常设置  相应的 “正在访问临界区” 标志,以防止其他进程同时进入临界区。

临界区

进程中访问 临界资源的  一段代码。

退出区

将 “正在访问临界区” 标志清除;

剩余区

代码中的其余部分;

进程同步机制原则

空闲则入

忙则等待

有限等待

为了避免死锁现象,等待进入临界区的进程  不能无限期地  死等。

让权等待

因在 进入去 等待  而不能进入临界区的  进程, 应释放处理机,转换到阻塞状态。

进程互斥的软件方法

软件方法  是  实现 进程互斥的  最初方法;

基本思想是:   在进入区 检查 和 设置一些标志,如果已有进程在临界区,则在进入区 循环检查等待;  在退出区修改 标志。

单标志算法

基本思想

设立 一个 公用整型变量,描述允许进入临界区的进程标志。

每个进程都在进入区 循环检查  该变量 是否等于本进程标志。  不是 ,则循环检查;

注意,该 公用整型变量 不是 由本进程维护。

优点

保证任何时刻最多只有一个进程在临界区。

缺点

强制轮流 进入临界区,没有考虑进程的 实际需要。

双标志,先检查算法

基本思想

设立一个标识数组 flag[],  描述各 进程  是否在临界区,初值 均设为 false;

在进入区先检查  另一个进程是否在临界区,不在 时,修改本进程在临界区的标志。

优点

克服了 单标志算法的缺点,两个进程不用强行交替进入,可 连续使用。

缺点

使用多个标志,可能由多个进程同时进入临界区,从而违反了 最多只有一个进程在 临界区的要求。

进程在检查对方标志 之后,切换自己标志之前有一段时间间隔,这个 时间间隔科恩那个导致两个进程都在进入区通过检查。

该问题 出在,检查 和修改  不能连续进行。

双标志,后检查算法

类似于 刷给你标志,先检查。  它的操作是 ,进入区操作 是 先修改后检查。

flag 表示 想进入临界区,而不是在临界区。

优点

可以防止两个进程同时进入临界区

缺点

可能导致两个进程都进入不了 临界区。

即在修改本进程标志  之后  检查对方  标志  之间由一段时间间隔,这个间隔导致 两个 进程都想进入临界区,从而导致检查对方标志时不通过。

Peterson's Algorithm: 先修改,后检查,后修改者等待算法

基本思想

标志 flag[i] 表示 进程 i 想进入临界区,标志 turn表示  同时修改标志时  要在进入区等待的进程标识。

在进入区先修改 后检查。  通过修改同一标识 turn 来描述  标识修改的先后。

检查对方标识flag 时,如果对方不想进入临界区,则自己进入;  否则检查标识 turn , 由于标识 turn 保存的时较晚的一次赋值,则较晚修改标志的进程等待,较早修改标志的进程进入临界区。

优点

可完全正常工作。

进程互斥的硬件方法

主要思路是:

一条指令完成 读和写  两个操作,因而保证 读操作  和写操作 不被打断。

分成  TS指令 和 Swap指令  两种。

TS(test-and-set)指令

每个临界资源设置一个公共布尔变量 lock, 表示资源的两种状态。

在进入区 利用TS进行检查 和修改标志lock。

有进程在临界区时,重复检查,知道其他进程退出时检查通过。

Swap指令(或Exchange指令)

其功能时  交换两个字节的 内容。

每个临界资源设置一个 公共布尔变量lock,初值为  false;

每个进程设置一个 私有布尔变量key, 用于与lock间的信息交换。

在进入区  利用 Swap  指令交换 lock  与 key的内容,然后检查key的状态。

有进程在临界区时,重复交换 和检查  过程,直到其他进程退出时检查通过。

硬件方法的优点

使用范围广

硬件方法 适用于 任意数目的进程,在单处理器和多处理器环境中完全相同。

简单

支持多个临界区

硬件方法的缺点

进程进入临界区时,要耗费处理机时间,不能实现让权等待

有的进程可能一直选不上,出现 饥饿现象

  1. 信号量

信号量概念

代表 可用资源实体的数量,是一种进程同步机制。

每个信号量s ,拥有一个整数值 s.count 和一个进程等待队列 s.queue, 其中存放的时阻塞在该信号量的各个进程的标识。

信号量 只能通过 初始化  和两个标准 的原语 来访问。

作为操作系统核心代码的一部分,P,V原语的执行,不受进程调度和执行的打断。

原语处理过程

P原语 相当于进入区 操作;

V原语 相当于退出区操作;

P原语所执行的操作

s.count --;  //申请一个资源;

如果没有空闲资源,调用进程 进入等待队列 s.queue;  阻塞调用进程;

V原语所执行的操作

++s.count; // 表示释放资源

如果有进程处于阻塞状态,就从 等待队列 s.quque 中 取出 头一个进程 P; 进程P 就进入就绪队列。

临界资源互斥访问的实现

利用 操作系统提供的 信号量机制,可实现临界资源的互斥访问。

每个进程中  将临界区代码  置于  P 和  V 原语之间。

P,V原语使用规则

必须成对使用P  和 V 原语。

遗漏 P原语 保证互斥访问;  遗漏  V 原语 则不能释放资源。

P,V原语的使用 不能次序错误,重复或遗漏。

前趋关系的实现

利用 操作系统提供的信号量机制,可实现进程间的同步,即前趋关系。

  1. 经典的进程同步问题

简单生产者-消费者问题

多个生产者-消费者问题

读者-写者问题

同步与互斥的综合应用

路口单双号交通管制

物流系统中的物品分拣问题

  1. 管程

管程的提出

采用 P,V 同步机制 来编写并发程序,对 公共变量  以及 信号量 的操作 将被分散在 各个进程中。  其缺点:

1.程序易读性差;

2. 程序不利于修改和维护;

3. 正确性难以保证。

管程的概念及组成

管程的概念

一个  由  过程,变量及 数据结构等组成的集合,它们组成一个特殊的模块或软件包。

进程可在任何需要的时候调用管程中的过程。

管程的组成

管程能保障共享资源的互斥执行,即一次只能有一个进程可以在管程内活动。 该性能时由管程本身实现的。

管程名称

共享数据的说明

对数据进行操作的一组过程

对共享数据赋初值的语句

管程的类 Pascal语言描述

管程的特性

模块化

抽象数据类型

信息隐蔽

活跃进程

管程中的条件变量

基本思想

当一个管程过程 发现它无法继续运行时,会在某个 条件变量 上执行 wait操作。   该操作导致 调用进程阻塞。   同时将另一个以前 等在 管程之外的进程调入管程。 该进程 可以唤醒正在睡眠的伙伴进程, 通过  signal完成。

多进程处理方法

用管程解决生产者-消费者问题

Pthread中的互斥与同步

Pthread 提供了 用于线程  同步与互斥的机制,它们是 互斥量 和条件变量, 二者结合可以达到管程的效果。

互斥量及相关函数

基本思想是:  使用一个可以加锁和解锁 的互斥量 来保护临界区。

条件变量及其相关函数

Pthread 提供了一种同步机制,条件变量,它允许线程由于一些 未满足的条件而被阻塞。

条件变量与互斥量一起使用

让一个线程 锁住一个互斥量,如果该线程不能获得它期望的结果时,则等待一个条件变量。  最后另一个线程会向它发信号,使它可以继续执行。

  1. 进程通信

共享内存

在相互通信的进程之间,设有一个公共内存区, 一组进程  向 该公共内存中写, 另一组进程 从公共内存中读, 通过 这种方式实现  两组 进程间的 信息交换。

怎样提供共享内存

公共内存中的读写互斥问题

消息机制

消息缓冲通信

基本思想

根据 生产者-消费者 原理,利用内存中 公用消息缓冲区 实现 进程间的信息交换。

系统负责 管理 公用消息缓冲区 以及消息的传递。

消息缓冲区通信机制包含的内容

消息缓冲区

一个  由 消息长度,消息正文,发送者,消息队列指针  组成的数据结构。

消息队列 首指针

互斥信号量

同步信号量

发送消息原语  send(receiver,a)

参数 receiver 为接收进程名,  a 为发送进程 存放消息的 内存区的首地址

接收消息原语 receive(a)

参数 a 表示  接收进程的 内存消息区。

信箱通信

基本思想

为了 实现进程 间的通信, 设立 一个通信机构--信箱,以 发送信件  以及 接收回答信件  为进程间通信的基本方式。

当一个进程  希望 与另一个进程 通信的时候, 就创建 一个链接两个进程的信箱, 发送进程把信件 投入信箱,而接收进程可以在任何时候 取走信件。

信箱的结构

信箱说明

可存信件数

已有信件数

可存信件的指针

信箱体

原语

创建信箱原语

撤销信箱原语

发送信件原语

接收信件原语

信箱通信优点

发送方和接收方不必直接建立联系,没有处理时间上的限制。   发送方可以在任何时间发信,接收方可以在任何时间接收信。

通信规则

发送时,信箱已满,则发送方置成 等信箱 状态

若取 信件时,信箱无信,则接收方 置成  等信件 状态

共享文件(管道通信)

基本思想

管道 是  连接 两个进程之间的 一个打开的共享文件,专用于进程之间 进行数据通信。

管道通信的基础  是文件系统

同步和互斥

管道通信机制 的同步和互斥  都由操作系统自动进行,对用户是透明的。

管道通信的优缺点

具有传输量大的优点;

缺点是通信速度较慢。

  1. 内存管理

    1. 基本概念

存储体系

存储体系的概念

快速存储设备和 大容量存储设备 必须构成统一的整体,由操作系统协调这些存储器的使用。

对于内存速度 和容量的要求是:

速度尽量快到于 CPU的取指 速度相匹配,容量达到能装下当前允许的程序和数据。

存储体系内容

高速缓存器(Cache),通常是百 KB的数量级;

内存(RAM),通常是 千MB的数量级;

外存(磁盘),通常是 百 至 千 GB量级;

存储管理的任务

基本概念

内存空间

由存储单元(字) 组成的 一维 连续的地址空间,简称 内存空间。

系统区

用户区

存储管理实质上 就是管理供用户使用的这部分空间。

内存管理

包括:

内存管理方法,

内存的分配和释放算法,

虚拟存储器的管理,

控制内存 和外存之间的数据流动方法

地址变换技术

内存数据保护与共享技术。

用户对内存管理的要求

充分利用;

尽可能方便;

能解决程序空间比实际空间大的问题;

程序长度在执行时可以动态伸缩;

内存速度够快;

存储保护与安全。

性能与代价合理。

内存的分配和回收

记住每个存储区域的状态

设置相应的分配表格,记录内存空间使用状态。

实施分配

静态分配

分配工作 是在 程序运行前  一次性完成。

动态分配

分配工作可以在程序运行前,以及运行过程中逐步完成。

回收

内存分配表

位示图表示法

用一位 表示 一个空闲页面

空闲页面表

连续若干页面作为一组  登记在表中。

空闲块表

空闲块首地址 和 空闲块长度,没有记录的区域即为 进程所占用。

存储共享

概念

两个 或 多个进程 共用 内存中的相同区域,能使 多道程序动态地共享内存,提高内存利用率。

共享的内容

代码共享和数据共享,特别是代码共享,要求代码必须是纯代码。

目的

通过共享代码,节省内存空间,提高内存利用率;

通过共享数据, 实现进程通信。

存储保护

保护系统程序区  不被用户有意或 无意的侵犯;

不允许用户程序 读写 不属于自己地址空间的数据。

存储保护一般以硬件保护机制为主, 软件为辅。  完全用软件实现,系统开销太大,速度显著降低。

地址越界保护

发生越界时产生中断,由操作系统进行相应的处理。

权限保护

扩充内存容量

基本概念

采用一定技术扩充内存容量, 使用户得到比实际内存容量大得多的内存空间。

具体实现

在硬件支持下,软件,硬件相互协作,将内存,外存结合起来统一使用

借助虚拟存储技术或其他交换技术,达到逻辑上扩充内存容量

地址转换

基本概念

物理地址空间

容量位 n字 的存储器,地址编号为: 0,1,2...,n-1。  这些地址 称为  内存的绝对地址,对应的空间 称为 物理地址空间。

逻辑地址空间

用户程序中使用的地址称为 逻辑地址,与值对应的存储空间称为   逻辑地址空间。

地址重定位

每个逻辑地址 在内存中没有一个固定的绝对地址与之对应。  程序执行时,必须把逻辑地址 转换成 绝对地址。  这个过程  称为 地址重定位,或地址转换,也称  地址映射。

静态重定位

装入程序时,把程序中的指令地址 和数据地址 全部转换成 绝对地址。

动态重定位

基本概念

装入程序时,不进行地址转换,而是直接把程序  装入到 分配的内存区域中。   程序执行时,由硬件的地址转换机构  将指令中的逻辑地址转换为绝对地址。

具体实现

硬件有一个地址转换机构,该机构由一个基址寄存器和一个地址转换线路组成。

装入程序时,把内存区域的起始地址存入 当前进程控制块中。   当进程被调度时,线程信息的恢复,程序所占的内存起始地址被 存放到  基址寄存器中。  处理器执行指令时,将指令中的逻辑地址与 基址寄存器的值相加得到绝对地址,然后访问内存。

优点

程序是可浮动的。

内存管理方案简介

单一用户(连续区)管理,

分区管理,

页式管理,

段式管理,

段页式管理。

单一用户存储管理方案

指 在一段时间内, 只有一个用户进程在内存,无需记录内存空间的使用情况。

物理地址必须依据基地址产生。

该模式下,物理地址的产生时机  可选择为 编译,链接,装入,执行几个阶段的任一阶段。

  1. 分区存储管理方案

基本思想 是  把内存划分为  若干个连续区域,称为分区,每个分区可装入一个运行程序。

固定分区

基本思想

指系统一旦划分好分区,运行期间便不再重新划分。

由于每一分区的大小是固定的, 程序运行时必须提供对内存资源的最大申请量。

内存分配表 与分区的分配,回收

用于 固定分区管理的内存分配表  是一张分区说明表,按顺序诶个分区在 分区说明表中对应一个表目。

表目信息包括:

区号,大小,起始地址,状态。

缺点

很难避免内存空间的浪费。

灵活性差。

可变分区

基本思想

可变分区的概念

系统不预先划分固定分组,而是在装入程序时 划分内存分区。

为程序分配的分区的大小,正好等于该程序的需求量。

可变分区的分配和回收

系统初启后,内存中除系统区外,其余空间为一个完整的大空闲区。

随着一些列的内存分配和回收, 原来的一整块大 空闲区  形成了  若干占用区 和空闲区相间 的布局。

若由上下相邻的两块空闲区,系统应将它们合并成  一块连续的大空闲区。

移动技术

基本概念

内存经过一段时间的分配与回收,会存在很多小的空闲块,被称为碎片。

通过移动内存中的程序,把所有空闲碎片 和成一个连续的大空闲区,且放在内存的一端,称为  移动技术,紧凑技术 或 紧缩技术。

采用移动技术注意问题

增加系统开销

需要大量地在内存中进行数据块移动的操作,还要修改内存分配表 和进程控制块。

这些工作既  增加了系统程序的规模,也增加了系统运行时间。

移动是有条件的

不是任何在内存中的作业都能随时移动。

比如,某进程正与外部设备交互,与该进程有关的数据块就不能移动。

可变分区的实现

硬件实现

硬件设置两个专用的控制寄存器: 基址寄存器 和 限长寄存器。 基址 用来存放分区的起始地址,限长寄存器 用来存放程序所占分区的长度。

访问过程

程序装入分区后,将分区起始地址,和长度作为现场信息存入  PCB中。

调度选中时,将起始地址  和 长度  送入 基址寄存器 和 限长 寄存器中。

逻辑地址加 基址寄存器的值 就可以得到绝对地址,当逻辑地址大于限长寄存器的值时,表示欲访问的地址超出了所分配的地址分区范围。

可变分区的管理

内存分配表由两张表格组成,用于实现可变分区的管理。

两种表格都应设置适当的空栏目,分别用以登记  新内存分配表。

已分配区表

用标志位 指出占用分区的程序名。

空闲区表

标志位 指出 该分区是  未  分配的空闲区。

空闲分区的分配策略

最先适应算法

又 称  顺序分配算法。   当接到内存申请时,顺序查找分区说明表,找到第一个满足的空闲区,将其分割并分配。

最优适应算法

接到内存申请时,查找分区说明表,找到第一个能满足申请长度的最小空闲区,将其分割并分配。

最坏适应算法

当接到内存申请时,查找分区说明表,找到鞥你满足申请要求的最大的空闲区。

下次适应算法

接到内存申请时,查找分区说明表,从上一次分配的位置开始扫描,选择下一个大小足够的可用块。

分区的回收

检查是否有相邻的空闲区,若有,则合并成一个空闲区等级。

分区地址为  S,长度 为L。 则:

回收分区的上邻分区是空闲的

回收分区的下邻分区是空闲的

回收分区的上下邻都是空闲的

回收分区的上下邻都不是空闲的

分区的保护

系统设置界限寄存器

界限寄存器 可以是 上,下限 寄存器 或 基址寄存器,限长寄存器。

保护键

为每个分区 分配保护键,相当于一把锁。  同时为每个进程分配一个保护键,相当于一把钥匙。

每当访问内存时,都要检查钥匙和锁是否匹配,不匹配就发出保护性中断。

分区管理方案的优缺点

优点

实现多道程序的简单易行的管理技术

内存真正成为了共享资源

算法简单,内存额外开销较少

内存利用率比固定分区高

缺点

内存使用仍不充分,容易出现内存碎片

解决碎片问题,浪费了处理机时间

不能提供 虚存,即不能实现内存扩充

要求运行程序一次性装入,才能开始运行,可能会包括一些实际不适用的信息

  1. 覆盖技术与交换技术

覆盖技术

概念

指  一个程序的 若干程序段,或 几个程序的某些部分 共享一个存储空间。

实现

把程序 划分为  若干个功能上 相对独立的程序段, 按照其 自身的逻辑结构 始 不会同时执行的程序段共享同一块内存区域。

未执行的程序段先保存在磁盘中,使用时再调入内存,覆盖前面的程序段。

优点

从用户级 彻底解决内存小 装不下程序的问题

打破了需要将程序的全部信息装入内存的限制

逻辑上扩充了内存空间

缺点

早期使用的简单的 扩充内存技术,对用户不透明,增加了用户的负担 。

程序段的最大程度 仍受内存容量的限制。

应用

主要用于系统程序的内存管理上, 因为 系统软件设计者  容易了解 系统程序的覆盖结构。

交换技术

基本思想

又 称为 对换技术。

进程从内存移到 磁盘 并再回 内存 称为交换。  是 由操作系统控制的,动态调度。

目的

尽可能达到 足够快地交换进程,使得总有进程 再内存中处于就绪状态。

交换技术要考虑的问题

换出进程的选择

分时系统中, 一般情况下根据时间片轮转法 或  基于优先数的调度算法  选择要换出的进程。

选择换出进程时, 该换出的进程应该时短时间内不会立刻投入运行的。

交换时机的确定

内存空间不够,或有不够的危险的时候

系统发现一个进程长时间不运行的时候

交换空间的分配

一些系统中,进程再内存中时,没有分配磁盘空间。   被换出时,必须为它分配磁盘交换空间。

另一些系统,进程创建后,分配了磁盘空间。进程被换出时,都被换到它分配的空间

换入进程换回内存时位置的确定

受 绝对地址产生时的限制, 如进程中引用的地址时绝对地址, 则换入时,就一定再原来的位置上。   否则, 就可以不再原来的位置上。

交换技术的缺点及解决办法

交换时需要花费大量的CPU时间,将影响到响应时间。

减少交换的信息 时交换技术的关键问题。

合理的做法是, 再外存中保留交换的副本,换出时仅修改 修改过的部分。

  1. 页式存储管理方案

基本思想

支持 页式存储管理的硬件部分  通常称为: 存储管理部件(Memory Management Unit);

MMU 把内存分成 大小相等的许多区,每个区 称为

同时要求 程序中的  逻辑地址 也 进行分页,页的大小 与 块的大小一致。

页式存储器 提供编程使用的逻辑地址 由两部分组成:

页号 和 页内地址。

存储空间的分配与回收

存储空间的分配

内存分配表

有  已经分配块, 尚未分配块,当前剩余的空闲块数 三种标识。

内存分配过程

先查看空闲块数  是否能满足程序要求,若不满足,则不进行分配。

存储空间的回收

根据 归还的 块号 计算出  该块  在  位示图中对应的位置,将占用标识置为0, 再把回收的块数 加入到空闲块数中。

地址转换与快表

页式存储管理的地址转换

硬件支持

系统要提供一对 硬件的页表控制寄存器,即  页起始地址寄存器 和 页表长度寄存器。

页表简单介绍

页表 指出 程序逻辑地址中  的页号  与所 占用的内存块号之间的对应关系。

页表

称  存放页表的页面 为  页表页。

多级页表

一般来说,页表页不可以连续存放,因此需要对 页表页的地址进行索引。

大多数操作系统 采用 二级页表,即由 页表页 和页目录一起构成 页表 。

散列页表

基本概念

当地址空间大于 32时,一种常见的方法是:  以 页号为 散列值的 散列页表。

算法

由虚拟页号得到的 散列值 来查找  散列页表,并将 此页号 与链表中的第一个元素的字段进行比较。

集群页

适用于64位的地址空间。  与散列页表相似,不过每个表项代表了 多个页面。

反置页表

在  反置页表中,每个物理页框 向对应一个表项,每个表项包含 与 该 页框 相对应的虚拟页面地址  以及 拥有该页面的内存信息。

真个系统中 只有一个页表,并且每个页框对应其中一个表项。

缺点

增加了内存访问时的查表时间。

快表

基本概念

一般而言,页式存储管理的页表  存放在内存中。  当要按给定的逻辑地址进行读写时,需要访问两次内存 。

为提高存取效率, 利用高速缓冲器 存放当前访问最频繁的 少数活动页面的页号,  这个高速缓冲器  被称为 快表。

块表更新原理

如快表中没有相应的逻辑页号,地址映射通过内存中的页表进行,得到内存块号后,需将该块号填到 快表的空闲单元中。

若没有空闲单元,则根据置换算法 置换某一行,再重新填入  页号 和块号。

优点

地址转换的时间 大大下降。

  1. 虚拟存储技术与虚拟页式存储管理方案的实现

虚拟存储技术

基本思想

利用大容量的外存来扩充内存。

虚拟存储管理

由操作系统 再 硬件支持下, 把两级存储器 统一实施管理,达到扩充内存的目的。

硬件支持

系统由容量足够大的外存

有一定容量的内存

硬件 提供实现  虚-实地址映射的机制

工作原理

同  覆盖技术 与交换技术。

虚拟存储技术与交换技术的区别

传统的交换技术中,交换到外存上的对象一般都是进程,即以进程为单位。

虚拟存储 则是  以 页 或 段 为单位。

虚拟页式存储管理

基本思想

进程开始运行前,不是装入全部页面,而是装入一个 或 零个 也买你,之后再根据需要动态装入。

表项

页号

有效位

页框位

访问位

修改位

保护位

禁止缓存位

缺页中断

基本思想

页表中发现索要访问的页面不存在时,就产生缺页中断。

缺页处理流程

页面调度策略

调入策略

决定了什么时候 将一个页 从外存调入内存中。

请求调页

只 调入 发生缺页时 所需的页面。

预调页

发生缺页需要调入某页时,一次调入该页  以及相邻的几个页。

置页策略

线程产生缺页中断时,确定将调入的虚拟页  放在物理内存的何处。

置换策略

物理内存已满,用于确定哪个  虚页面从 内存中移出。

固定分配局部置换

根据进程的类型,为 每一进程  分配固定的页数的内存空间,整个运行期间 不再改变。

可变分配全局置换

先为系统中的 每一进程  分配一定数量的物理快,操作系统 本身 也 维持一个空闲的物理块队列。 发生缺页时,由系统的空闲物理快队列取出一块 分配给该进程。

可变分配局部置换

当进程发生缺页中断时, 只允许从该进程的页面中选出一页换出。

置换时机

很多 虚拟页式存储系统 创建了 一个 称为  分页守护进程的 后台进程,大多数时候睡眠,但定期被唤醒  以检查内存的状态。

页面置换算法

先进先出算法

基本思想

总是选择最先装入内存的一页调出,或者说把 驻留在内存中 时间最长的一页调出。

具体实现

用指针指向  最早 被装入内存的那页 的地址,每次总是选择指针指示的页调出。   指针依次递增。

缺点

最先装入的页,不等于这页时不常用的。

最近最少使用页面置换算法

基本思想

缺页 发生时,首先置换掉 最长时间 未被使用过的页面。

具体实现

在页表中 ,为每一页增加一个 记时 标志。

没被访问一次,都应该 从 0 开始重新计时。

缺点

对 每一页的访问情况,进行时刻记录和更新,实现麻烦且开销大。

最近最不常用页面置换算法

基本思想

总是选择被访问次数少的页面调出

具体实现

为每页设置一个计数器,对访问次数进行累计。

操作系统需要确定一个周期T,若T内无中断,则将计数器清 0,开始一个新的周期重新计数。

缺点

开销大,且确定合适的周期也有一定的难度。

理想页面置换算法

置换 以后不再需要的,或者在很长时间以后才会用到的页面。

这一算法一般不可能实现,但可以作为一个衡量标准。

最近未使用页面置换算法

R位 和 M位

大部分支持续存 的计算机中, 硬件为 每一 以面设置了 两个状态位。 分别为 访问状态R位, 和写入状态M位。

基本思想

启动进程时,将所有页面的两个位都由操作系统 置为0,定期将 R 位 清零,以区别页面状态。

它们被分为:

0类: 没有被访问,没有被修改

1类:  没有被访问,已被修改

2类:已被访问,没有被修改

3类:已被访问,已被修改

优点

易于理解 和能够有效被实现,虽然性能不是最好的,但是已经够用了。

第二次机会页面置换算法

对FIFO算法的修改:  检查进入内存时间最久页面的R位,如果是0,则该页面既老又没有被使用,立刻替换;  如果是1,就将R 位清0,并将该页面放到链表的尾端,修改其时间,然后继续搜索。

基本思想是:  寻找一个最近的  时钟间隔 以来 没有被访问过的页面。

时钟页面置换算法

第二次机会算法是一个比较合理的算法,但是它经常要在链表中移动页面, 既降低了效率又不是很有必要。

本算法的处理是:

把所有的页面都保存在一个类似时钟面的环型链表中,一个表针指向最老的页面。  若发生缺页中断,算法首先检查表针指向的页面,如果它的R位是0 就替换,并把新页面插入到这个位置,然后表针前移一个位置。  否则表针前移  并清除R。

缺页中断率

程序共有n页,系统分配了m块,m<=n,则该程序最多可同时被装入m页。

若执行中访问页面的总次数为A,有F次访问未成功装入内存,就得到了

缺页中断率:  f = F/A;

影响因素

分配给程序的内存块数

对一共有 n页的程序来说,只要能分到  n/2块内存空间,可使系统获得最高使用率。

页面的大小

页面的大小取决于分块的大小,块大则页面也大,每个页面打了 则程序的页面数就就少。

程序编制方法

缺页中断率 与 程序的  局部化程度 密切相关。

一般来说,希望编制的程序能 经常 机中在几个页面上进行访问,以减少缺页中断率。

页面置换算法

页面置换算法对中断率影响很大,调度不好就会出现 抖动 。

据 统计,采用 FIFO 算法 产生的缺页中断率  约为 最佳算法 的 3 倍。

虚拟存储的性能问题

虚拟存储的目的

其真正目的,是把哪些访问概率 非常高的页 放入内存,减少外存交换的次数。

颠簸现象

在虚存中,页面可能在 内存与外存之间频繁地调度,有可能出现抖动或颠簸。

系统由于调度页面所需要的时间 ,比进程时机运行所占用的时间还多,系统效率急剧下降。

颠簸原因

由于缺页率高引起的。

颠簸问题的解决

工作集模型

对于给定的进程访问序列,从时刻  t-Δ  到 时刻  t 之间  所访问页面的集合。

工作集 是随时间变化的。 工作集大小 与窗口尺寸密切相关。

任何程序对内存都有一个临界值要求,小于临界值,缺页率上升;  大于临界值,也不能显著减少缺页次数。

实现

操作系统为每个进程 保持一个工作集,并为该进程提供 与 工作集带线啊哦相等的物理页面数,这一过程是可动态调整的。

统计工作集 由硬件完成,系统开销大。

段式与段页式存储管理方案

段式存储管理方案

设计思想

基本概念

系统将 内存空间 动态划分 为 若干个  长度不同  的区域,每个区域 称作 一个物理段。

每个物理段在内存中有一个起始地址,称为 段首址。

用于程序 按逻辑上有完整意义的段来划分,称为 逻辑段。

一个用户的程序的  所有逻辑段  从0 开始编址,称为 段号。

内存分配

以段 为 单位,进系内存划分, 每一个逻辑段  分配一个 连续的内存区。

逻辑上  连续的段  在内存中  不一定连续存放。

段表

程序装入内存后, 系统为 每个用户程序建立一张 段表,用于 记录 用户程序的 逻辑段  与 内存物理段 之间的对应关系。

用户程序有多少逻辑段,就等级多少行,且 按逻辑段 的顺序排列。

地址转换

系统提供一对寄存器: 段表起始地址寄存器  和  段表长度寄存器。

与可变分区的 方案的比较

相同点

分配方法和存储空间回收方法相同;

有相同结构的内存分配表。

不同点

段式存储管理 为程序的 每一个分段  分配一个连续的 内存空间。

当没有足够大的空闲区时,仍可 采用拼接技术 合并分散的空闲区

段页式存储管理方案

基本思想

用页式方法来分配和管理内存空间,即把内存划分为若干大小相同的页面;

用段式方法 对用户程序  按照其内在的逻辑关系  划分为若干段;

再按照 划分内存页面的大小,每一段划分成若干大小相等的页面。

内存式 以 页 为基本单位 分配给用户程序的, 逻辑上相邻的页面  物理内存中不一定相邻。

特点

进程有自己的二位地址空间

具有独立逻辑功能的程序或数据被划分为段,有各自的段号

对于段种的程序 或 数据, 按照一定的大小将其划分为不同的页

优点

分段的大小不再受内存可用区的限制 。

实现

系统为 每个程序  建立一张段表;

又 为每个段 建立 一张页表。

  1. 文件管理

    1. 概述

基本概念

信息与文件系统

计算机系统中,信息的组织,存取,加工 和保存 主要是  由 文件系统完成的。

把信息 以 一种单元,即文件的形式,存储在 磁盘或 其他外部存储介质 上,导致了文件系统的出现。

能够存储大量的信息

长期保存信息

可以共享信息

文件的管理

操作系统 为系统管理者 和 用户 提供了 对文件的透明存取。

文件的结构

命名

存取

使用

保护

实现

文件和文件系统

文件系统的研究

用户角度

文件由什么组成,如何命名,如何保护文件,可以进行何种操作等。

操作系统角度

文件目录怎样实现,怎样管理存储空间,文件存储的位置,磁盘实际运作方式。

文件的定义

文件解释

一组 带 标识的, 在逻辑上 有完整意义的  信息项  的序列。

标识为文件名,信息项构成文件内容的基本单位。

文件的读写

通常, 系统为一个长在使用的文件  提供读写指针。

读指针 记录文件 当前的读取位置,指向下一个将要读取的信息项。

写指针  用来记录文件当前的 写入位置, 下一个将要写入的 信息项 被写到  该处。

文件的长度

可以是 单字节,也可以是 多字节。

文件的内容

文件的 具体意义, 由 文件的建立者  和  使用者 解释。

文件的名称

为了方便用户使用, 每个文件都有特定的名称。

各种文件系统的命名不尽相同。

文件的存储

一般地,文件建立在存储器空间里, 以便 使 文件能够长期保存。

文件系统

定义

操作系统种,统一管理信息资源的 一种 软件。

作用

为用户提供具体操作的实现

多用户系统中,保证存放位置不冲突

文件安全保护

存储介质

磁盘,磁带,以及光盘 等大容量存储器

文件分类

用途分类

系统文件

操作系统和各种系统应用程序 和数据 所组成的文件。

只能通过系统调用 来访问它们;

访问的含义 是  执行该文件。

库函数文件

标准子程序  及  常用 应用程序 组成的文件。  可对其 进行: 读取,执行,但不能修改。

如: C语言子程序库,FORTRAN子程序库等。

用户文件

用户委托文件系统保存的文件。

文件组织形式分类

普通文件

文件的组织格式  为 文件系统 所 规定的最一般的格式的文件。

目录文件

由文件的目录 构成的特殊文件。

其内容不是各种程序文件或应用数据文件,而是含有目录信息的一种特定文件。

其 主要用来 检索文件 的目录信息

特殊文件

有其不同于普通文件的性质。

如: UNIX类系统中,输入输出 是一种特殊文件。

常见文件分类方式

保护方式

只读文件

读写文件

可执行文件

无保护文件

流向分类

输入文件

输出文件

输入输出文件

存放时限

临时文件

永久性文件

档案文件

介质类型

磁盘文件

磁带文件

卡片文件

打印文件

组织结构

逻辑文件

由用户组织的文件,  采用流式 文件  和 纪录式文件  两种组织方式。

物理文件

问价在存储介质上的组织方式, 常用的有:  顺序文件,链接问价  索引文件等。

UNIX类操作系统中文件的分类

普通文件

内部无结构的 一串 平滑的 字符组成的文件。

目录文件

特殊文件

文件系统的功能

统一管理文件存储空间

实现 文件 从名字空间 到 外存地址空间的映射

保持文件系统的执行效率

提供与I/O的统一接口

  1. 文件的结构

文件的逻辑结构

设计文件逻辑结构的原则

易于操作

查找快捷

修改方便

空间紧凑

文件的逻辑结构

用户看到的文件的组织形式 。

与 物理介质上如何组织存储没有直接关系。

通常可分为:

无结构的字符流文件;

定长记录文件;

不定长记录文件构成的记录树;

流式文件

概念

有序字符的集合,其长度为该文件所包含的字符个数。

结构

可以认为  是  一串 有开头和结尾的连续字符。

应用

源程序,目标代码等文件属于流式文件。

UNIX类系统采用的是 流式文件结构。

优点

管理简单

记录式文件

一组有序记录的集合。  构成文件的基本单位是记录。

定长记录文件

各个记录长度相等。  检索时,可以根据记录号 i 及 记录长度 l  就可以确定该记录的逻辑地址。

不定长记录文件

各个记录长度不等。  查找时,必须从第一个记录起,一个记录一个记录查找,直到找到所需的记录。

文件的物理结构

顺序结构

顺序结构原理

又称 连续结构,一种最简单的物理结构,把逻辑上连续的为你教案信息一次存放在连续编号的物理块中。

优点

存取速度快

缺点

文件不能动态增长

存储碎片

文件不停地被分配和删除,空闲空间被分割为很小的部分,最终导致出现存储碎片。

链接结构

链接结构原理

实质是  为每个文件 构造所使用磁盘块的 链表。

Windows 的  FAT文件系统 采用的是 链接结构,但将所有 链指针 集中存放。

优点

解决了存储碎片问题

文件可动态扩充

缺点

存取速度慢,不适合随机存取

磁盘磁头移动多,效率相对较低

链接指针需要占用一定的空间

索引结构

原理

把 每个物理盘 的 指针字 集中 存放在被称为 索引表的数据结构中的 内存索引表中。

优点

保持了链接结构的优点,又解决了其缺点

既适用于顺序存取,也适用于随机存取

缺点

会引起较多的寻道次数和时间

索引表本身增加了存储空间的开销

索引结构文件要存取文件时,需要至少访问两次设备以上,降低了存取效率

解决办法

索引表的链接模式

多级索引

索引结构的实例--I结点

起源

I结点是 一种多级索引文件结构,最早出现在UNIX操作系统中。

基本思想

给每个文件 赋予一张 称为 I结点 的小表,在这张小表中,列出了 文件按属性 和 文件中 各块 在磁盘上的地址。

索引表

采用I结点的文件中,文件的开始几个磁盘地址 存放在  I节点内。

优点

既适合小文件使用,也适合大文件使用。

文件的存储介质

存储介质的特点

特点

容量大

断电后仍可保存

速度较慢

成本较低

组成

通常 由  驱动部分 ,存储介质两部分 组成。

存储介质

又 称  卷,  卷 字 来自把存储介质 看作 是 信息容器的比喻。

驱动器

作用是  使计算机能够实现 读写 存储介质上的内容。

分类

磁盘,磁带,磁鼓,纸带,光盘,闪存等

可重用与不可重用

可移动的存储实体

存储实体 可以同 驱动器分离。

空间组织

磁盘由  盘面,柱面,磁道,扇区组成。

地址存取方式

存取过程大致如下:

读状态-》 置数据 --》 置地址--》置控制---》 读状态。

一个字符的I/0可能 要有 以上若干个循环才可以。

用户对外存设备的要求

方便,效率,安全

文件在存储设备中的存取

顺序存取设备

磁带 是最早使用的 磁记录存储介质,一种顺序存取设备。

优点是存储容量大

缺点是速度慢,不适宜随机存取。

随机存取设备

概念

磁盘是一种典型的随机存取设备。

磁盘设备 允许 文件系统直接 存取磁盘上的任意物理块。

结构

由 若干磁盘片组成。每个磁盘片对应两个 读/写磁头,分贝对磁盘片的上下两面进行读写。

将盘面划分出一些同心圆,称为 磁道。  每个磁道 分为若干段,称为扇区。

每个扇区 就是一个物理块。

访盘

磁头臂 沿半径方向移动。

一次访盘 时间  由 寻道时间,旋转定位时间,数据传输时间组成。

寻道时间由于是机械动作,所花费的时间最长。

存取磁盘上 任一物理块的时间 与 该物理块所处的位置无关。

文件的存取方式

顺序存取

按 从前到后的 次序  依次访问文件的各个信息项。

纪录式文件

当前记录的逻辑地址  加上 记录的长度,得到下一个记录的逻辑地址。

流式文件

对流式文件,顺序存取反应当前读写指针的变化。

随机存取

又 称 直接存取,即 允许 用户按 任意的次序 直接存取 文件中的任意一个记录。

  1. 文件目录

文件目录的组成

操作系统中,每个文件都设置有 一个 描述性数据结构---文件控制块,把所有文件的文件控制块有机组织起来,就构成了文件控制块的有序集合, 称为: 文件目录。

   文件目录 实际上就是  文件符号名  物理地址之间 的一种映射机制。

文件控制块

系统为 管理文件 而这只的一个数据结构。

文件名

文件号

系统在文件创建时,所指定的一个编号,文件号唯一地 标识一个文件。

用户名

文件物理结构

标识该文件内部的物理结构

文件逻辑结构

文件物理位置

如文件是 链接结构,保存的是 该文件记录的首指针。

如文件是  索引结构,保存的是 该文件的索引表地址。

文件长度和记录大小

文件类型

文件属性

指出 只读,可读写,只可执行 类型

共享说明

口令

访问文件的密码

保存期限

目录文件

概念

当 用户建立一个新文件,与该文件有关的 一些信息  存储在 文件控制块中。

多个文件的文件控制块机中在一起就组成了 文件的目录。

文件目录以 文件的形式保存,就被称为 目录文件。

目录项

目录文件中,每个文件的文件控制块 称为 目录文件中的  目录项。

目录文件的存储

为饿了节省内存空间,把目录文件保存在外存上,需要时才调入内存。

文件目录的结构

一级目录结构

概念

在文件系统中,设置一张线性目录表,包括了所有文件的文件控制块。

操作

存放在 存储设备的某个固定区域,系统初启 或 需要时,再调入内存中。

有了一级目录,文件系统 可 实现对文件空间的  管理  和 按名存取。

缺点

限制了用户命名,不能重名

平均检索时间长

优点

简单,易于实现。

二级目录结构

概念

目录分为两级。

第一级  称为 主文件目录,给出了用户名 和用户子目录 所在的物理位置。

第二级  称为 用户文件目录,给出了 该用户所有文件的 FCB。

操作

先从 第一级 找到目录对应的目录名,并从用户名 查找第二级用户目录。

优点

解决了文件重名问题

解决了不同用户间的文件共享问题

缺点

增加了系统开销

树形目录

概念

除了最低一级装有文件信息外,其他每一级 存放的都是 下一级 目录  或 文件的说明信息,由此形成层次关系,最高层为 根目录,最低层 为 文件。

特点

层次清楚

解决了文件重名问题

查找搜索速度快

缺点

查找文件 按 路径名 逐层检查,由于每个文件都放在外存,多次访盘 会影响速度,结构相对比较复杂。

应用

目前大多数操作系统均采用 多级目录结构。

如:UNIX,Linux, Windows

路径名

当前目录与目录检索

当前目录

又 称 工作目录,操作系统向用户提供的一个当前正在使用的目录。

目录检索

全路径名

从 根目录开始,列出 由 根 到用户  指定文件的全部有关 子目录。

通常 各目录文件放在外存,影响访问速度,尤其 当目录层次较多时,检索要耗费很多时间。

相对路径

检索 从当前目录开始 到索要访问文件的一段路径。

检索路径素偶但,检索速度提高。

文件目录的改进

将FCB分解为:

1.符号目录项

2.基本目录项

符号目录项 包含文件名,以及相应的文件号;

基本目录项 包含了 除文件名外  文件控制块的其他全部信息。

目录操作

CREATE,创建目录

新创建目录中,除了目录项 . 和 .. 外,目录内容是空的。

DELETE,删除目录

只有当一个目录为空时,才可删除。

即 只有  .  和 ..

OPENDIR,打开目录

列出目录中的全部文件,程序 须 先打开 该目录,然后读取其中全部文件的文件名。

同打开和读文件相同, 读目录之前 必须先打开目录。

CLOSEDIR,关闭目录

读目录结束后,关闭目录以 释放内存空间

READDIR

系统调用,用于返回打开目录的下一目录项。

RENAME

文件可换名,目录也可换名。

LINK

链接技术,允许多个目录中 出现同一文件。

UNLINK,删除目录项

  1. 文件系统的实现

存储空间的分配与回收

动态跟踪 外存设备上 所有还没有分配给 任何文件的空闲块的数目 和 块号。

通常把 空闲登记表 放在存储介质上。  对空闲空间登记表的访问与修改工作时经常发生的。

位示图

基本思想

利用 一串 二进制位  的值  来反映  磁盘空间的分配使用情况。

优点

分配情况描述能力强

占用空间小,可以复制到内存,查找快捷又方便

适用于各种物理结构的文件系统

简单有效的找到连续空闲块

空闲块表

概念

记录外存 中全部空闲的物理快,  包括每个空闲块的第一个 空闲物理块号 和 该空闲块中 空闲物理快的个数。

创建文件

寻找一组连续的空闲物理块,其空闲块 个数 恰好等于 或 接近于所申请值。

查看该空闲块表项中,是否又符合的对应表项,有,则将之从空闲块表删去,将 对应的空闲物理块 分配给申请者。

删除文件

系统收回该文件所占用的物理块, 并且 考虑所收回的物理快 是否可以与原有空闲块相邻接,以便合并成更大的空闲区域。

空闲块链表

概念

将外存 所有物理块 连成 一个链表,用一个空闲块 首指针 指向第一个空闲块,随后的每个空闲块 都有 指向下一个空闲块的指针。

操作

对空间的申请和释放 以块 为单位。  申请空间时 从 链首取空闲块, 空间释放时 将 物理块 接入链尾。

优缺点

节省内存;

但是,申请空间 和 回收空间的速度较慢,实现效率较低。

成组链接

概念

将 n个空闲块的 地址 存放在第一个空闲块中。  每块的第一块 块号 存放上一组的最后一块的块号。

操作

系统初始化时,先把专用块 内容读到 内存中,当需 分配 空闲块时,就直接在内存中 找到哪些块时空闲的,每分配一块后,把空闲块数减一。

分配和回收算法

分配一个空闲块

归还一块

优点

比普通的链接方式效率高,能够迅速找到大量空闲盘块地址。

有些版本的 UNIX 操作系统 采用了这种方案。

实现文件系统的表目

当用户申请打开一个文件时, 系统要在 内存中 为该用户 保存一些必要的信息,这些信息以表格栏目 中内容的 形式出现,被称为表目。

系统打开文件表

专门用于 保存已打开文件的 文件控制块。 存放在内存中

属性有: FCB主部,文件号,共享计数,修改标识;

用户打开文件表

每个进程中  都有一个  用户打开文件表。

表属性有:

文件描述符,打开方式,读写指针,系统打开文件表入口。

系统打开文件表与用户打开文件表之间的关系

用户打开文件表 指向了 系统打开文件表。

若 多个进程 共享 同一个文件,则一定有多个用户打开文件表目  对应着 系统打开文件表的同一入口。

记录的成组与分解

记录的成组

概念

把若干个逻辑记录 合成一组  存放在一个物理块的工作,称为 记录的成组, 每块中的逻辑记录数  称为 块因子。

记录的成组  在不同存储介质上 进行信息转储  时很有用的。

缓冲区

信息的交换以块为单位,所以进行成组操作时,必须使用内存的缓冲区。

该缓冲区的长度 等于要进行 成组的 最大逻辑记录长度  乘以  组的块因子。

优点

提高了存储空间的利用率;

减少了启动外部设备的次数;

提高了系统的工作效率。

格式

定长记录格式

除最后一块外,每块的中存放的逻辑记录个数 是相同的。

不定长记录格式

每块的 逻辑记录长度可能不相等, 进行记录成组操作时,应在 每个逻辑记录前 附加说明  该记录长度的 控制信息。

记录的分解

概念

从一组逻辑记录中,把一个逻辑记录分离出来的操作。

操作

分解也需要 使用内存缓冲区。

文件系统首先 找出该记录所在物理块的位置,然后把含有该记录的物理块的全部信息读入内存缓冲区。再从内存缓冲区中 分解出指定的记录,送传到用户工作区。

格式

定长记录格式

只要知道逻辑记录的长度 就可容易地进行分解。

不定长记录格式

根据 说明 逻辑记录的 长度控制信息,计算出用户 再内存缓冲区的位置,然后分解。

文件的操作

不同的文件系统中,文件的操作和种类是不同的。

建立文件

常见的参数有:

用户名,文件名,存取方式,存储设备类型,记录格式,记录长度等。

系统依据用户提供的文件名  及 若干参数,为该文件分配文件控制块,填写为你教案控制块中的有关项。

实质

实质 是 建立 文件的文件控制块FCB,并建立必要的存储空间,分配空的 FCB,从而建立 系统与文件的联系。

格式

一般格式为: create(文件名,访问权限,最大长度)

步骤

检查参数的合法性

检查同一目录下有无重名

再目录中有无空闲位置

填写目录项内容

包括:

文件名,用户名, 存取权限,长度置零,首地址等。

返回

打开文件

打开文件,是使用文件的第一步,任何一个文件使用前都要先打开,即 把文件控制块 FCB 送到内存。

格式

一般格式为:

fd= open(文件路径名,打开方式)

系统主要完成工作

根据文件路径名 查目录,找到FCB主部

根据 打开方式,共享说明,用户身份检查访问合法性

根据文件号查系统打开文件表,看文件是否已经被打开

若是,共享计数加1.

否则,将外存中 FCB主部信息 填入 系统打开文件表 空表项,共享计数 置为1.

再用户打开文件表中取一空表项,填写打开方式,并指向系统打开文件表对应表项

返回信息: 文件描述符,非负整数,用于以后读写文件

读文件

格式

一般格式为:

read(文件名,文件内位置,要读的长度,内存目的地址)

系统主要完成工作

检查长度是否为正整数

根据文件名查找目录,确定该文件在目录中的位置

检查读权限

检查是否超过读长度

根据参数中位置,长度和目录映射信息,确定物理块号,需要读出的块数等读盘参数

参数准备完毕后,进行物理的读盘操作

根据下一块号,读块至内存缓冲区

取出要读的内容,也许要尽心成组的分解,将取出的内容送至参数中的内存目的地址

根据块长度,确定是否读下一块

正常返回

写文件

格式

一般格式为: write(文件名,记录键,内存位置)

系统完成的操作

把内存中指定单元的数据 作为 指定的一个记录 写入指定文件中,系统将为其 分配物理块,以便把记录信息写到 外存上。

关闭文件

删除文件

指针定位

格式

一般格式为:

seek(fd,新指针的位置)

系统完成的工作

由 fd 检查用户打开文件表,找到对应的入口

将用户打开文件表中  文件读写位置  设为新指针的位置

  1. 文件的保护和安全

文件的共享

指 一个文件可以允许多个用户共同使用。

共享文件使用情况

共享时间段来看

文件可以同时使用

允许多个用户 同时使用同一个共享文件,但系统必须对该共享文件实施 同步控制。

文件不允许同时使用

任意时刻只允许 一个用户使用共享文件。

即不允许两个 或 两个以上的用户同时打开一个文件。

共享的具体方式来看

文件被多个用户使用,由存取权限控制

文件被多个程序使用,分别用自己的读写指针

文件被多个程序使用,但共享读写指针

共享技术

多级目录结构中,链接法 是常用的 使用文件共享技术。

允许目录项链接到任一表示文件目录的结点上

表示可共享所链接的目录 及其  各个子目录所包含的全部文件。

可能会因 使用不当,造成环路链接,对控制和维护造成困难。

只允许链接到表示普通文件的结点上

只允许对单个普通文件进行链接,从而可以通过不同路径访问同一个文件。

文件的保护

计算机系统中的文件是非常脆弱的。

建立副本

适用于 短小 且 极为重要的文件。

定时转储

含义

每隔一定的时间,就把文件 转储 到其他的 存储介质上。

分类

转储内容来分

增量转储

全量转储

转储方式来分

物理转储

从磁盘的第0块开始,将全部磁盘块 按序列输出到另一介质上。

逻辑转储

从一个 或 几个 指定的目录开始,递归地 转储  自 给定日期后,有所更改的全部文件和目录。

规定文件的存取权限

采用树形目录结构

凡能 得到 某级 目录的用户 就可得到 该级 目录 所属的全部目录 和文件。

存取控制表

列出每个用户 对 每个文件 或 子目录的存取权限。

验证用户的步骤

审定用户的存取权限;

比较用户权限的本次存取要求 是否和 用户的 存取权限一致。

将用户的存取要求 和 被访问文件的存取控制表 进行比较,看是否由冲突。

文件的存取权限

存取控制矩阵

概念

以 一个二位矩阵  来实施文件的存取控制。

一维 代表所有的用户;

一维 代表所有的文件;

RWE 分别表示  读,写,执行

存取控制验证模块

当用户 向 文件系统 提出存取要求时,由 存取控制验证模块 进行比较放行。

优点

概念简单,实现容易。

缺点

占用太多内存空间;

扫描时,时间开销较多;

二级存取控制

第一级

把用户  按某种关系 划分为 若干用户组,进行对访问者的识别。

第二级

进行对操作权限的识别。

UNIX中的文件存取权限

存取权限分级

第一级 对访问者 或 用户 进行分类识别

第二级 对文件操作 格局不同的操作内容进行权限设定

文件权限设置

对 文件属主,组,和其他用户 分别由三种权限设置。  因此每个文件 共有 九个权限参数。

文件属性的表示

UNIX系统内部 使用数值 来表示文件属性,每一个属性与文件属性中的一个二进制位相对应。

在UNIX中 常使用 八进制的形式表示。

文件权限的修改

UNIX中,文件的属主 和 管理员 可以使用  命令 chmod来设置 或 改变文件的权限。

文件的保密

保密的目的是:  防止不经文件拥有者 授权 而窃取文件。

隐藏文件目录

被隐藏的保密文件的文件目录,不再显示器上显示。

设置口令

建立文件时,把口令存放在文件目录中。   用户使用文件时,必须提供口令才可使用。

在显示文件目录时,应把口令隐藏起来。

使用密码

对极少数极为重要的保密文件,可把文件信息加密,转换成密码形式保存。 使用时再将其解密。

  1. 文件系统的性能

设计文件系统,应尽可能减少磁盘访问次数。

块高速缓存

基本思想

系统再内存中保存一些磁盘块,这些磁盘块再逻辑上属于磁盘,这一区域被称为高速缓存。

如果内存中的高速缓存已满,则需要按照一定的淘汰算法 淘汰一些较少使用的磁盘块。

文件系统一致性问题

块高速缓存的内容需要定期写回到磁盘上,以保存对磁盘块的修改。

若这个过程出现故障,则文件系统可能会出现不一致状态。

合理分配磁盘空间

磁盘空间分配块时,应把可能顺序存取的块放在一起,最好再同一柱面上。

磁盘的驱动调度

移臂调动

根据访问者 指定的柱面位置来决定执行次序的调度。

目的是 尽可能第减少操作中的寻找时间。

先来先服务调度算法

按照请求的次序为各个进程服务,是最公平 又 最简单的算法。

但是效率不高。

最短寻道时间优先调度算法

以寻道优化为出发点,优先 为距离磁头 当前所在位置最近磁道 的访问请求服务。

缺点是 缺乏公平性。

扫描算法

又称为 电梯算法。

该算法既考虑 距离,也考虑方向,且以方向优先。

对中间磁道有偏好。

循环扫描算法

当 磁头从外道  移向 内道 时,如果经过的磁道有访问请求,则为其服务。 从内到外,同理。

该算法具有较好的公平性。

旋转调度

对同一柱面中,多个访问者的读写请求,需要有调度算法,来确定这些访问等待者服务的次序。

若干访问等待者请求访问同一磁道上的不同扇区

总是首先为到达读写磁头位置下的扇区进行读写操作。

若干访问等待者请求访问不同磁道上的不同编号的扇区

总是首先为到达读写磁头位置下的扇区进行读写操作。

若干访问等待者请求访问不同磁道上的具有相同编号的扇区

旋转调度可任意选择一个读写磁头进行读写操作。

信息的优化分布

记录在磁道上的排列方式,也会影响 磁盘的输入输出操作的时间。

优化分布有利于减少延迟时间,从而缩短整个输入输出操作的时间。

RAID技术

设计思想

把多个磁盘组织在一起,作为一个逻辑卷 提供磁盘跨越功能。

把数据分成多个数据块,并行读写多个磁盘 。  称为 数据分条。

通过磁盘镜像 或 校验操作,提供容错能力。

结构

RAID0

多个磁盘并行以提高读写速度。

RAID1

采用磁盘镜像的方法来提高存储的可靠性

RAID2 & RAID3

以块 或 字节 作为并行单位

RAID4

并行单位是块,并加入了校验码。

RAID5

与 4相同,但是校验码 以块 为单位,与数据块一起随机存放在磁盘块中。

  1. Windows的FAT文件系统和UNIX文件系统

Windows的FAT文件系统

FAT文件系统简介

File Allocation Table 的缩写。  最初为DOS操作系统设计。

适用于小容量的磁盘,具有简单的目录结构。

FAT总共有三个版本: FAT-12,FAT-16 和 FAT-32。  取决于用多少位 表示磁盘地址。

FAT文件系统结构

文件分配表  位于卷的开头,为了防止文件系统遭到破坏,文件系统保存了两个文件分配表。

文件分配表 和根目录 必须存放在磁盘上 一个固定的位置 。

引导扇区

包含用于描述卷的各种信息,利用这些信息才可以访问文件系统。

文件分配表

根目录

根目录与其他目录之间的唯一区别是: 根目录 位于磁盘上一个特殊的位置,并且具有固定的大小。

内容包括:  文件名,扩展名,属性字节,最后修改时间和日期,文件长度,第一簇的编号等。

UNIX文件系统

V7文件系统, 是位 PDP-11创建的一个文件系统。

I结点

UNIX普通文件的物理结构是 三级索引结构。

I节点的属性包括:

三个时间点,所有者,所在组,保护信息 以及一个计数(用于记录指向I 结点的目录项的数量)。

文件名查找

绝对路径查找

文件系统定位根目录

UNIX中,根目录的I结点 存放于 磁盘上固定的位置。  从该I结点,系统可以定位根目录。

查找分量

由 I结点号 来定位 I 节点 是很直接的,因为每个I 节点在磁盘上都有固定的位置。

相对路径的查找

  1. I/O管理

    1. 设备与设备分类

I/O也称为 外设,包括计算机系统中 除 CPU 和内存 以外 的所有设备和装置。

狭义的 I/O设备 不包括外存。

设备管理的重要性

是 操作系统总体性能的 重要决定因素,重要指标 和 常见瓶颈。

I/O设备 是操作系统 管理的四大类资源之一。

设备管理的任务

I/O设备的性能 经常 成为系统性能的瓶颈

I/O设备的统一管理

接口化,具有设备独立性。

用户对I/O设备的使用必须是安全的

设备的分类

设备使用特性分

I/O设备

常见IO

常见的输入设备有:

键盘,鼠标等

常见的输出设备有:

显示器,打印机等。

采集和控制应用

如 传感器,传动器,模数转换器,数模转换器等。

数据通信设备

如: 调制解调器,网络适配器(网络接口卡)。

存储设备

如磁带,磁盘,光盘,U盘等

设备的信息组织方式

并不是所有的设备都能完全归入这里面的某一类,有些设备不进行 IO操作。

字符设备

键盘,终端,打印机等 以 字符 为单位组织 和处理信息 的设备  被称为 字符设备。

不可寻址,因此没有任何寻址操作。

块设备

磁盘,磁带 等  以 数据块 为单位组织 和处理信息的设备  被称为 块设备。

设备的共享属性

共享设备

指 在同一段时间内,允许多个进程使用的设备,磁盘是典型的共享设备。

独占设备

指 在一段时间内,只允许一个进程使用的设备。

独占设备的使用效率低,是造成死锁的条件之一。

虚拟设备

指  利用虚拟计数,把独占设备 改造成可由多个进程共享的设备。

SPOOLing 系统 是一种非常重要的虚拟设备技术。

  1. I/O硬件组成

计算机I/O系统的结构

操作系统并不直接与设备本身打交道,而是与设备控制器打交道。

即 操作系统 通过 对设备控制器中的寄存器 进行读写操作 与 设备交换数据 。

设备控制器

每个设备控制器都有若干个 寄存器用于 CPU通信,包括 控制寄存器,状态寄存器,数据寄存器。

通过控制寄存器,操作系统可以控制设备发送数据,接收数据,开启或 关闭;

通过状态寄存器,操作系统可以获悉设备的状态,如是否准备好接收新的数据;

数据寄存器 通常作为操作系统可以读写的数据缓冲区。

I/O端口地址

为了使 CPU 能够访问 设备控制器的寄存器,为每个寄存器 分配唯一的地址,称为I/O端口号。

内存映射编址

将系统中所有端口的地址空间 与内存 地址空间统一编址,将设备控制器中的寄存器看作一个存储单元,与对存储器操作等价。

大部分处理器采用 内存映射IO

I/O独立编址

采用 I/O独立编址的CPU 需要 使用专门的IO指令,对I/O端口进行操作。

I/O设备数据传送控制方式

程序直接控制方式

概念

也称 PIO,程控IO方式,是指 由用户进程直接控制内存  或  CPU  和外围是设备 之间进行信息传送的方式。

也称  忙-等 方式,轮询方式,或 循环测试方式。

操作

用户进程需要从外围设备输入数据时,通过 CPU 发出启动设备准备数据的启动命令。

然后用户进程进入测试等待状态;

在等待时间,CPU不断测试 设备的状态寄存器是否完成。 外围设备 只有将数据送入到数据缓冲寄存器之后,才将该寄存器置为完成状态。

CPU 检测到完成状态后,就从 设备的数据缓冲寄存器中 读取数据到内存 或 CPU。

优点

CPU 和外设 的操作  通过状态信息 得到同步,而且硬件结构比较简单。

缺点

CPU效率较低。

传输完全在CPU 控制之下完成,对外部的异常事件无实时响应能力。

适用于 CPU 执行速度慢,外围设备较少的系统,如单片机系统。

中断控制方式

基本概念

终端源一旦需要CPU 为其服务时,就像CPU 发出请求,CPU 一般在 当前指令执行完,且状态为 允许中断的情况下 响应该请求。

优点

有效地提高了计算机的效率

具有实时响应能力

提高计算机的可靠性

中断机构

设备控制器应具备的功能:

寄存外设中断请求的能力,可屏蔽本级中断请求的能力。

中断控制方式的处理过程

1.CPU通过数据总线发出命令,启动外设工作,当前进程阻塞,调度程序调度其他进程。

2.外设数据准备好,置为中断请求触发器;

3.若接口的中断屏蔽触发器为非屏蔽状态,则向CPU 发出 中断请求。

4.CPU 接受中断请求,且为允许中断状态,则中断判优电路工作;

5.中断判优第阿奴 对优先级最高的中断请求 给与响应。

DMA方式

基本概念

直接内存访问的缩写,是 一种 完全由硬件执行 I/O 数据交换的工作方式。

DMA控制器  从  CPU 完全接管对总线的控制,数据交换不经过CPU ,而 直接 在内存和I/O 设备之间进行。

传送过程

预处理阶段

由 CPU 执行 I/O 指令 ,对 DMA控制器 初始化与启动。

数据传送阶段

由 DMA控制器 控制总线 进行数据传输。

后处理阶段

发送结束,DMA控制器向 CPU 发 中断请求,报告 DMA操作结束。

优点

操作均由硬件电路实现,传输速度块;

CPU 仅在 初始化和结束时参与,减少了CPU的开销;

CPU 与外设并行工作,效率高。

局限性

在初始化 和结束时 仍由 CPU 控制。

通道控制方式

基本概念

一个特殊功能的处理器,有自己的指令和程序,可以实现对外围设备的统一管理 和外围设备 与内存之间的数据传送。

优点

增加了CPU与通道并行工作能力;

增加了 通道之间的 与各 设备之间的并行能力。

提供了灵活增加外设的可能性。

分类

选择通道

物理上 连接多个设备。 是一种高速通道,某一段事件内通道内,只能选择一个设备进行工作。

数组多路通道

当某个设备进行数据传输时,通道只为该设备服务。  当设备在执行寻址等控制性动作时,通道暂时断开与这个设备的连接,去为其他设备服务。

字节多路通道

一种简单的共享通道,在分时的基础上 为多台 低速 和 中速 设备服务。

它的特点时,各设备轮流占用一个很短的时间片。

功能

接受CPU 指令,与外设进行通信;

从内存中读取属于该通道的指令,并执行通道程序。

组织外围设备和内存之间进行数据通信。

读取设备的状态信息至内存,共CPU 使用;

将中断请求  按序 及时 报告CPU 。

  1. I/O软件的特点及结构

I/O软件的 最关键目标是:  设备独立性。

大致抽象结构:

用户空间软件;

与设备无关的系统软件;

设备驱动程序;

中断处理程序;

硬件。

设备驱动程序

直接同硬件打交道的 软件模块,设备驱动程序中包括了所有与设备相关的代码。

一般而言,设备驱动程序的功能是:  从与设备无关的软件中 接收抽象的请求,并进行与设备相关处理。

设备驱动程序的特点

最突出特点是: 它与I/O设备的硬件结构密切联系。

设备驱动程序 是 操作系统底层中,唯一知道各种输入输出设备的 控制器细节 及其用途的部分。

设备驱动程序的结构

通常,一个设备驱动程序 对应处理一种 设备类型, 或者 至多 一类密切联系着的设备。

对一类设备而言,若首先考虑 设备的便利性,则 考虑  通用驱动装置;    若优先考虑 运行效率,则 考虑 专用驱动装置。

设备驱动程序的工作过程

接收请求

对于磁盘驱动程序, 一条典型的请求是 读  第 n块。

如请求到来时,驱动程序空闲,则立即执行;  否则将该请求挂在一个等待队列。

转换请求

执行  I/O请求的第一步, 是  将请求转换为 更具体的形式,即 必须确定 需要哪些控制器命令 以及  命令 的执行 次序。

写入命令

一旦决定 应向控制器 发送什么 命令,驱动程序 将向 控制器的设备 寄存器 中写入这些命令。

数据传送

驱动阻塞

驱动程序  需等待控制器 完成一些操作,驱动程序阻塞,直到中断信号到达 才解除阻塞。

驱动无需阻塞

操作没有任何延迟,驱动程序 无需阻塞。

处理结束

数据传送结束后, 驱动程序 将向 调用者 返回一些 关于 错误报告的状态信息。

如请求队列有别的请求,则 选中一个处理, 否则阻塞,等待下一个请求。

与设备无关的系统软件

一般而言,所有设备 都需要的I/O功能,可在 设备独立的软件中实现。

这类软件 面向应用层, 并提供一个统一的接口。

统一命名

对 I/O设备 采用了 与文件统一命名的方法, 即 采用文件系统 路径名的方法 命名设备。

与设备独立的软件 负责 把 设备的符号名  映射到响应的设备驱动程序上。

设备保护

设备保护 是与 设备 命名的机制 密切相关的。

提供与设备无关的逻辑块

I/O设备中,有不同的存储设备,空间大小,读取速度,传输速录等各不相同。  与设备无关软件 向 上层 提供大小统一的呃逻辑快尺寸。

缓冲

块设备

硬件一般 一次 读写一个完整的块,而用户进程  是 按任意单位 读写数据。

若用户进程 只写了半块数据,则操作系统通常 将数据保存在 缓冲中,直到整块数据被写完 才写到磁盘上。

字符设备

用户进程 把 数据写到 设备的速度  快于  系统输出数据的 速度时,必须使用缓冲。

存储设备的块分配

查找一个空闲块的算法  是 与设备无关的, 因此可以放在 设备驱动程序上面的  与设备独立的软件层处理。

独占设备的分配和释放

一个简单的处理这些请求的方法是, 要求进程直接通过  OPEN 打开设备的特殊文件 来提出请求。

出错处理

大多数错误是与设备密切相关的,因此只有驱动程序知道如何处理。

但 也有一些  典型的错误 不是 输入输出设备错误造成的,驱动设备需重读一定次数,若仍有错误,则放弃重读 并通知与设备无关软件。

用户空间的I/O软件

系统调用

通常的系统调用, 包括I/O系统调用,通常先是  库函数实现。

通常 库函数 所作的工作  主要 是 把系统调用时 所用的参数 放在合适的位置, 由  其他 I/O 过程 去实现真正的操作。

标准的I/O库 包含了 许多涉及  I/O的过程,它们 都是作为用户程序的一部分运行的。

SPOOLing 系统

SPOOLing 系统 是另一种重要的处理方法,是操作系统中 处理独占设备的一种方法。

打印机应用举例

问题:

一台行式打印机,一个进程打开了它,长时间不用。  会导致 其他进程都无法使用这个打印机进行打印。

解决方法:

创建一个 特殊进程(守护进程: Daemon) , 一个  特殊目录(SPOOLing目录)。   一个进程要打印文件,首先生成打印的整个文件,将其放在 SPOOLing 目录下。  由守护进程完成该目录的打印工作。

守护进程 是 唯一一个 拥有 使用该 打印机特殊文件权限的进程。

  1. 典型的I/O技术

缓冲技术

缓冲技术的引入

缓冲存储区

局限性

以空间换取时间,而且只能在 设备使用不均衡时,起到平滑作用。

如果 一段时间内,进程提出的 I/O总量,超过了 相应设备 不间断工作所能完成的总量,则多缓存的作用也基本消失 。

缓冲区的设备与管理

缓冲区技术

凡是 数据到达速度 和离去速度 不匹配 的地方,都已通过设置缓冲区,缓解矛盾。

缓冲区的实现

硬件实现

由硬件实现,称为 硬缓冲,如 打印机。

软件实现

在 内存空间中 开辟 专用于 数据传输过程中 暂存数据的区域。

软件缓冲技术分类

单缓冲

输入时,通道先将数据送入缓冲区,CPU 从缓冲区读取数据处理。 输出正好相反。

缓冲区属于互斥区,因此不能明显改善 CPU与外部设备的并行性。

双缓冲

分别设置 输入缓冲区  和输出缓冲区, CPU 和 通道  可以分别 同时 访问两个缓冲区。

多缓冲

设置一组 输入缓冲区  和 一组 输出缓冲区。

缓冲池

由于 缓冲区 属于系统中的重要资源, 为了提高利用率,一般将系统中的 所有缓冲区集中统一管理,构成 缓冲池 。

设备分配技术

设备分配算法的数据结构

系统设备表 SDT

System Device Table.

SDT表 在整个系统中只有一张, 全面反映了 系统中的 外设资源的类型,数量,占用情况等。

每个接入系统中的 外围设备  都占有  该表的一个  表目项。

设备控制表 DCT

Device Control Table.

系统中的每台设备,都有一张设备控制表。

保存了 与该设备 相连的 设备控制器的入口位置。

控制器控制表 COCT

COntroller Control Table.

每个控制器 都有一张  控制器控制表,用于登记  某控制器 的使用分配情况 及  与该控制器 相连的通道的情况。

通道控制表 CHCT

CHannel Control  Table

CHCT 表 反映了 通道的情况, 系统中的每个通道 都有一张 CHCT。

设备分配的原则

考虑设备的特性和安全性

设备分配策略

先来先服务策略

高优先级优先策略

独占设备的分配

申请命令

使用命令

释放命令

共享设备的分配

虚拟设备

虚拟设备技术

实现这一系统的软硬件系统 称为 SPOOLing

SimuhaneOUS Peripheral Operation on lane:   外围设备同时联机操作 系统。

工作原理

见 用户空间的I/O系统。

优点

由于磁盘是共享的, 利用缓存 将独占设备,改造成了共享设备,从而提高利用率。

  1. I/O性能问题及解决方案小结

缓冲技术

减少 或者 缓解 不同设备之间 传输速度的差距。

异步I/O技术

使CPU 计算不必等待 I/O操作结果。

DMA和通道部件

使CPU 摆脱 I/O操作, 与这些部件并行执行。

虚拟设备技术

提高独占设备的利用率 。

  1. 死锁

    1. 死锁的基本概念

死锁的概念

死锁

概念

指 在多道程序系统中,一组进程的每一个进程均 无限期地 等待被 该组进程中的另一个进程 占有 并且永远不会释放的资源。

称为死锁状态。

处于状态的 进程 称为  死锁进程。

后果

一旦一个进程进入死锁状态,那么与之 合作的进程 ,就会相继陷入 死锁状态。

活锁与饥饿

活锁

两个进程需要两种两种资源,利用 轮询原语 去  尝试取得 必要的锁,如失败,就继续尝试。

如这两进程互相依赖资源,则两个进程既没有进展,也不会阻塞,而是消耗掉分配给它们的时间片。

没有出现死锁现象,(因为没有进程阻塞),但是从现象上看,好像死锁发生了, 这就是活锁。

饥饿

饥饿现象

某个进程 “永远” 也得不到资源, 该进程就会  “饥饿而死”。  尽管它没有被阻塞,但 被无限推后。

解决办法

通过现来先服务资源分配策略避免。

死锁产生的原因

1. 竞争资源,资源有限,不能满足每个进程的需求;

2. 多道程序运行时,进程推进不合理。

资源的概念

永久性资源 和 临时资源  都可能导致死锁发生;

永久性资源

可供进程重复使用,长期存在的资源,如内存,外部设备,CPU等硬件资源

临时性资源

指 由 某个进程产生,只为 另一个进程 使用一次,或经过 短暂时间后,便不再使用的资源,如 I/O 和时钟中断,同步信号,消息等;

死锁的例子

申请不同类资源产生死锁

申请同类资源产生死锁

P,V操作使用不当产生死锁

对临时性资源的使用不加限制而引起的死锁

如 进程通信 所使用的信件

产生死锁的必要条件

互斥条件

资源是独占的  且 排他 使用。

不可剥夺条件

又 称  不可抢占  或 不可强占。

请求和保持条件

又称 部分分配 或 占有分配,指 申请 新的资源的同时,继续占用已分配的资源。

循环等待条件

又称 环路等待。

解决死锁的方法

鸵鸟算法

忽视死锁问题,这是因为考虑死锁带来的危害  与解决死锁 所花费的代价几乎一样。

预防死锁

通过设置 某些严格限制,破坏死锁的条件(除 互斥性 之外的条件),以防止死锁发生。

避免死锁

以较弱的限制条件,防止系统进入不安全状态,从而避免死锁发生。

检测死锁

允许发生死锁。  通过检测机构,及时发现死锁,并能够 精确定位 与死锁有关的进程 和资源。

解除死锁

与死锁检测相配套的措施。

  1. 死锁预防

破坏互斥条件

如果资源不被一个资源独占,那么死锁肯定不会发生。

但是有些独占资源同时允许两个进程使用,可能会造成混乱。   可以 通过  SPOOLing 技术,实现假脱机。

破坏不可剥夺条件

概念

一个进程在 申请 新资源的要求 不能立即 得到满足时,便处于等待状态。  而一个处于 等待状态 的进程 全部资源可以被剥夺。

实施方案

1. 进程申请资源时,首先检查是否可用,可用就分配;

2.否则,检查这些资源是否可被分配给另外某个等待进程。  若是,则剥夺所需资源,分配本进程;

3.若资源没有被等待进程占有,则该进程必须等待。

使用范围

状态容易保存 和恢复的资源, 如 CPU,内存。

缺点

实现复杂,代价太大;

极端情况下,可能反复申请和释放资源,使进程执行无限推迟。

破坏 请求和保持条件

采用静态分配策略

原理

每个进程在开始前,就申请它 所需要的全部资源,仅当系统能满足进程的资源申请要求,且把资源一次性分配给进程后,进程才能开始执行。

优点

简单,安全,容易实施。

缺点

严重浪费系统资源;

有些进程长期占用资源,导致其他进程推迟,甚至得不到运行。

进程没有占用资源时,才允许申请资源

原理

若 有资源占用了某些资源,又去申请资源,则它应该归还所占的资源后,再申请新的资源。

优点

不会出现占有了部分资源,再等待其他资源的现象。

缺点

资源利用率低;

仍会使进程处于等待状态。

破坏 循环等待 条件

基本思想

采用资源有序分配策略,基本思想是,将系统中所有资源顺序编号。

一般原则是: 较为紧缺,较少的资源编号较大;

一个进程只有得到编号小的资源,才能申请编号较大的资源。

缺点

硬性规定申请资源的方法,会给用户编程带来限制;

合理编号是一个难事,同时添加新设备不方便灵活;

当有进程违反规定,仍会发生死锁;

为遵守规定,暂不需要的资源也要提前申请,会造成资源的浪费。

  1. 死锁避免

基本思想

系统对每一个进程发出的每一个系统 能够满足的 资源申请 进行动态检查,并根据检查结果决定是否分配资源。

如果分配后可能会发生死锁,则不予分配。

死锁避免和死锁预防

死锁预防  是 设法减少产生死锁的四个必要条件之一,严格地防止死锁的出现;

死锁避免  是在系统 运行过程中 注意避免死锁的最终发生。

安全与不安全状态

安全状态

概念

如 存在一个 有系统中所有进程 构成的 安全序列:  p1...pn,  则系统处于安全状态。

对于其中的每一个进程,若它 以后需要的资源量 不超过 系统当前剩余资源量 与当前占有资源量之和,就不会发生死锁。

应用

只要系统能够处于安全状态,就可避免死锁的发生。

当进程申请资源时,可以分析当前的资源总量,以确定是否分配资源。

不安全状态

如系统中 不存在 任何一个安全序列, 则系统处于不安全状态。

银行家算法

数据结构

可使用资源向量 Available

一个具有  m个  元素的数组,其中,每个元素 代表一类可使用资源的数目。

最大需求矩阵 Max

一个 n*m 的矩阵, 定义了 系统中 n个进程中 每个进程 对m类资源的 最大需求。

分配矩阵 Allocation

一个  n*m  矩阵,定义了系统中每类资源 当前已分配给一个进程的资源数。

需求矩阵 Need

一个  n*m 矩阵,用以 表示每一个进程 尚需 的各类资源数目。

工作向量 Work

具有 m个元素的数组,每一个元素代表 系统可提供给 进程 继续运行所需的各类资源数目 。

状态标识 Finish

n个元素的数组,每一个元素表示 进程 已获得足够的资源 可以执行完毕 并能释放全部获得资源的状态。

进程申请资源向量 Request

算法介绍

银行家算法

安全性算法

优点

确保系统处于安全状态时,才把资源分配给申请者,避免了发生死锁;

缺点

系统运行期间实施,要花费相当多的时间;

要求每类资源的数量固定不变,并i企鹅 必须知道资源的最大需求量,这难以做到;

不安全状态  并非 一定 是  死锁状态。

  1. 死锁检测与解除

死锁检测

检测死锁的实质是,确定是否存在循环等待条件。

一种死锁检测机制

为每个进程和资源 指定唯一的编号;

设置一张资源分配状态表;

设置一张进程等待分配表;

死锁检测算法: 当 任一进程  申请 一个 已被其他进程占用的资源时,进行死锁检测。

举例

死锁解除

剥夺资源

原理

使用  挂起/激活 机制, 挂起一些进程,剥夺它们占有的资源给死锁进程。待 满足条件时,再激活被挂起的进程 。

操作

剥夺的顺序 可以是  以花费最小的资源数 为依据。

还原算法

即  恢复计算结果 和状态。

建立检查点

主要用来恢复分配前的状态。

撤销进程

原理

撤销死锁进程,将它们占有的资源  分配给另一些死锁进程,直到死锁解除为止。

撤销进程选择

进程优先数

进程类的外部代价

不同类型的进程 可以规定出  各自的撤销代价。

运行代价

即 重新启动进程,并运行到当前撤销点 所需要的代价 。

基本方法的结合

基本思想

将死锁解除的两类方法相结合。

资源分级

内部资源: 由系统使用,如 PCB表;

内存: 由用户作业使用;

作业资源: 指  可分配的设备和文件;

对换空间: 指每个用户作业在负主存储器上的空间。

  1. 资源分配图

一种有向图,用于描述系统中资源 和进程的和状态。

死锁的表示-资源分配图

基本概念

进程的死锁问题 可以用 有向图 更加准确 而形象地描述,这种有向图 称为 资源分配图。

进程和资源在有向图中的表示

圆圈表示进程,方框表示 每类资源。

死锁判定法则

定理内容

如果资源分配图中没有环路,则系统中没有死锁

如果资源分配图中出现了环路,则系统中可能存在死锁。

环路和死锁的关系

如环路中,每个资源只包含一个资源实例,则 环路存在 意味着死锁存在。

资源分配图化简法

1.在资源分配图中,找出一个  非等待,非孤立的结点  Pi, 消去 它的所有申请边  和 分配边;

2.将释放的资源  分配给申请它们的进程,即将申请 边  改为分配边。

重复1,2

若能消去所有边,则可完全化简;  否则 为不可化简。

死锁的充分条件是: 当且仅当 系统的资源分配图 是不可完全化简的。

网络工程师考试-操作系统原理笔记相关推荐

  1. 计算机等级考试四级 网络工程师 之 操作系统原理1 适合懒人备考哈哈哈

    操作系统 第一题 第二题 第三题 第四题 第五题 第六题 第七题 第八题 第九题 第十题 第一题 1 操作系统的结构:早期操作系统是无结构的,也有人把它称为 整体系统结构:模块化结构:分层式结构: 微 ...

  2. 中级网络工程师考试笔记

    中级网络工程师考试笔记 前言 笔记正文 7.局域网技术 前言 根据B站一个教学视频做的笔记,正在持续更新 提示:以下是本篇笔记参考的中级网考视频教程 B站视频链接 笔记正文 7.局域网技术 下方的链接 ...

  3. 2007年下半年软考:网络工程师考试试题分析

    从本次考试的试题及考生对考试的反馈情况来看,2007年下半年(11月)考试的特点是上午试题难度适中,但比上半年的试题难度有所提高.部分试题所提供的选项偏向对概念的考查,选项与选项间很难区分,这要求考生 ...

  4. 2016年软考网络工程师考试命题范围变化之网络设备配置与复习技巧

    从2016年上半年考试开始,软考网络工程师考试中,对下午部分的网络设备:交换机,路由器和防火墙设备不在局限于cisco的ios和pix设备,增加了华为的部分设备的配置.很多学员就感觉考试难度增加,又要 ...

  5. 计算机等级考试初级网络工程师,计算机等级网络工程师考试内容

    计算机等级网络工程师考试内容 考试方式 上机考试,总分50分,与四级其他一门课程合计考试时长90分钟. 包含:单选题30分,多选题20分. 考试合格要求两门科目都必须大于等于30分 考试内容 计算机网 ...

  6. 国家计算机网络工程师考试,计算机四级网络工程师考试内容了解一下!

    计算机四级网络工程师考试内容了解一下! 时间:2018-06-12 10:48:50 全国计算机等级考试,是经原国家教育委员会批准,由教育部考试中心主办,面向社会,用于考查应试人员计算机应用知识与技能 ...

  7. 网络工程师考试复习心得

    转眼间又到了全国计算机技术与软件专业技术资格(水平)考试的时间,作为一名考取网络工程师资格的通过者,笔者想谈谈自己当时的考试感受以及复习方法,仅供参考. 课本+复习指导资料+CCNA+勤奋=成功 其中 ...

  8. 最新网络工程师考试大纲

    最新网络工程师考试大纲[/b] 一.考试说明 1.考试要求: (1)熟悉计算机系统的基础知识: (2)熟悉网络操作系统的基础知识: (3)理解计算机应用系统的设计和开发方法: (4)熟悉数据通信的基础 ...

  9. 2015年四级计算机网络课程,2015年计算机四级网络工程师考试辅导:网络互连技术...

    2015年计算机四级网络工程师考试辅导:网络互连技术 网络互连原理 1.网络互连的要求:在网络之间提供一条链路,至少需要一条物理和链路控制的链路;在不同网络的进程间提供路径选择和传递数据;提供各用户使 ...

最新文章

  1. CAS KVM 虚拟机的保护与恢复
  2. c语言中getc与gets,getc()和gets()的用法
  3. java项目(注册和登录(成功后查看商品的信息))
  4. linux搭建flask环境,Ubuntu 环境下搭建Flask框架
  5. P1460 健康的荷斯坦奶牛 Healthy Holsteins (简单的dfs)
  6. React AntD 表格查看修改时默认选中几行数据
  7. android学习十三(android的通知使用)
  8. java 标识符_java标识符的基础知识
  9. linux内核配置成qspi挂载,【分享】在Linux/U-Boot里为QSPI Flash使用UBIFS
  10. IntelliJ IDEA 配置svn
  11. adobe creative cloud的开机自启如何阻止
  12. Kali-linux :arping命令
  13. 计算机网络---TCP/IP网络编程实验
  14. 7.数据归档(Archiver)
  15. jsp:setProperty的用法
  16. windows 安装应用时 弹出 another installation inprogress.you must complete that installation before continu
  17. 【FLY】Android(12)源码目录结构
  18. Falsy Bouncer 过滤数组假值 Array.filter()方法
  19. 辣子鸡-辣子鸡家常做法
  20. 什么是机器学习?简单理解

热门文章

  1. HNUCM 1544:XP的宝藏
  2. 课程设计每日总结0820
  3. 关于SCSI/SATA/IDE硬盘的比较
  4. NGS项目四:高通量测序在植物生物胁迫研究中的应用
  5. 哥们哥们,人机大战晓得吧玩家对战晓得吧,简易三子棋,呕心沥血500行代码手把手带你制作第一个小游戏,可以保存收藏以后接着看哟,最后有源码哦
  6. 名博是怎样炼成的——读后感
  7. OpenAI 人工智能绘图工具 DALLE 好用吗?
  8. 经济机器是怎么运行的
  9. 微信会员卡开发之微信公众平台的基本配置
  10. php realpath 缓存,PHP的Realpath Cache