1. 程序的顺序执行(单道环境)及其特征

(1)程序的顺序执行

通常把一个程序分为多个程序段,在各程序段之间,有着严格的次序关系。仅当前一段程序段执行完毕之后,后一段程序段才能执行。例如:必须先获得输入数据,才能进行计算,最后才能打印输出。

对于一个程序段中的多条语句来说,也有着顺序执行的问题。

例如:

S1: a:=x+y; S2: b:=a-5; S3: c:=b+1;

S2必须在S1执行完毕才能执行,S3同理。

(2)程序顺序执行时的特征

①顺序性:处理机严格按照程序规定顺序执行。

②封闭性:程序在封闭环境下执行,即程序运行时独占全机资源,程序的状态(除了初始状态)只有程序自身可以改变,执行结果不受外界影响。

③可再现性:只要初始条件和执行时环境相同,程序重复执行时,得到的结果相同。

2. 程序的并发执行(多道环境)及其特征

(1)程序的并发执行

系统中运行的程序,典型有:

①系统中运行多个独立程序

②某个程序具有多个“部件”,并发运行

③程序之间有关联

程序的并发执行是指在同一时间间隔内运行多个程序。也就是在一个程序运行结束之前,可以运行其它的程序。对于用户来说,有多个程序在同时向前推进,但是从微观上来看,任意时刻CPU上都只有一个程序在执行。在多道程序系统和分时系统都允许程序并发执行,程序的并发执行有以下几个特点(单核)。

(2)程序并发执行时的特征

①间断性

程序在并发执行的时候,由于共享系统资源以及为完成一项任务而相互合作,致使在这些并发执行的程序之间,形成了相互制约的关系。例如多个程序都需要使用CPU,但是同一时间只能有一个程序使用,其他程序不得不暂停。导致每个程序在CPU上运行时都是时断时续的,即具有“执行-暂停-执行”这种间断性的活动规律。

②失去封闭性

程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行失去了封闭性。这样,某程序在执行时,必然会受到其它程序的影响。例如,当处理机这一资源已被某个程序占有时,另一程序必须等待。

③不可再现性

因为程序在并发执行时失去了封闭性,所以任何一个程序都有可能对系统的状态进行改变,这也意味着程序执行的结果可能会不相同。

例如:

S1: a:=x+2         S2: b:=y+4         S3: c:=a+b         S4: d:=c+b

这四个语句并发执行的话,执行顺序影响着最后每个变量的值。

再如:

当两个程序都是向同一个文件写入字符,二者并发执行,最后文件里的内容会不一样。因为二者执行顺序不同。

3. 进程的引入

为了操作系统管理上的方便性。

更好的管理内存中运行的各个程序。

引入了进程。

4. 进程的特征与状态

(1)进程的特征和定义

特征:

①结构特征

操作系统为了管理并发运行的程序,需要相关的管理信息(PCB),为了让程序以及数据能够独立运行,应该为其配置一个进程控制块,即PCB;

程序段、相关数据段和PCB三部分组成了进程实体。

②动态性

进程的实质就是进程实体的一次执行过程,因此,动态性就是进程的最基本的特征。

它由创建而产生,由调度而执行,由撤销而消亡。

进程实体有一定的生命期。程序只是一组有序指令的集合,存放在某种介质上,其本身不具备运动的含义,是静态的。

③并发性

这是指多个进程实体同存于内存中,且能在一段时间内同时运行。

并发性是进程的重要特征,同时也成为OS的重要特征。

引入进程的目的也正是为了使其进程实体能和其它进程实体并发执行。

④独立性

进程实体是一个能够独立获得资源,独立运行和独立接受调度的基本单位。凡未建立PCB的程序都不能作为一个独立的单位参与运行。

⑤异步性

进程按照各自独立的、不可预知的速度向前推进,即按照异步方式运行。

定义:

① 进程是程序的一次执行。

② 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。

③ 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

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

(2)进程的三种基本状态

