博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习笔记------进程(Process)
阅读量:4875 次
发布时间:2019-06-11

本文共 2559 字,大约阅读时间需要 8 分钟。

进程(Process)

绪论: OS的基本特性是并发与共享,即在系统中同时存在几个相互独立的程序, 他们交叉地运行,并共享资源。 存在资源的竞争,程序之间的合作和协同 ,程序之间的通信这几个问题。

为了解决以上问题, 用程序的概念已经不能描述程序在内存中运 用程序的概念已经不能描述程序在内存中运 行的状态行的状态 ,必须引入新的概念--进程

 

进程的概念

1.进程的定义

进程是一个可并发执行的、具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和调度的基本单位。(由1978年,我国操作系统的研究人员在全国操作系统学术会议上给出的定义)

  程序的定义

程序是一个在时间上严格按先后次序操作实现算法功能的指令序列,且程序本身是静态的。

2.进程的结构

我们把操作系统中更具体、更形象的进程称为进程实体。进程实体和进程一般不严格区分(就好像进程是一个抽象的统一概念,而进程实体是一个实例)

通常的程序是不能并发执行的。为了使进程及它所要处理的数据能独立运行,应为之配置一个数据结构,用来存储程序向前推进的执行过程中所要记录的有关运行信息,即该进程动态执行的相关资料。这个数据结构称为进程控制块,即PCB(Process Control Block)。由此得到:

进程实体  =  程序段  +  相关数据段  + PCB

程序段:用户所要执行的语句序列(不可缺少的)

相关数据段:用户所要处理的数据,数据量可大可小。需要注意的是,有些进程的数据是包含在程序中的,这时就没有相关数据段。

PCB:包含进程执行的相关资料,只有PCB才能了解进程的执行情况。

     进程实体结构示意图

3.进程的特征

(1)动态性进程的实质是程序的一次执行。也表明进程是有生命期的,具有“创建--运行--消亡”的过程。

(2)并发性。多个进程实体可以在一段时间内能够并发执行(这就是引入进程的目的,以提高系统资源的利用率)

(3)独立性。每个进程都是一个独立运行的基本单位。

(4)异步性。各进程按各自独立的、不可预知的速度向前推进。

(5)结构性。结构上看,每个进程都由程序段、数据段以及PCB这三个部分组成。

 

下面说下程序的概念

  1. 程序的顺序执行(单道程序环境)

(1)顺序性。CPU按程序的顺序严格执行程序的操作,每个操作都必须在前一个操作结束后才能开始。

(2)封闭性。程序运行时独占全机资源。

(3)可再现性。程序运行的结果仅与初始条件有关,而与运行的时间和速度无关。

2. 程序的并发执行(多道程序环境)

在同一时刻,有的程序占用CPU运行、有的程序通过外部设备传递数据。从宏观上看是多个程序同时执行,从微观上看它们是在交替执行(对单个CPU而言)。

在多道程序设计环境下,多个程序可以在单CPU上交替执行,也可以在多个CPU上并发执行。程序的并发执行通常是指多个程序在单个CPU上的交替执行。

特性

(1)间断性。多个程序在并发执行时共享系统资源,导致并发执行的程序之间产生了相互制约的关系。比如某个程序2完成输入后,如果程序1尚未完成,则程序2也无法继续执行下去,必须暂停程序2执行。所以存在“执行--暂停--执行”这种间断性规律。

(2)失去了封闭性。多个程序共享系统中所有资源。

(3)不可再现性。指并发执行的运行结果是不确定的,还指程序的执行速度和运行轨迹是不确定的。

 

4.进程与程序的区别

程序就像是一个乐谱,任何时候你都可以翻阅它,但乐谱本身是静态的。进程则可以看作依照乐谱的一次演奏,这个演奏有开始有结束(具有生命期),并随着时间的流逝,演奏的音乐不复存在;也就是说,这个演奏过程本身是动态的,即使是重新演奏这个乐谱,也绝对不是刚刚逝去的那段音乐(不是刚刚执行过的进程,而是一个新的进程)。

(1)进程是动态的,程序是静态的。程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序 通常对应着文件、静态和可以复制。

(2)进程是暂时的,程序是永久的。进程是一个状态变化的过程,程序可长久保存。

(3)进程与程序的组成不同。进程的组成包括程序、数据和进程控制块(即进程状态信息)。

(4)进程与程序的对应关系 。通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。

 5.进程控制块

1.产生的原因

操作系统是如何获取各个进程的状态信息,以便CPU在多个进程之间交替执行,因此,操作系统需要为进程定义一种能够描述和控制进程运行的数据结构,就是进程控制块,即PCB。

它是进程存在的唯一标志。PCB种存放着操作系统所需要的用于描述进程当前情况的全部描述信息,以及控制进程运行的全部控制信息和相关的资源信息。

2.进程控制块中的信息

不同的操作系统对进程管理的机制不同,但是大致可以包含以下信息。

(1)进程标识符。每个进程都必须有唯一的进程标识符,也称进程的内部名。

(2)进程的当前状态。表明当前进程当前所处的状态。

(3)进程中的程序段与数据段地址。用于将PCB和与之对应的进程在内或外存的程序段及数据段联系起来。

(4)进程资源清单。用于指出资源的需求、分配和控制信息。

(5)进程优先级。一般用一个整数表示进程优先程度。

(6)CPU现场保护区。当进程因某种原因放弃使用CPU时,将当时的CPU各种状态信息保存起来(暂存于内存中操作系统的内核区),以便之后再次调度时恢复。

(7)进程同步与通信机制。用于实现进程之间的互斥、同步和通信所需的信号量。

(8)PCB队列指针或链接字

(9)与进程相关的其他信息

3.进程控制块的组织方式

(1)线性表方式。无论进程的状态如何,将所有的PCB连续地存放在内存的系统区(内核区),多用于进程数目不多的情况,如下图。

(2)链接表方式。系统按照进程的状态将进程的PCB链成队列。这种方式只是方便对同类PCB进行管理,对查找某一个进程的PCB比较麻烦,只适用与小系统中进程数比较少的情况。

(3)索引表方式。系统按照进程的状态分别建立就绪索引表、阻塞索引表等,通过索引表来管理系统中的进程。如下图。

 

转载于:https://www.cnblogs.com/Diligent-Memory/p/10781034.html

你可能感兴趣的文章
oracle启动服务和监听命令
查看>>
毒药和酒
查看>>
浅谈linux内核中内存分配函数
查看>>
走近SpringBoot
查看>>
Bootstrap系列 -- 3. 段落
查看>>
学习C++编程语言的最大难度是什么
查看>>
PIE SDK元素的保存与打开
查看>>
php-resque的设计和使用
查看>>
gradle 配置及设置本地仓库
查看>>
linux 消息队列
查看>>
linux ulimit
查看>>
P2024 [NOI2001]食物链(种类并查集)
查看>>
记忆化搜索
查看>>
Centos7配置SVN服务端
查看>>
耗电—Android
查看>>
Ubuntu/Linux网络配置常用命令
查看>>
css3实现钟表效果
查看>>
using SSIS script task to send email result
查看>>
python多线程批量下载远程图片
查看>>
OFS环境,删除Resource 时出现错误失败,应该如何继续
查看>>