本文介绍: 若未越界,则根据段表的始址和该段的段号,计算该段对应段表项的位置,从中读出该段内存的起始地址概念:是对多个相关进程执行次序上进行协调,是并发执行的诸进程之间能按照一定的规则共享系统资源,并能很好地相互合作,从而使进程执行具有可再现性。否则,表示尚无足够资源,Pi等待。② 进程在运行过程中,可以不断地创造可消耗性资源单元,将它们放入该资源类的缓冲区中,以增加该资源类的单元数目;可把系统中的资源分成两类,一类是可抢占性资源,是指某进程在获得这类资源后,该资源可以再被其它进程或系统抢占。

操作系统的目的:

方便性
有效性
扩展性
开放

操作系统的作用:

作为用户计算机硬件系统之间的接口
作为计算机系统资源的管理者
实现了对计算机资源的抽象
多道批处理系统优缺点

资源利用率高
系统吞吐量
平均周转时间
交互能力
分时系统

目标交互性和及时相应
问题:及时接收、及时处理
特征:多路性、独立性、及时性、交互
实时系统

目标快速响应、及时响应
实时系统类型工业控制系统信息查询系统、多媒体系统、嵌入式系统
实时任务类型

周期性实时任务和非周期性实时任务
硬实时任务和软实时任务

实时系统与分时系统比较

多路性
独立性
及时性
交互
可靠性

操作系统基本特征

并发
共享
虚拟
异步

并行性两个多个事件在同一时刻发生

并发两个或多个事件在同一时间间隔内发生

共享:指系统中的资源可供内存中多个并发执行的进程使用互斥共享方式、同时共享方式

虚拟通过某种技术一个物理实体变为若干个逻辑上对应的功能时(时分复用技术、空分复用技术

分时复用技术:使资源的利用提高。他利用设备为一用户服务空闲时间,又转去为其他用户服务,使设备得到最充分的利用

异步:进程是以人们不可预知的速度向前推进

程序执行的两种方式

顺序执行

顺序
封闭性
可再现性

并发执行:

宏观上并行
微观上串行

进程

在系统中能独立运行并作为资源分配基本单位(拥有资源、调度

线程

由进程创建的,它是比进程更小的基本单位

PCB:进程控制

进程的三种基本状态

就绪状态
执行状态
阻塞状态

创建状态和终止状态

1)创建状态:
创建一个进程要经过以下几步:

首先进程申请一个空白PCB,并向PCB中填写用于控制管理进程的信息
然后为该进程分配运行时所必须的资源
最后把该进程转入就绪状态并插入就绪队列
引入创建状态是为了保证进程的调度必须是在创建工作完成之后
2)终止状态:
进程的终止状态有以下两步:

首先,等待操作系统做善后处理
最后将其PCB清零,并将PCB空间返还给系统
当一个进程达到了自然结束点或是出现了无法克服的错误,或是被操作系统终结,则进入终止状态。进入终止状态的进程以后不能再执行,但在操作系统保存状态码和一些计时统计数据供其他进程收集

1.挂起操作引入

1)终端用户需要:当终端用户运行程序期间发现有可疑问题,希望暂停程序运行以便研究其执行情况或做一定的修改
2)父进程请求
3)符合调节的需要
4)操作系统的需要:有时希望挂起某些进程以便检查运行中的资源使用情况或进行记账

2.原语Suspend激活原语Active

分别使用挂起原语Suspend激活原语Active后,在它们的作用下,进程将可能发生以下几种状态的转换

(1) 活动就绪→静止就绪。
(2) 活动阻塞→静止阻塞
(3) 静止就绪→活动就绪。  
(4) 静止阻塞→活动阻塞

具有挂起状态的进程状态图:

具有创建、终止和挂起状态的进程状态图:

增加下面几种情况:
(1)  NULL→创建
(2) 创建→活动就绪
(3) 创建→静止就绪
(4) 执行→终止

进程同步

概念:是对多个相关进程在执行次序上进行协调,是并发执行的诸进程之间能按照一定的规则共享系统资源,并能很好地相互合作,从而使进程的执行具有可再现性

两种形式的制约关系

间接相互制约关系(进程互斥)资源竞争使用

直接相互制约关系(进程同步)有顺序问题

进程互斥:在多道程序环境下,每次只允许一个进程对临界资源进行访问

进程同步:多个相关进程在执行次序上的协调

临界资源