①就绪状态(Ready)

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

在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。

②执行状态(Run)

进程已获得CPU,其程序正在执行。

在单处理机系统中,只有一个进程处于执行状态;在多处理机系统中,则有多个进程处于执行状态。

③阻塞状态(Block)

正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态,亦即进程的执行受到阻塞,把这种暂停状态称为阻塞状态,有时也称为等待状态或封锁状态。

致使进程阻塞的典型事件有:请求I/O,申请缓冲空间等。

通常将这种处于阻塞状态的进程也排成一个队列。有的系统则根据阻塞原因的不同而把处于阻塞状态的进程排成多个队列。

三种状态的转换:

时间片含义是每个程序在占用CPU时会有一个时间片,超过该时间片之后无论是否执行完都要被强制结束,自然重新处于就绪状态。

(3)挂起状态

在不少系统中进程只有上述三种状态,但在另一些系统中,又增加了一些新状态,挂起状态。

引起挂起状态的原因 :

①终端用户的请求

当终端用户在自己的程序运行期间发现有可疑问题时,希望暂时使自己的程序静止下来。就像是调试。

亦即,使正在执行的进程暂停执行;

使正在执行的进程暂停执行,若此时用户进程正处于就绪状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改。我们把这种静止状态称为挂起状态。

②父进程请求

有时父进程希望挂起自己的某个子进程,以便考查和修改该子进程,或者协调各子进程间的活动。

③负荷调节的需要

当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。

④操作系统的需要

操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。

注意:挂起的原因,都是外部的,不是程序本身的原因。而阻塞的原因是程序自身的原因。

进程状态的转换:

①活动就绪→静止就绪

当进程处于未被挂起的就绪状态时,称此为活动就绪状态,表示为Readya。

当用挂起原语Suspend将该进程挂起后,该进程便转变为静止就绪状态,表示为Readys。

处于Readys状态的进程不再被调度执行。

②活动阻塞→静止阻塞

当进程处于未被挂起的阻塞状态时,称它是处于活动阻塞状态,表示为Blockeda。

当用Suspend原语将它挂起后,进程便转变为静止阻塞状态,表示为Blockeds。

处于该状态(Blockeds)的进程在其所期待的事件出现后,将从静止阻塞变为静止就绪。

③静止就绪→活动就绪

处于Readys状态的进程,若用激活原语 Active激活后,该进程将转变为Readya状态。

④静止阻塞→活动阻塞

处于Blockeds状态的进程,若用激活原语 Active激活后,该进程将转变为Blockeda状态。

(4)创建状态和终止状态

 创建状态:

   创建一个进程步骤:

①为一个新进程创建PCB, 并填写必要的管理信息。

②把该进程转入就绪状态并插入就绪队列之中。

若一个新的进程已经创建,PCB也已经被分配,也填写了进程标识等信息。但是由于该进程还需要其他资源或者信息。例如进程有了自己的PCB,但是主存资源尚未分配。此时,进程创建工作还未完成,还不能被调度运行。这个状态就是创建状态。

终止状态:

终止一个进程步骤:

①先等待操作系统进行善后处理。

②将其PCB清零,并将PCB空间返还系统。

当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结,它将进入终止状态。

进入终止态的进程以后不能再执行,但在操作系统中依然保留一个记录,其中保存状态码和一些计时统计数据,供其它进程收集。

一旦其它进程完成了对终止状态进程的信息提取之后,操作系统将删除该进程。

5. 进程控制块

(1)进程控制块的作用

为了描述和控制进程的运行,系统为每个进程定义了一个数据结构——进程控制块PCB,它是进程实体的 部分,是操作系统中最重要的记录型数据结构。

PCB中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。

进程控制块的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其它进程并发执行的进程。

OS是根据PCB来对并发执行的进程进行控制和管理的,PCB 中包含了操作系统管理进程所需的全部信息。

