单处理机系统的进程调度动态优先_操作系统复习笔记(王道)C2.1

进程与线程


一、进程特征和概念

前提:允许多个程序并发执行。

1.概念

PCB(process control block)进程控制块,系统利用 PCB 来描述进程的基本情况和运行状 态,进而控制和管理进程。

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

进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

2.特征

  • 动态性:进程是程序的一次执行,所以他是有生命周期的。(基本特征)
  • 并发性:引入进程的目的就是为了程序能够并发执行。
  • 独立性:一个进程就是一个独立的个体
  • 异步性:由于进程的相互制约,使得进程具有执行的间断性。
  • 结构性:一个进程实体由程序段、数据段和进程控制块三部分组成。

二、进程的状态与转换

  1. 创建态
  2. 就绪态
  3. 运行态
  4. 阻塞态
  5. 结束态

几个比较重要的转换:

就绪态→运行态:获得处理机资源(时间片)。

运行态→就绪态:获得的时间片用完,或者在可剥夺的操作系统中被更高优先级的进程抢走时间片。

运行态→阻塞态:请求某一资源,或者等待某一事件发生。

进程以系统调用的形式请求操作系统提供服务,这是一种特殊的、由运行用户态程序调用操作系统内核过程的形式。

阻塞态→就绪态:等待的事件到来时。


三、进程控制

1.进程的创建

允许一个进程创建另一个进程,就是父进程和子进程。

创建过程如下:

1)分配唯一进程标志号,申请一个空白的PCB(有限的)。没有就创建失败了。

2)分配资源,分配用户栈和内存资源,若资源不足就处于阻塞态,直到有资源被释放。

3)初始化PCB。(标志信息、处理机状态信息、处理机控制信息、设置进程的优先级等。)

4)如果就绪队列未满,就插入就绪队列,等待被调度。

2.进程的终止

通常引起终止的事件

  • 正常结束
  • 异常结束
  • 外界干预

终止过程:

1)根据标志符检索PCB,读取该进程状态。

2)如处于执行状态,立即终止执行,处理器资源也分出去。

3)若还有子孙进程,则终止其子进程。

4)将该进程的资源还给父进程(没有就还给操作系统)。

5)将PCB从所在队列(链表)删除。

3.进程的阻塞与唤醒

阻塞:

1)找到PCB

2)若为运行态,则保护现场,然后转为阻塞态

3)将该PCB插入等待队列,交出处理机资源

唤醒:

1)在等待队列中找到PCB

2)将其从队列中移出,设置为就绪态

3)插入就绪队列,等待调度

4.进程切换

进程切换是指处理机从一个进程的运行转到另一个进程上运行。

1)保存处理机上下文,包括程序计数器和其他寄存器

2)更新 PCB 信息

3)把进程的 PCB 移入相应的队列,如就绪、在某事件阻塞等队列。

4)选择另一个进程执行,并更新其 PCB

5)更新内存管理的数据结构。

6)恢复处理机上下文


四、进程的组织

一个进程由以下三部分组成,最核心的就是PCB

1.进程控制块

PCB是进程实体的一部分,是进程存在的唯一标志。

主要包括:描述信息、进程控制和管理信息、资源分配清单、和处理机关信息等。

1)描述信息:PID进程标识符,UID用户标识符。

2)进程控制和管理信息:进程当前的状态,优先级等信息。

3)资源分配清单:说明有关内存地址的状况。

4)处理机相关信息:主要指处理机中各寄存器的值。

a7eb21491a9c4ae6d3675f417a571d60.png

2.程序段

3.数据段


五、进程的通信

0ec44c52d1fbd672f9ed7a7c7f0cc0c2.png
管道可以理解为共享存储的优化和发展 ,因为在共享存储中,若某进程要访问共享存储空间, 则必须没有其他进程在该共享存储空间中进行写操作,否则访问行为就会被阻塞。管道通信中,存储空间进化成了缓冲区,缓冲区只允许一边写入、另一边读出,因此只要缓冲区中有数据,进程就能从缓冲区中读出,而不必担心会因为其他进程在其中进行写操作而遭到阻塞。

六、线程概念和多线程模型

1.概念

线程由线程ID、程序计数器、寄存器集合和堆栈组成。

线程是进程中的一个实体。

有了线程这个概念后,进程作为除了CPU之外的系统资源分配单元,而线程则作为处理机的分配单元。

2.线程和进程的比较

1)调度

线程是独立调度的基本单位,进程是拥有资源的基本单位。

也就是说,一个进程内的线程可以切换到另一个进程内的一个线程,但是资源不能。

