代码改变世界

处理器管理与进程管理

2019-03-19 16:12  林扬程1  阅读(696)  评论(0编辑  收藏  举报

用图文描述组成进程的要素,并说明其作用。

一、进程的描述

1、进程的静态描述

一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。如何从处理机的活动角度,如何识别程序执行活动的进程?系统中描述进程存在和能够反映其变化的物理实体,即进程的静态描述------进程控制块(PCB)、有关程序段和该程序段对其进行操作的数据结构集

a)进程控制块包含进程的描述信息,控制信息以及资源信息,是进程动态特征的集中反映。系统根据PCB感知进程的存在,通过PCB中所包含的各项变量的变化掌握进程所处的状态,以达到控制进程活动的目的。进程的PCB是系统感知进程的唯一实体,几乎所有的多道操作系统中,一个进程的PCB结构都是全部或者部分常驻内存的。包括描述信息,控制信息,资源信息以及CPU现场保护结构。

b)进程的程序部分描述进程所要完成的功能。数据结构集是程序在执行时必不可少的工作区和操作对象。两者一般存放在外存中,直到该进程执行时在调入内存。

1.1、进程上下文

a)进程上下文实际上是进程执行过程中顺序关联的静态描述。进程上下文是一个与进程切换和处理机状态发生交换有关的概念。操作系统需要直到和记忆进程已经执行到什么地方或者新的进程将从何处执行。还有调用子程序的情况,执行后从何处继续执行,存放在什么地方等都需要记忆。

已执行过的进程的指令和数据在相关寄存器与堆栈中的内容称为上文;正在执行的指令和数据在相关寄存器与堆栈中的内容称为正文;待执行的指令和数据在相关寄存器与堆栈中的内容称为下文

不发生进程调度时,进程上下文的改变都是在同一进程内进行的。

b)进程上下文的切换

进程上下文切换发生在不同的进程之间而不是同一进程内。

切换过程一般包含3部分,并涉及3个进程。一、保存被切换进程的正文部分(或当前状态)至有关区,如PCB中;二、操作系统进程中有关调度和资源分配程序执行,并选取新进程;三、将被选中进程的原来被保存的正文部分从有关存储区中取出,并送至有关寄存器与堆栈中,激活被选中进程执行。

为提高系统执行效率,有的计算机在设计时采用多组寄存器技术

1.2、进程空间与大小

任一进程都有一个自己的地址空间,该空间被称为进程空间或虚空间。

进程空间的大小只与处理机的位数有关,如:32为处理机的进程空间大小为232 。

二、进程状态及其转换

一个进程至少有五个状态:初始状态、执行状态、等待状态、就绪状态和终止状态。

一个进程在并发执行中,由于资源共享和竞争,有时处于执行状态;有时,进程则因等待某件事件的发生而处于等待状态;另外,当一个处于等待状态的进程因等待事件发生唤醒后,又因不可能立即得到处理机而进入就绪状态,处于就绪状态的进程已经得到除CPU之外的其他资源,只要由调度得到处理机,便可立即执行;进程刚被创建时,由于其他进程正占有处理机而得不到执行,只能处于初始状态;进程在执行结束以后,将退出执行而被终止,这时进程处于终止状态

三、进程控制

进程控制就是系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程各状态间的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的。

1、原语

一般,把系统态下执行某些具有特定功能的程序段称为原语。

原语分为两类:一类是机器指令级的,其特点是执行期间不允许中断。二、功能级的,其特点是作为原语的程序段不允许并发执行

2、进程创建与撤销

2.1 进程创建的方式有:

a)由系统程序模块统一创建。由系统统一创建的进程之间是平等的,它们之间一般不存在资源继承关系。

b)由父进程控制。父进程与父进程创建的进程之间存在隶属关系,且构成树形结构的家族关系。属于某个家族的一个进程可以继承其父进程所拥有的资源。

折两种方式都必须调用创建原语来实现。

2.2 进程撤销

导致进程撤销的有:

a)该进程已完成所要求的功能二正常终止;

b)由于某中错误导致非正常终止;

c)祖先进程要求撤销某个子进程。

这里要注意的是:如果被撤销的进程有自己的子进程,则撤销原语先撤销其子进程的PCB结构并释放子进程所占用的资源以后,再撤销当前进程的PCB结构并释放其资源。(撤销原语首先要检查PCB进程链或进程家族,寻找所要撤销的进程是否存在)。

2.3 进程的阻塞与唤醒

实现进程的执行状态到等待状态---阻塞原语;由等待状态到就绪状态----唤醒原语

阻塞原语在一个进程期待某一事件发生,但是发生条件尚不具备时,该进程自己调用来阻塞自己。(其中过程要保护该进程的CPU现场,转进程调度程序选择新的就绪进程投入运行,否则,处理机将会出现空转而浪费资源)。

当等待队列中的进程所等待的事件发生时,等待该事件的所有进程都将被唤醒。(不能自己唤醒自己)

唤醒方式有两种:由系统进程唤醒;由事件发生进程唤醒。

 

用图文描述什么是进程切换,为什么进行进程切换,进程切换的步骤?

 什么是进程切换

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

 

 为什么进行进程切换

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

进程切换的步骤

(1) 申请空白PCB。为新进程申请获得惟一的数字标识符,并从PCB集合中索取一个空白PCB。  
(2) 为新进程分配资源。为新进程的程序和数据以及用户栈分配必要的内存空间。 (3) 初始化进程控制块。 (4) 将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。

 

用图文描述模式转换、进程切换、进程状态转换三者之间的关系?

1.进程的三种基本状态

    进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。

 就绪(Ready)状态

    当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。

 执行(Running)状态
当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。

 阻塞(Blocked)状态
正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。

2.进程三种状态间的转换

 

一个进程在运行期间,不断地从一种状态转换到另一种状态,它可以多次处于就绪状态和执行状态,也可以多次处于阻塞状态。图3_4描述了进程的三种基本状态及其转换。

 (1) 就绪→执行
处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。

 (2) 执行→就绪
处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。

 (3) 执行→阻塞
正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。

 (4) 阻塞→就绪
处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。

python练习:

 

观察父进程、子进程:

  os.getpid()

                os.getppid()

观察进程运行状态:

  psutil.Process(3180)

                 psutil.Process(7136)

输入多个作业的作业编号,到达时间,所需CPU时间,形成列表,以备算法使用:

                jobs=[]
                for i in range(4):
                job =input('输入作业编号,到达时间,所需CPU时间').split(',')
                jobs.append(job)
                for i in range(len(jobs)): 
                print(jobs[i])