互斥资源(如打印机)不只是硬件资源,也有软件资源,一次仅允许一个进程访问的资源

临界区:在进程中涉及到临界资源的程序段

同步机制应遵循的规则

空闲让进:当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程进入自己的临界区,以有效地利用临界资源
忙则等待:当已有进程进入临界区是,表明临界资源正在被访问,因而其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问
有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界去,以免陷入“死等”状态
让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态
信号量机制

资源数码整型量S
 

wait(S){

while(S<=0);

S–

}

signal(S){

S++;//释放了一个资源

}

经典进程同步问题

生产者消费者问题

信号量(S):拥有的资源总数

通过PV操作,S为正:表示当前剩余的资源数量

S为负:表示其绝对值—当前在等待唤醒的进程数

P:申请资源。批准,资源-1;不批准(无),阻塞调用进程

V:释放资源。资源+1;唤醒等待进程

处理调度的层次:

高级调度作业调度对象作业,从外存中调入内存

低级调度:进程调度,从内存中调度,给它分配CPU

中级调度:提高内存利用率和系统吞吐量

1. 处理机调度算法的共同目标
 (1) 资源利用
 (2) 公平性
 (3) 平衡性
 (4) 策略强制执行
2. 批处理系统的目标
 (1) 平均周转时间短
 (2) 系统吞吐量
 (3) 处理机利用率高
3. 分时系统的目标
 (1) 响应时间快
 (2) 均衡
4. 实时系统的目标
 (1) 截止时间的保证
 (2) 可预测

作业调度算法

先来先服务(FCFS)

每次调度就是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机。该进程一直运行到完成或者发生某事件而阻塞后,进程调度程序才将处理及分配给其他进程

短作业优先(SJF)

以作业的长短来计算优先级,作业越短,优先级越高。

优先级调度算法(PSA)

基于作业的紧迫程度,由外部赋予作业相应的优先级,调度算法是根据改优先级进行调度的

响应比优先调度算法(HRRN)

优先权=(等待时间+要求服务时间)/(要求服务时间)=(响应时间)/(要求服务时间)

死锁

可重用性资源

(1) 每一个可重用性资源中的单元只能分配给一个进程使用,不允许多个进程共享。
(2) 进程在使用可重用性资源时,须按照这样的顺序
 ① 请求资源。如果请求资源失败请求进程将会被阻塞循环等待。
 ② 使用资源。进程对资源进行操作,如用打印机进行打印
  ③ 释放资源。当进程使用完后自己释放资源。
(3) 系统中每一类可重用性资源中的单元数目相对固定的,进程在运行期间既不能创建也不能删除

可消耗性资源

可消耗性资源又称为临时性资源,它是在进程运行期间,由进程动态地创建和消耗的,它具有如下性质:
 ① 每一类可消耗性资源的单元数目在进程运行期间是可以不断变化的,有时它可以有许多,有时可能为0;
 ② 进程在运行过程中,可以不断地创造可消耗性资源的单元,将它们放入该资源类的缓冲区中,以增加该资源类的单元数目
 ③ 进程在运行过程中,可以请求若干个可消耗性资源单元,用于进程自己的消耗,不再将它们返回给该资源类中

可抢占性资源
  可把系统中的资源分成两类,一类是可抢占性资源,是指某进程在获得这类资源后,该资源可以再被其它进程或系统抢占。

不可抢占性资源
  另一类资源是不可抢占性资源,即一旦系统把某资源分配给该进程后,就不能将它强行收回,只能在进程用完后自行释放。
  
产生死锁原因竞争资源,进程推进顺序合理

产生死锁的必要条件

互斥条件
请求和保持条件
不可抢占条件
循环等待

预防死锁

破坏“请求和保持条件”,采用“资源一次性分配” 危害:造成资源浪费
破坏“不剥夺条件”,采用“可剥夺资源”
破坏“环路等待”,采用“资源有序申请
避免死锁银行算法 –Dijkstra

银行算法

数据结构
(1) 可利用资源向量Available
(2) 最大需求矩阵Max
(3) 分配矩阵Allocation
(4) 需求矩阵Need

