进程管理——前驱图和程序执行

一、前驱图

前驱图是一个有向无循环图,记为DAG。用于这种图可以描述多个程序或进程之间的执行顺序关系。

  • 〇 表示一个程序、进程或是语句的结点。
  • → 表示结点间的执行顺序。

前趋关系“→ ”的形式化描述:→ ={<Pi, Pj> | Pi must complete before Pj may start}

<Pi, Pj>∈→,可写成Pi→Pj,表示在Pj开始执行之前Pi必须完成。此时称 Pi 是 Pj 的直接前驱,而称 Pj 是 Pi 的直接后继。在前驱图中把没有前驱的结点称为初始结点(Initial Node),把没有后继的结点称为终止结点 (Final Node)。此外,每个结点还具有一个重量(Weight),用于表示该结点所含有的程序量或程序的执行时间。

下图举例一个具有9个节点的前驱图:

存在如下前驱关系:

P1→ p2,P1→ p3,P1→ p4,P2→ p5,P3→ p5,P4→ p6,P4→ p7,P5→ p8,P6→ p8,P7→ p9,P8→ p9

注意:前驱图中不能存在循环,否则必然会产生不可能实现的前驱关系

例如: 如下关系就不可能实现

二、程序的顺序执行及其特征

1、程序的顺序执行

(a)程序间的顺序执行

(b)程序内部的顺序执行

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

2、顺序执行时的特征

  • 顺序性
  • 封闭性
  • 可再现性

程序顺序执行的特性,为程序员检测和校正程序的错误带来很大方便。

3、程序的并发执行及其特征

在操作系统中引入了多道程序设计技术后,系统中的程序才能并发执行,但是并非所有的程序都能并发执行。

例如:输入、计算、打印三个程序对一批作业进行处理时,存在以下的前趋关系:

①  Ii → Ci → Pi

②  Ii → Ii+1
     Ci → Ci+1
     Pi → Pi+1

(1)对每道程序依然存在这样的关系Ii → Ci → Pi,这是由程序的内在逻辑关系决定

(2)对不同程序之间,存在 Ii → Ii+1,Ci → Ci+1,Pi → Pi+1 的关系,这是由于系统资源的竞争带来的顺序性,这种顺序性是系统资源的前趋关系,非程序逻辑关系。

(3)不同程序之间的 Ii+2,Ci+1,Pi 不存在前趋关系

(a)程序的并发执行

定义:一组在逻辑上相互独立的程序或程序段在执行过程中其执行时间相互重叠。

对任意一个程序,存在前趋关系必须顺序执行,不存在前趋关系的可以并发执行。

(b)并发执行时的特征

  • 间断性

  程序在并发执行过程中由于共享资源而会相互制约,由此导致这些并发执行的程序出现 “执行——暂停——执行” 间断性活动规律。

  • 失去封闭性

  并发执行的程序在共享资源时可能会改变这些资源的状态,致使其他程序在运行时其运行环境被改变,由此失去封闭性。

  • 不可再现性

  程序在并发执行时如果失去封闭性,那么也会失去可再现性。

原文地址:https://www.cnblogs.com/weiyalin/p/10797859.html

时间: 2024-10-14 01:40:35

进程管理——前驱图和程序执行的相关文章

运维程序】简单的命令控制器(支持定时命令执行、重复定时任务命令和进程管理,开发这个小程序主要是为了方便管理服务进程)【个人github项目】

一.前言: command-controller 一个运维程序,简单的命令控制器(支持定时命令执行和重复定时命令,开发这个程序主要是为了方便管理服务进程) 本来是要用python做的,但是之前做ffmpeg的时候已经写了一部分Java的命令控制功能了,有些代码就拿过来改改用了(其实是为了偷懒qaq) 二.实现功能 1.进程管理 只支持本程序启动的进程管理,本程序主要功能是定时执行某些脚本或者系统命令,当然命令行和脚本是很自由的,更多用法请自行探索 2.定时命令.任务 3.重复定时命令.任务 4.

Linux性能及调优指南(翻译)之Linux进程管理

