问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

一文带你读懂Python中的进程

发布网友 发布时间:2022-05-07 00:47

我来回答

1个回答

热心网友 时间:2022-04-16 03:42

进程

进程(Process)是计算机中的程序关于某数据集合上的一次运行,即正在运行的程序,是系统进行资源分配和调度的基本单位,进程是对正在运行程序的一个抽象,在早期面向进程设计的计算机结构中,进程是程序的基本执行实体,在当代面向线程设计的计算机结构中,进程是线程的容器,线程是执行的实体。进程的概念起源于操作系统,是操作系统最核心的概念,操作系统的其他所有内容都是围绕进程的概念展开的。

在早期计算机中可以利用的cpu只有一个,为了充分利用CPU性能,提高用户操作体验,出现了多道技术。将一个单独的cpu虚拟成多个cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),即使在一个单核CPU也能保证支持(伪)并发的能力。如果没有进程的抽象,现代计算机将不复存在。

狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。

广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

操作系统的作用:

隐藏复杂的硬件接口,提供良好的抽象接口。

管理、调度进程,使多个进程对硬件的竞争变得有序。

多道技术:针对早期单核CPU,实现多个程序的并发执行,现在的主机一般是多核,每个核都会利用多道技术,如有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,重新调度是可能会被调度到4个cpu中的任意一个,具体由操作系统调度算法决定。

多道技术的主要特性如下:  

(1)空间上的复用:内存中可以同时有多道程序。

(2)物理隔离:多个程序在内存中都有各自独立的内存空间,互不影响。

(3)时间上的复用:多个程序在操作系统的调度算法下,在不同的时间段内分别占有CPU资源。

需要注意的是如果一个进程长时间占用CPU资源,操作系统会强制将CPU资源分配给其它在就绪队列中的程序,避免一个程序长时间占有CPU资源,导致其它程序无法运行。

相关推荐:《Python视频教程》

关于进程的一些概念:

第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码,数据区域存储变量和进程执行期间使用的动态分配的内存,堆栈区域存储着活动过程调用的指令和本地变量。

第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统将程序加载到内存),它才能成为一个活动的实体,我们称其为进程。

进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。

进程的特性:

动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

并发性:任何进程都可以同其他进程一起并发执行

独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;

异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进

结构特征:进程由程序、数据和进程控制块三部分组成。

多个不同的进程可以包含相同的程序,一个程序在不同的数据集里就构成不同的进程,能得到不同的结果,但是执行过程中,程序不能发生改变。

进程与程序的区别:

程序是指令和数据的有序集合,是对指令、数据及其组织形式的描述,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。

程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。

进程的调度:

要想多个进程交替运行,操作系统必须对这些进程进行调度,这个调度也不是随机进行的,而是需要遵循一定的法则,由此就有了进程的调度算法。

1、先来先服务算法

先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。由此可知,本算法适合于CPU繁忙型作业,而不利于I/O繁忙型的作业(进程)。

2、短作业优先调度算法

短作业(进程)优先调度算法(SJ/PF)是指对短作业或短进程优先调度的算法,该算法既可用于作业调度,也可用于进程调度。但其对长作业不利;不能保证紧迫性作业(进程)被及时处理;作业的长短只是被估算出来的。

3、时间片轮转法

时间片轮转(Round Robin,RR)法的基本思路是让每个进程在就绪队列中的等待时间与享受服务的时间成比例。在时间片轮转法中,需要将CPU的处理时间分成固定大小的时间片,例如,几十毫秒至几百毫秒。如果一个进程在被调度选中之后用完了系统规定的时间片,但又未完成要求的任务,则它自行释放自己所占有的CPU而排到就绪队列的末尾,等待下一次调度。同时,进程调度程序又去调度当前就绪队列中的第一个进程。

显然,轮转法只能用来调度分配一些可以抢占的资源。这些可以抢占的资源可以随时被剥夺,而且可以将它们再分配给别的进程。CPU是可抢占资源的一种。但打印机等资源是不可抢占的。由于作业调度是对除了CPU之外的所有系统硬件资源的分配,其中包含有不可抢占资源,所以作业调度不使用轮转法。

在轮转法中,时间片长度的选取非常重要。首先,时间片长度的选择会直接影响到系统的开销和响应时间。如果时间片长度过短,则调度程序抢占处理机的次数增多。这将使进程上下文切换次数也大大增加,从而加重系统开销。反过来,如果时间片长度选择过长,例如,一个时间片能保证就绪队列中所需执行时间最长的进程能执行完毕,则轮转法变成了先来先服务法。时间片长度的选择是根据系统对响应时间的要求和就绪队列中所允许最大的进程数来确定的。

在轮转法中,加入到就绪队列的进程有3种情况:

(1)一种是分给它的时间片用完,但进程还未完成,回到就绪队列的末尾等待下次调度去继续执行。

(2)另一种情况是分给该进程的时间片并未用完,只是因为请求I/O或由于进程的互斥与同步关系而被阻塞。当阻塞解除之后再回到就绪队列。

(3)第三种情况就是新创建进程进入就绪队列。

如果对这些进程区别对待,给予不同的优先级和时间片从直观上看,可以进一步改善系统服务质量和效率。例如,我们可把就绪队列按照进程到达就绪队列的类型和进程被阻塞时的阻塞原因分成不同的就绪队列,每个队列按FCFS原则排列,各队列之间的进程享有不同的优先级,但同一队列内优先级相同。这样,当一个进程在执行完它的时间片之后,或从睡眠中被唤醒以及被创建之后,将进入不同的就绪队列。

多级反馈队列:

前面介绍的各种用作进程调度的算法都有一定的局限性。如短进程优先的调度算法,仅照顾了短进程而忽略了长进程,而且如果并未指明进程的长度,则短进程优先和基于进程长度的抢占式调度算法都将无法使用。

而多级反馈队列调度算法则不必事先知道各种进程所需的执行时间,而且还可以满足各种类型进程的需要,因而它是目前被公认的一种较好的进程调度算法。在采用多级反馈队列调度算法的系统中,调度算法的实施过程如下所述。

(1) 应设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。例如,第二个队列的时间片要比第一个队列的时间片长一倍,……,第i+1个队列的时间片要比第i个队列的时间片长一倍。

(2) 当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,……,如此下去,当一个长作业(进程)从第一队列依次降到第n队列后,在第n 队列便采取按时间片轮转的方式运行。

(3) 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第1~(i-1)队列均空时,才会调度第i队列中的进程运行。如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女人梦见蛇的七大预兆解梦 PHOTOSHOP 怎么把眼睛点大 这些月销量10000+的防晒霜,是噱头还是真的好用? 大宝水凝保湿防晒露适合哪些肤质的人使用? 拥有人口过亿的国家最多的大洲是( )A.非洲B.亚洲C.欧洲D.大洋 世界国家最多的大洲是:( ) A.亚洲 B.大洋州 C.非洲 D.欧 拥有人口过亿的国家最多的大洲是:( ) A.非洲 B.亚洲 C.欧洲 D.大洋 餐厅一般中餐都有哪些摆台要求和标准 如何做味道正宗的中餐? 河南文科跟理科高考分数线相差多少 事业单位行政处分有时效性吗 部队警告处分影响期多长 多久能给处以行政警告 政务处分时间期限 为什么要引入进程的概念是什么 关于进程的解释 行政处罚警告处分多长时间 进程到底是什么?我想知道本质上是什么,是一段程序代码吗?还有线程。哪个高手能帮我解决问题啊。 计算机上的计算器选二进制点击哪里 计算机上的计算器选二进制点击哪里 三星notebook9的电池怎么保养 电脑系统自带计算器输入二进制 .符号怎么输入 电脑中的计算器二进制如何用 三星手机note9能看电池健康度吗? 电脑计算器怎么运行196的二进制 edius怎么输出9:16的视频 edius怎么多机位输出视频 edius怎么输出 EDIUS 8视频渲染输出怎么设置 edius8.5输出视频输出器没有预设 茫茫人海你和我相遇缘分让我们走到了一起,是哪首歌的歌词? 你我相遇茫茫人海……是什么歌词 iPad2升级后太卡怎么办 人海忙忙你和我相遇,我们两缘份走在了起,是什么歌? ipad2 卡顿可以降级吗 茫茫的人海中,有你和我的相逢,幸福的花瓣飘落满地什么歌 家里wifi,小米电视播放流畅,iPad2平板却播放卡顿是什么原因? 家里的iPad2几年了,现在很卡很卡,玩起来没意思了,越狱有用吗?或者有... ipad2摔了后为什么很卡? 歌词中有一句茫茫人海只有你和我,这首歌名字是? 有一句歌词茫茫人海我们的相遇,我的世界不再有孤寂是什么歌? 有句歌词茫茫人海与你邂逅真的是我一生的所有谁唱的 VC 中利用ADO 访问 SQL server2005 我去年买了人寿的重大疾病保险,都一年我,今年经济紧张,想退保,能退多少钱 我在人保寿险交了个无忧一生重大疾病,交了一年了,保费是3980元,要交20年,现在想退了,能退多少 我上的太平洋10大疾病保险,只交了一年的钱1760,现在想退保能退多少钱? 腾讯游戏退款后封多久 腾讯游戏退款后会封停账号么 腾讯退款是所有游戏吗 腾讯游戏未成年退款后QQ账号会怎么样?