例如,当OS要调度某进程执行时,要从该进程的PCB中查出其现行状态及优先级;在调度到某进程后,要根据其PCB中所保存的处理机状态信息,设置该进程恢复运行的现场,并根据其PCB中的程序和数据的内存始址,找到其程序和数据;当进程由于某种原因而暂停执行时,又须将其断点的处理机环境保存在PCB中。

可见,在进程的整个生命期中,系统总是通过 PCB对进程进行控制的,亦即,系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的。所以说,PCB是进程存在的唯一标志。

(2)进程控制块中的信息

进程标识符:

进程标识符用于唯一地标识一个进程。

①内部标识符。在所有的操作系统中,都为每一个进程赋予了一个惟 一的数字标识符,它通常是一个进程的序号。设置内部标识符主要是为了 方便系统使用。

②外部标识符。它由创建者提供,通常是由字母、数字组成,往往是由用户(进程)在访问该进程时使用。为了描述进程的家族关系,还应设置父进程标识及子进程标识。此外,还可设置用户标识,以指示拥有该进程的用户。

处理机状态:

处理机状态信息主要是由处理机的各种寄存器中的内容组成的。

处理机在运行时,许多信息都放在寄存器中。

当处理机被中断时,所有这些信息都必须保存在PCB中,以便在该进程重新执行时,能从断点继续执行。

寄存器:

① 通用寄存器,又称为用户可视寄存器,它们是用户程序可以访问的,用于暂存信息,          在大多数处理机中,有 8~32个通用寄存器,在RISC结构的计算机中可超过100个;

② 指令计数器,其中存放了要访问的下一条指令的地址;

③ 程序状态字PSW,其中含有状态信息,如条件码、执行方式、中断屏蔽标志等;

④ 用户栈指针,指每个用户进程都有一个或若干个与之相关的系统栈,用于存放过程和          系统调用参数及调用地址,栈指针指向该栈的栈顶。

进程调度信息:

① 进程状态,指明进程的当前状态,作为进程调度和对换时的依据;

② 进程优先级,用于描述进程使用处理机的优先级别的一个整数,优先级高的进程应优先获得处理机;

③ 进程调度所需的其它信息,它们与所采用的进程调度算法有关,比如,进程已等待CPU的时间总和、进程已执行的时间总和等;

④ 事件,指进程由执行状态转变为阻塞状态所等待发生的事件,即阻塞原因。

进程控制信息:

① 程序和数据的地址,指进程的程序和数据所在的内存或外存地(首)址,以便再调度到该进程执行时,能从PCB中找到其程序和数据;

② 进程同步和通信机制,指实现进程同步和进程通信时必需的机制,如消息队列指针、信号量等,它们可能全部或部分地放在PCB中;

③ 资源清单,即一张列出了除CPU以外的、进程所需的全部资源及已经分配到该进程的资源的清单;

PCB 组织信息:

链接指针,它给出了本进程(PCB)所在队列中的下一个进程的PCB的首地址。

(3)进程控制块的组织方式

跟文件管理外存---分配方式类似。

①链接方式

②索引方式

