操作系统,并行性:两个或多个事件在同一时刻发生并发性:两个或多个事件在同一时间间隔内发生 ,就绪状态执行状态阻塞状态

操作系统的目的:

方便性
有效性
可扩展性
开放性

操作系统的作用:

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

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

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

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

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

实时系统与分时系统比较:

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

操作系统的基本特征:

并发
共享
虚拟
异步

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

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

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

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

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

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

程序执行的两种方式:

顺序执行:

顺序性
封闭性
可再现性


并发执行:

宏观上并行
微观上串行

进程

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

线程

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

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关键是看一定时间段内页面被使用的频率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/239354.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux破解用户密码【基于redhat9】

Linux破解用户密码【基于redhat9】 操作步骤&#xff1a; 重启虚拟机&#xff0c;选择第二行&#xff0c;按下e键在倒数第二行的末尾加入 rd.break,按下ctrlx键&#xff0c;进入终端界面重新挂载/sysroot为读写切换到bash修改用户密码创建 /.autorelabel 文件使SELinux安全策略…

SQL Server 2016(为数据表Porducts添加数据)

1、实验环境。 某公司有一台已经安装了SQL Server 2016的服务器&#xff0c;并已经创建了数据库PM。 2、需求描述。 在数据库PM中创建表products&#xff0c;"编号"列的值自动增长并为主键。然后使用T-SQL语句为表格插入如下数据。 3、实验步骤。 1、使用SSMS管理工…

金蝶Apusic应用服务器deployApp接口任意文件上传漏洞复现 [附POC]

文章目录 金蝶Apusic应用服务器deployApp接口任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 金蝶Apusic应用服务器deployApp接口任意文件上传漏洞复现 [附POC] 0x01 前言 免责声明…

Python学习路线 - Python语言基础入门 - 基础语法

Python学习路线 - Python语言基础入门 - 基础语法 字面量什么是字面量常用的值类型字符串 注释注释的作用注释的分类 变量什么是变量变量的特征 数据类型type()语句type()语句的使用方式数据类型转换 标识符什么是标识符标识符命名规则标识符命名规则 - 内容限定标识符命令规则…

vue中中的动画组件使用及如何在vue中使用animate.css

“< Transition >” 是一个内置组件&#xff0c;这意味着它在任意别的组件中都可以被使用&#xff0c;无需注册。它可以将进入和离开动画应用到通过默认插槽传递给它的元素或组件上。进入或离开可以由以下的条件之一触发&#xff1a; 由 v-if 所触发的切换由 v-show 所触…

时序预测 | Python实现TCN时间卷积神经网络时间序列预测(多图,多指标)

时序预测 | Python实现TCN时间卷积神经网络时间序列预测(多图,多指标) 目录 时序预测 | Python实现TCN时间卷积神经网络时间序列预测(多图,多指标)预测效果基本介绍环境准备程序设计参考资料预测效果 基本介绍

【解决方案】基于物联网表计的综合能源管理方案

安科瑞顾强 为加快推进国家“双碳”战略和新型能源体系建设&#xff0c;努力实现负荷准确控制和用户精细化管理&#xff0c;按照“政府主导、电网组织、政企协同、用户实施”的指导原则&#xff0c;多地成立市/县级电力负荷管理中心&#xff0c;包括浙江宁波、慈溪、辽宁大连、…

IO流--12--Java lO 设计模式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Java lO 设计模式装饰器模式适配器模式工厂模式观察者模式 Java lO 设计模式 装饰器模式 适配器模式 工厂模式 观察者模式

如何透彻理解 Paxos 算法

Paxos 算法在分布式领域具有非常重要的地位&#xff0c;开源分布式锁组件 Google Chubby 的作者 Mike Burrows 说过&#xff0c;这个世界上只有一种一致性算法&#xff0c;那就是 Paxos 算法&#xff0c;其他的算法都是残次品。 Paxos 算法虽然重要&#xff0c;但是也因算法复杂…

DAPP开发【02】Remix使用

系列文章目录 系列文章在DAPP开发专栏 文章目录 系列文章目录使用部署测试网上本地项目连接remix本地项目连接remix 使用 创建一个新的工作空间 部署测试网上 利用metaMask连接测试网络 添加成功&#xff0c;添加时需要签名 即可进行编译 即可部署 本地项目连接remix 方…

jmeter资料

1.jmeter介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 它可以用于测试静态和动态资源&#xff0c;例如静态文件、Java 小服务程序、CGI 脚本、Java 对象…

DouyinAPI接口系列丨Douyin商品详情数据接口丨Douyin视频详情数据接口

抖音商品详情API是抖音开放平台提供的一套API接口&#xff0c;用于获取商品详情信息。通过该API&#xff0c;开发者可以获取到商品的详细信息&#xff0c;包括商品ID、名称、描述、价格、销量、评价等信息。 在使用抖音商品详情API之前&#xff0c;需要先注册并登录抖音开放平…