译文如下:1.1 Linux进程管理 进程管理是操作系统的最重要的功能之一.有效率的进程管理能保证一个程序平稳而高效地运行. Linux的进程管理与UNIX的进程管理相似.它包括进程调度.中断处理.信号.进程优先级.上下文切换.进程状态.进度内存等. 在本节中,我们将描述Linux进程管理的基本原理的实现.它将更好地帮助你理解Linux内核如何处理进程及其对系统性能的影响. 1.1.1 什么是进程?一个进程是一个运行在处理器的程序的一个实例.该进程使用Linux内核能够处理的任何资源来完成它的任

12个Linux进程管理命令介绍

12个Linux进程管理命令介绍 当程序可以执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.Linux提供了许多命令来让用户来高效掌控上述的操作. 执行中的程序称作进程.当程序可以执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.操作系统会有效地管理和追踪所有运行着的进程. 为了管

进程管理和终端驱动基本概念

一.前言 对于任何一种OS,终端部分的内容总是令人非常的痛苦和沮丧,GNU/linux也是如此.究其原因主要有两个,一是终端驱动和终端相关的系统软件承载了太多的内容:各种虚拟终端. 伪终端.串口通信.modem.printer等.其次可能是终端和信号处理.进程关系等耦合在一起加大了理解终端驱动的难度.本文的目标是希望能够理清这些内容. 在第二章,本文会简单介绍终端的一些基础知识,这些知识在wowo的终端基本概念文档中也有描述,我这里也重复一次,加深印象(呵呵,其实这一章的内容一年前就写了,后来暂

【学神-RHEL7】1-10-RHEL7进程管理

本节所讲内容: Linux进程管理 screen 实战后台实时执行命令备份命令   进程管理: pstree ps top nice 修改进程优先级 kill 前台后台进程切换 free  查看内存 screen   程序与进程: 程序是静态的(文件),进程是动态的(运行的程序).   进程和线程: 一个程序至少有一个进程,一个进程至少有一个线程. 进程之间内存是独立 线程之前内存共享   ,高并发好一些 .   安全性差一些.    查看进程树 显示进程号 -p [[email protect

linux 进程管理相关命令汇总

## processes 进程管理 ##ps查看当前系统执行的线程列表,进行瞬间状态,不是连续状态,连续状态需要使用top名称查看 更多常用参数请使用 man ps查看 ps ##显示所有进程详细信息 ps aux ##-u 显示某个用户的进程列表 ps -f -u www-data ## -C 通过名字或者命令搜索进程 ps -C apache2 ## --sort 根据进程cpu使用率降序排列,查看前5个进程 -pcpu表示降序 pcpu升序 ps aux --sort=-pcpu | he

Linux 124课程 7、进程管理

1.进程管理 一个程序被加载内存当中,称为一个进程 Linux 当中是以PID区分不同的进程 ps 用于列出当前的进程 aux 列出所有的进程 -eu 当前的用户的所有进程 lax 列出更多的长格式信息 -ef 列出所有进程 j 列出job信息 ps aux VSZ :进程申请的内存大小 RSS:系统分配的内存大小 TTY:? ?表示这个进程在后台运行 STAT: 表示进程的状态 T 表示进程被临时挂起: Z 进程刚刚被终止[僵尸进程]: R 进程被列入到计划,但是没有进入CPU: S 进入等待

Linux基础知识--进程管理与计划任务

Linux启动流程: 开机自检BIOS是检测硬件以及各个设备是否准备好 MBR引导是看系统放在哪个位置,进行加载:引导分区,里面有多个系统,看需要启动哪个系统 GRUP菜单,进行一些选项,比如说看启动哪个系统 INIT进程: 由Linux内核加载运行/sbin/init程序 是系统的第一个进程,是所有进程的祖宗,PID(进程标记)号永远为1 配置文件/etc/inittab Linux系统运行级别(runlevels) 有7个级别, 0关机 1单用户模式 2字符界面的多用户界面(不支持网络) 3

Linux 程序设计学习笔记----进程管理与程序开发(上)

转载请注明出处,http://blog.csdn.net/suool/article/details/38406211,谢谢! Linux进程存储结构和进程结构 可执行文件结构 如下图: 可以看出,此ELF可执行文件存储时(没有调入内存)分为代码区.数据区和未出花数据区三部分. 代码区:存放cpu的执行的机器指令. 数据区:包含程序中的已经初始化的静态变量,以及已经初始化的全局变量. 未初始化数据区:存入的是未初始化的全局变量和未初始化的静态变量. 现在在上面的程序代码中增加一个int的静态变量