2)拥有资源

线程不拥有系统资源

3)并发性

多个进程可以并发执行,多个线程也可以并发执行。

4)系统开销

创建和撤销进程时,涉及到很多系统资源的分配和回收。但是线程不拥有系统资源,创建和撤销系统则不需要付出那么大的开销。同样,线程间的切换也比进程间的切换更容易实现。

5)地址空间和其他资源

进程之间互相独立。

线程之间共享该进程的资源。

6)通信

进程间通信需要互斥手段的辅助。

线程可以直接读写进程数据段来实现通信。

3.线程的属性

1)线程不拥有系统资源,但拥有唯一的标识符和一个线程控制块。

2)不同的线程可以执行相同的程序

3)同一进程中各个线程共享该进程所拥有的资源

4)线程是处理机的独立调度单元,多个线程可以并发执行。

5)线程生命周期也会有阻塞、就绪、运行等状态

4.线程的实现方式

分为两大类:

用户级线程、内核级线程

5f2a123e7e03a6fa68b8e3b4418e4224.png

5.多线程模型

1)多对一:

多个用户级线程映射到一个内核级线程

2)一对一

一个用户级线程映射到一个内核级线程

3)多对多

n个用户级线程映射到m个内核级线程

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

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

相关文章

非线性动力学_非线性科学中的现代数学方法:综述