二、进程管理(1.进程的基本概念)相关推荐

  1. linux ps 进程组,linux进程管理(2)---进程的组织结构

    一.目的 linux为了不同的进程管理目的,使用了不同的方法组织进程之间的关系,为了体现父子关系,使用了"树形"图:为了对同一信号量统一处理,使用了进程组:为了快速查找某个进程,使 ...

  2. Linux进程管理:进程和线程基础知识

    <Linux进程管理:进程和线程基础知识> <Linux-进程管理> <C语言进程的内存地址空间分配> <进程和线程模型> <(1)Linux进程 ...

  3. Linux 进程管理之进程的终结

    当一个进程终结时,内核必须释放掉它所占有的资源并把这一终结事件告知父进程. 进程的终结大部分都要靠 exit() 来完成的,最终的系统调用为 do_exit(). asmlinkage long sy ...

  4. 广州大学2020操作系统实验一:进程管理与进程通信

    相关资料 广州大学2020操作系统实验一:进程管理与进程通信 广州大学2020操作系统实验二:银行家算法 广州大学2020操作系统实验三:内存管理 广州大学2020操作系统实验四:文件系统 广州大学2 ...

  5. [转]QNX进程管理器-进程调度策略

    如果你认为本系列文章对你有所帮助,请大家有钱的捧个钱场,点击此处赞助,赞助额0.1元起步,多少随意 声明:本文只用于个人学习交流,若不慎造成侵权,请及时联系我,立即予以改正 锋影 email:1741 ...

  6. 【k8s】理解Docker容器的进程管理(PID1进程(容器内kill命令无法杀死)、进程信号处理、僵尸进程)

    文章目录 概述 1. 容器的PID namespace(名空间) 2. 如何指明容器PID1进程 3. 进程信号处理 4. 孤儿进程与僵尸进程管理 5. 进程监控 6. 总结 参考 概述 简介: Do ...

  7. (五)进程管理:进程的状态与控制

    文章目录 一.进程的状态 二.进程控制 1. 进程控制的原语 2. 挂起与激活 一.进程的状态 进程的生命周期:从创建到终止的过程 进程的三种基本状态 就绪(Ready) 可运行而未运行的状态,进程已 ...

  8. linux进程管理之进程创建

    所谓进程就是程序执行时的一个实例. 它是现代操作系统中一个很重要的抽象,我们从进程的生命周期:创建,执行,消亡来分析一下Linux上的进程管理实现. 一:前言 进程管理结构; 在内核中,每一个进程对应 ...

  9. 【Linux 内核】进程管理 ( 进程状态 | 进程创建 | 进程终止 | 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 )

    文章目录 一.进程状态 二.进程创建 三.进程终止 ( 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 ) 一.进程状态 Linux 进 ...

  10. Android系统中的进程管理:进程的创建

    对于操作系统来说,进程管理是其最重要的职责之一. 考虑到这部分的内容较多,因此会拆分成几篇文章来讲解. 本文是进程管理系统文章的第一篇,会讲解Android系统中的进程创建. 本文适合Android平 ...

最新文章

  1. 图像特征点—SIFT特征点
  2. Iterator、Iterable接口的使用及详解
  3. Codeforces 85D Sum of Medians
  4. 2021年中国数字化采购研究报告
  5. (二)stm32之中断配置
  6. Android攻略之入门
  7. 软工第三次作业——最大子段和的求解
  8. GIS应用开发AO(1)_普通几何图形绘制
  9. Maven的下载安装和环境配置
  10. linux更新字体库失败,wps for linux 字体库缺失问题的解决办法
  11. Linux一句话精彩问答
  12. 7个必备网站,查征信、查三无产品、查老赖、查犯罪记录!
  13. 使用STM32CubeProgrammer烧录STM32芯片
  14. C++ STL之命名空间、函数模板、类模板
  15. ECCV2022论文汇总:检测/分割/跟踪/3D/深度估计/姿态解算等多个方向!
  16. Java插入Excel指定行
  17. adb bugreport :查看设备所有信息(获取错误报告)
  18. CSS第三级选择器 Selectors Level 3 文档翻译
  19. nuxt.js开发环境使用mockjs模拟数据
  20. java象棋联网架构与设计_中国象棋程序的设计与实现(零)--原始版源码

热门文章

  1. kmeans-用户分层
  2. 接口,implement,多继承
  3. Linux学习第一节课
  4. 东方财富代码选股_教你选股!一招搞定!
  5. leetcode 904 滑动窗口
  6. 加号和减号在一起怎么读_幼儿园怎样认识加号,减号,等于号
  7. SQL去重的三种方法汇总​
  8. 51单片机学习笔记2 -- 单灯控制及流水灯
  9. python风变编程和扇贝编程_到底是扇贝编程还是风变编程?
  10. 岩板铺地好吗_铺地的石板如何用处高逼格,三个大师案例来教你!