设Requesti是进程Pi的请求向量,如果Request i[j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查
(1) 如果Request i[j]≤Need[i, j],便转向步骤(2); 否则认为出错,因为它所需要的资源数已超过它所宣布的最大值
(2) 如果Request i[j]≤Available[j],便转向步骤(3); 否则,表示尚无足够资源,Pi须等待。
(3) 系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值

Available[j] = Available[j] - Request i[j];
Allocation[i, j] = Allocation[i, j] + Request i[j];
Need[i, j] = Need[i, j] - Request i[j];
(4) 系统执行安全性算法,检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。

安全性算法

(1) 设置两个向量
工作向量Work,它表示系统可提供给进程继续运行所需的各类资源数目,它含有m元素,在执行安全算法开始时,Work := Available;
② Finish:它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i] := false;当有足够资源分配给进程时,再令Finish[i] := true
(2) 从进程集合中找到一个能满足下述条件的进程:
① Finish[i]=false;
② Need[i, j]≤Work[j];
若找到,执行步骤(3),否则,执行步骤(4)。
(3) 当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:
Work[j] = Work[j]+Allocation[i, j];
Finish[i] =true;
go to step 2;
(4) 如果所有进程的Finish[i]=true都满足,则表示系统处于安全状态;否则,系统处于不安全状态。

基于顺序搜索动态分区分配算法

分页存储管理方式

 页面和物理块
   (1) 页面
   (2) 页面大小

地址结构

前一部分为页号P,后一部分偏移量W,记页内地址。

图中的地址长度为32位,其中011位为页内地址,即每页的大小为4KB;1231位为页号,地址空间最多允许1M页。

给定一个逻辑地址空间中的地址为A,页面大小为L,则页号P和页内地址d可以算:

P=INT[A/L],d=p[A]MOD L

INT是整除函数,MOD是取余函数

设系统页面大小为1KB,设A=2170B,则可以求出:P=2,d=122

页表

每个进程建立一张页面映像

1、页表存放物理块号

2、页表长度=页表项长度*分页个数

3、页表项长度

4、页表项的个数=分页数目

5、分页数目=页号+1

6、物理块=页表起始地址+(页号*页表项长度

EAT:内存的有效访问时间;访问一次内存的时间为t;λ表示查找块表所需的时间;a为命中率

EAT=aλ+(t+λ)(1-a)+t=2t+λ-ta

两级和多级页表

两级页表(Two-Level Page Table)

分段存储管理方式(内存没有进行划分·)

  1. 分段有主程序段MAIN、子程序段X、数据段D及栈段S等

段表

而在分段式存储管理系统中,则是为每个分段分配一个连续的分区。进程中的各个段,可以离散地装入内存中不同的分区中。

地址变换机构
在进行地址变换时,系统将逻辑地址中的段号与段表长度TL进行比较。若S>TL,表示段号太大,是访问越界,于是产生越界中断信号。若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的起始地址。然后,再检查段内地址d是否超过该段的段长SL。若超过,即d>SL,同样发出越界中断信号。若未越界,则将该段的基址d与段内地址相加即可得到要访问的内存物理地址。图4-20示出了分段系统的地址变换过程

分页和分段的主要区别  (1) 页是信息的物理单位。  (2) 页的大小固定且由系统决定。  (3) 分页用户程序地址空间是一维

虚拟存储器定义

内存空间加以扩充,实际容量成为逻辑容量

特征

多次性、对换性、虚拟

虚拟存储器实现方法

分页请求系统:

1.硬件支持
请求分页的页表机制

缺页中断机构
(1) 在指令执行期间产生和处理中断信号
(2) 一条指令在执行期间可能产生多次缺页中断
地址变换机构

2.实现请求分页的件
请求分段系统:
1.硬件支持
请求分段的段表机制
缺段中断机构
地址变换机构

2.软件支持

页面置换算法:

最佳置换算法:其所选择的被淘汰页面将是以后永不使用的,或许是在最长时间内不再被访问的页面

先进先出FIFO页面置换算法:选择在内存中驻留时间最长的页面予以淘汰

LRU置换算法:选择最近最久未使用的页面

栈:栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用页面的页面号

假定现有一进程,它分有五个物理块,所访问的页面的页面号序列为: 

4,7,0,7,1,0,1,2,1,2,6

LFU置换算法:选择在最近时期使用最少的页面作为淘汰页

LRU算法和LFU算法的区别
(1)LRU关键是看页面最后一次被使用到发生调用的时间长短
(2)LFU关键是看一定时间段内页面被使用的频率

原文地址:https://blog.csdn.net/chenyu_Yang/article/details/134748057

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_25638.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注