Ch0【引言】本文是作者的一个总结,力图在极度繁杂的数理知识体系中摘选出那些最广泛应用的核心工具及思想。本文主要关注的问题都是非线性的、动态的。具体地讲,主要涉及的是:微分动力系统、泛函的最优化初步(但不涉及最优控制及微…

IOC操作Bean管理XML方式(注入集合类型属性)

目录 IOC操作Bean管理XML方式(注入集合类型属性) (1)首先进行环境的搭建和准备 (2)创建一个类:用来完成集合类型属性注入 (3)在Spring 配置文件进行配置 &#xff0…

matlab 最小二乘法拟合_高中数学:最小二乘法与线性回归方程

1、怎样的拟合直线最好?——与所有点都近,即与所有点的距离之和最小。最小二乘法可以帮助我们在进行线性拟合时,如何选择“最好”的直线。要注意的是,利用实验数据进行拟合时,所用数据的多少直接影响拟合的结果&#x…

python多次循环输出_python循环

python_day_2一. 循环. while循环while 条件:代码块(循环体)执行流程:判断条件是否为真. 如果真. 执行代码块再次判断条件是否为真......当条件为假.执行else 跳出循环. 循环结束1.让计算机连续打印5次corn,每次延迟一秒:importtimecount 1while count <5:print("corn&…

预充电电路工作原理_LED触摸调光台灯控制电路板的工作原理

一款美观实用的台灯堪称书桌上的艺术品&#xff0c;看着书桌上精致美观的台灯&#xff0c;可能还会增加一些阅读的乐趣吧。那么触摸开关台灯的工作原理到底是怎么的呢?两按键触摸调光电路板工作原理:一、两按键触摸调光电路板&#xff0c;触摸芯片工作电压2.4-5.5V。输入也可用…

IOC操作Bean管理XML方式(FactoryBean)

目录 IOC操作Bean管理XML方式&#xff08;FactoryBean&#xff09; Spring 有两种类型的bean 第一种&#xff1a;是普通的 bean 第二种&#xff1a;工厂bean FactoryBean 第一步&#xff1a;创建类&#xff0c;让这个类作为工厂bean 第二步&#xff1a;在类中实现接口里面…

python中自定义类中的self_Python类和构造方法

1.面向对象介绍描述&#xff1a;是函数的一个变种,在Python中,有函数式编程和面向对象编程,java和C#之类只能把函数写到类里,没有函数式编程,所以只有面向对象,所以在Python中有了选择,可能就变得有点麻烦,但是在Python里,函数式编程是可以完成所有的功能的,人都是想把事情变得…

激光slam_机器人主流定位技术,激光SLAM与视觉SLAM谁更胜一筹

定位技术是机器人实现自主定位导航的最基本环节&#xff0c;是机器人在二维工作环境中相对于全局坐标的位置及其本身的姿态。目前SLAM (Simultaneous Localization and Mapping&#xff0c;即时定位与地图构建)是业内主流的定位技术&#xff0c;有激光SLAM和视觉SLAM之分。什么…

IOC操作Bean管理XML方式(bean的作用域)

目录 IOC操作Bean管理XML方式&#xff08;bean的作用域&#xff09; 1.在Spring 里面&#xff0c;设置创建 bean 实例是单实例还是多实例的方式 &#xff08;1&#xff09;在Spring 配置文件bean 标签里面有属性&#xff08;scope&#xff09;用于设置单实例还是多实例 &am…

bucket sort sample sort 并行_双调排序Bitonic Sort,适合并行计算的排序算法

双调排序是data-independent的排序&#xff0c; 即比较顺序与数据无关的排序方法&#xff0c; 特别适合做并行计算&#xff0c;例如用GPU、fpga来计算。1、双调序列在了解双调排序算法之前&#xff0c;我们先来看看什么是双调序列。 双调序列是一个先单调递增后单调递减&#x…

边缘检测后去除噪点_修图前vs修图后,原来那些网红“照骗”都是这样修出来的!...

如今手机上有许多功能强大的后期app都能帮助我们轻松实现一键修图我们也经常可以在网上看到各路大神们各显神通的手机修图作品无论是风景、人像还是创意修图前和修图后对比强烈、美若两图看到这里你是否想问为什么同样是用手机修图别人修的图总是比我好看到底是哪里出错了呢&am…

IOC操作Bean管理XML方式(bean 的生命周期)

目录 IOC操作Bean管理XML方式&#xff08;bean 的生命周期&#xff09; 1.bean 的生命周期&#xff08;在单例模式下的生命周期&#xff09; &#xff08;1&#xff09;通过构造器创建 bean 的实例&#xff08;执行类中无参构造方法去创建对象&#xff09; &#xff08;2&…

springboot listener_Springboot 全套面试提升宝典,为金三银四冲刺

简介&#xff1a;Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。通过这种方式&#xff0c;Spring Boot致力于在蓬勃发…

IOC操作Bean管理XML方式(xml自动装配)

目录 IOC操作Bean管理XML方式&#xff08;xml自动装配&#xff09; 一.演示自动装配过程 &#xff08;1&#xff09;根据 属性名称 装配 步骤一&#xff1a; 步骤二&#xff1a; 步骤三&#xff1a; &#xff08;2&#xff09;根据 属性类型 装配 &#xff08;2.1&#…

python 判断文件是否被占用_python 在删除文件的时候检测该文件是否被其他线程或者进程占用?...

永远不要忘记&#xff1a;跨平台特性是Python的血液和命脉。在Linux下进程正在使用的文件&#xff0c;是不妨碍其他进程去移动/删除/更名的。因为在Linux下由inode确定文件&#xff0c;inode和文件路径虽然存在对应关系&#xff0c;但本质上是分离的。删除了某进程正在使用的文…

python怎么索引json中的值_使用Python在JSON中查找值

我之前已经成功地解析了JSON文件中的数据&#xff0c;但现在我要实现的函数遇到了问题。我有一个JSON格式的姓名、身份证号码和出生日期列表。我想在Python中得到的是让用户输入一个名字并检索他的身份证号码和出生日期(如果有的话)。这是我的JSON示例文件&#xff1a;[{"…

python3 json模块_详解python 3.6 安装json 模块(simplejson)

JSON 相关概念&#xff1a; 序列化&#xff08;Serialization&#xff09;&#xff1a;将对象的状态信息转换为可以存储或可以通过网络传输的过程&#xff0c;传输的格式可以是JSON&#xff0c;XML等。反序列化就是从存储区域&#xff08;JSON&#xff0c;XML&#xff09;读取反…

IOC操作Bean管理XML方式(外部属性文件)

目录 IOC操作Bean管理XML方式&#xff08;外部属性文件&#xff09; 前情引入&#xff1a; 实验演示&#xff1a; 1.直接配置数据库信息 &#xff08;1&#xff09;配置德鲁伊连接池 &#xff08;2&#xff09;引入德鲁伊连接池jar包 &#xff08;3&#xff09;创建一个b…

python实现关联算法_python使用Apriori算法进行关联性解析

从大规模数据集中寻找物品间的隐含关系被称作关联分析或关联规则学习。过程分为两步&#xff1a;1.提取频繁项集。2.从频繁项集中抽取出关联规则。 频繁项集是指经常出现在一块的物品的集合。 关联规则是暗示两种物品之间可能存在很强的关系。 一个项集的支持度被定义为数据集中…

IOC操作Bean管理注解方式(创建对象)

目录 IOC操作Bean管理注解方式&#xff08;创建对象&#xff09; 1.什么是注解 2.Spring 针对 Bean 管理中创建对象提供注解主要有以下四种 &#xff08;1&#xff09;Component &#xff08;2&#xff09;Service &#xff08;3&#xff09;Controller &#xff08;4&am…