进程管理1,进程管理器


从进程的观点研究操作系统,把OS看作是由若干个可独立运行的程序和一个可对这些程序进行协调控制的核心(内核)组成。

这些运行的程序称为进程,它是资源分配和独立运行的基本单位,每一个进程都完成某一特定任务。OS的内核则必须要控制和协调这些进程的运行,解决进程之间的通信,并从系统可并发工作为出发点,实现并发进程间通信,并解决由此带来的共享资源的竞争问题。

本文地址:http://www.cnblogs.com/archimedes/p/os-process-management1.html,转载请注明源地址。

1.进程的基本概念

前趋图:

定义:有向无循环图,是一个二元组,由结点的集合和有向边组成。其中:

结点:表示一条语句、一个程序段或一个进程 有向边:两个结点之间的前趋关系“      ”

   ( → ={(Pi,Pj)|Pi必须在Pj开始执行之前完成})。

直接前趋、直接后继

初始结点、终止结点

程序顺序执行

通常一个程序可分成若干个程序段,它们必须按照某种先后次序执行,仅当前一操作执行后,才能执行后继操作。

 

Eg2:进行计算: I:输入操作 C:计算操作 P:打印操作 在进行计算时,总是先输入用户的程序和数据,然后进行计算,最后将结果打印出来。

程序顺序执行时有如下特征:

顺序性—处理机的操作严格按照程序所规定的顺序执行,每一操作必须在下一个操作开始之前结束。

封闭性—在封闭环境下执行,独占全机资源,执行结果不受外界影响。

可再现性—只要程序执行时的环境和初始条件相同,当程序重复执行时,不论它是从头到尾不停顿地执行,还是“走走停停”地执行,都将获得相同的结果。

程序并发执行

在处理一批作业时,有的程序可实现并发执行 程序并发执行时的特征 间断性—相互制约导致并发程序具有“执行-暂停-执行”这种间断性的活动规律。 失去封闭性—多个程序共享系统中的各种资源,资源状态由多个程序来改变。 不可再现性—由于程序的并发执行,打破了由另一程序独占系统资源的封闭性,因而破坏了可再现性。 进程的定义、特征

1、进程(process)的定义

   1)进程是程序的一次执行。

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

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

进程与程序的主要区别:
  • 程序是指令的有序集合,其本身没有任何运行的含义,它是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态概念。
  • 程序的存在是永久的。而进程则是有生命期的,它因创建而产生,因调度而执行,因得不到资源而暂停执行,因撤消而消亡。
  • 程序仅是指令的有序集合。而进程则由程序段、相关数据段、进程控制块(PCB)组成。
  • 进程与程序之间不是一一对应。
 

程序

进程

概念

静态

动态

所在存储器

外存

内存

存在时间

永久

有生命期

组成

有序指令

程序段,数据段,PCB

对应关系

一个程序可对应多个进程

一个进程可对应多个程序

 

进程的特征

进程(process)的基本特征:

(1)结构特征

       为了描述和记录进程的运动变化过程,并使之能正确运行,每个进程都应配置了一个PCB。所以,从结构上看,每个进程(进程实体)都是由程序段、相关数据段及进程控制块(PCB)组成。

注:在早期UNIX版本中称进程的三个组成部分为“进程映像”

(2)动态性

       进程的实质是程序在处理机上的一次执行过程,因此是动态的。所以动态性是进程的最基本的特征。同时动态性还表现在进程是有生命期的,它因创建而产生,因调度而执行,因得不到资源而暂停执行,因撤消而消亡。

(3)并发性

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

    引入进程的目的就是为了使进程能并发执行,以提高资源利用率,所以并发性是进程的重要特征,也是OS的重要特征。

(4)独立性

    指进程是一个能独立运行的基本单位,也是系统进行资源分配和调度的独立单位。

(5)异步性

    指进程以各自独立的、不可预知的速度向前推进。

进程的状态

为了刻画了整个进程,可以将一个进程的生命周期划分为一组状态:

1、进程的五种状态(两种短暂的状态、三种基本状态)

new新建/创建:进程正在创建中的状态 terminated终止/撤消/退出:进程执行完毕,释放所占资源的状态。 ready-就绪:  进程已获得了除处理机以外的所有资源,等待分配处理机执行的状态。 running-运行/执行: 当一个进程获得必要的资源并正在处理机上执行的状态。 waiting-等待/阻塞: 正在执行的进程由于发生某事件而暂时无法执行下去,此时进程所处的状态。

进程在运行期间并非固定处于某个状态,而是不断从一个状态转换到另一个状态。

2、进程状态转换

3、进程的挂起状态

在某些系统中,为了更好地管理和调度进程,引入了挂起状态:

挂起状态/静止状态:

      程序在运行期间,由于某种需要,往往要将进程暂停执行,使其静止下来,以满足某些需要。这种静止状态就称为进程的挂起状态。

引入挂起状态的原因:

  • 终端用户的需要:终端用户在自己程序运行中发现问题要求使正在执行的进程暂停执行而使进程处于挂起状态。
  • 父进程的需要:父进程为了考查和修改某个子进程,或者协调各子进程间的活动,需要将该子进程挂起。
  • 操作系统的需要:操作系统为了检查运行中的资源使用情况或进行记帐,而将某些进程挂起。
  • 对换的需要:为了提高内存的利用率,将内存中某些进程挂起,以调进其它程序运行。
  • 负荷调节的需要:由于工作负荷较重,而将一些不重要的进程挂起,以保证系统能正常运行(实时操作系统)

在引入挂起状态后,就增加了挂起状态(静止状态)与非挂起状态(活动状态)间的转换,如图所示:

进程控制块Process Control Block

进程控制块PCB

     是操作系统为了管理和控制进程的运行而为每一个进程定义的一个数据结构,它记录了系统管理进程所需的全部信息。系统根据PCB而感知进程的存在,PCB是进程存在的唯一标志。例:Linux中的PCB

1、进程控制块PCB的作用

Œ是OS对并发执行的进程进行控制和管理的根据。也是系统用来感知进程存在的根据,即PCB是进程存在的唯一标志。

2、进程控制块PCB中的信息

     根据操作系统的要求不同,PCB所包含信息有些不同,但通常包含以下信息:

Œ(1)进程标识符:
内部标识符(由系统创建进程时分配给进程的唯一标识号,通常为一整数,称为进程号,用于区分不同的进程)
外部标识符(由字母、数字组成,由用户访问该进程时使用)。

(2)处理机状态(断点信息):
   即处理机中各种寄存器(通用寄存器、PC、PSW等)的内容

Ž(3)进程调度:
   记录了进程调度的相关信息(状态、优先级、事件等)。

(4)进程控制:
    记录了系统对进程控制的信息(程序和数据的地址、同步机制、资源清单、链接指针)

3、进程控制块PCB的组织方式

在一个系统中,通常存在着许多进程,它们所处的状态不同,为了方便进程的调度和管理,需要将各进程的PCB用适当方法组织起来。目前常用的组织方式有:Œ

链接方式:把同一状态的PCB链接成一个队列,这样就形成了就绪队列、阻塞队列等。

索引方式 :将同一状态的进程组织在一个索引表中,索引表的表项指向相应的PCB,不同状态对应不同的索引表。

进程的控制

进程控制是进程管理中最基本的功能,即对系统中所有的进程实施有效的管理,其功能包括

  • 进程的创建
  • 进程的撤消
  • 进程的阻塞与唤醒等,

这些功能一般是由操作系统的内核来完成。

进程创建

       一个进程可以创建若干个新进程,新创建的进程又可以创建子进程,为了描述进程之间的创建关系,引入了进程图(如下图所示:)

1、进程图:又称为进程树或进程家族树,是描述进程家族关系的一棵有向树。

  2、引起进程创建的事件

在多道程序环境中,只有进程才可以在系统中运行。为了使一个程序能运行,必须为它创建进程。导致进程创建的事件有:

用户登录:在分时OS中,用户在终端键入登录命令后,如是合法用户,则系统为该终端创建一进程,并插入就绪队列。

作业调度:在批处理OS中,当按某算法调度一作业进内存,系统为之分配必要资源,同时为该作业创建一进程,并插入就绪队列。

Ž提供服务:在程序运行中,若用户需某种服务,则系统创建一进程为用户提供服务,并插入就绪队列。

应用请求:在运行中,由于应用进程本身的需求,自己创建一进程,并插入就绪队列。

3、进程的创建

操作系统一旦发现了要求创建进程的事件后,便调用进程创建原语create()按以下过程创建一新进程:

进程的撤消

一个进程在完成其任务后,应加以撤消,以便及时释放其占有的各类资源。

1、导致进程撤消的事件

  • 进程正常结束
  • 进程异常结束
  • 外界干预

   如果系统中发生了要求撤消进程的事件,OS便调用撤消原语去撤消进程。

2、撤消原语可采用2种撤消策略

只撤消指定的进程

撤消指定进程及其所有的子孙进程

进程的撤消的过程:

进程的阻塞与唤醒

当一个进程期待的事件还没有出现时,该进程调用阻塞原语block()将自己阻塞起来;

block()功能:将进程由执行状态转变为阻塞状态。

对于处于阻塞状态的进程,当该进程期待的事件出现时,由其它相关进程调用唤醒原语wakeup() 将阻塞的进程唤醒,使其进入就绪状态;

wakeup()功能:将进程由阻塞状态转变为就绪状态。

1、引起进程阻塞和唤醒的事件

  • 请求系统服务
  • 启动某种操作
  • 新数据尚未到达
  • 无新工作可做

2、进程的阻塞过程

3、进程的唤醒过程

进程的挂起与激活

    当引起进程挂起的事件发生时,系统就将利用挂起原语suspend()将指定进程或处于阻塞状态的进程挂起。当发生激活进程的事件时,系统就将利用激活原语active()将指定进程激活。

进程的挂起过程:

进程的激活过程:

参考资料

《华东理工大学  操作系统》

 


进程管理

设计思想说明:
用定义结构体来表示进程控制块
函数说明:
AddProcess(): 来增加进程

sort():按优先级和到达时间排序

print():打印

attemper():调度

代码:
#include "stdio.h"

#include<windows.h>

#define Time int

#define Max 100

typedef struct process

{

char name[10];//进程名

int priority;

Time ReachTime;//到达时间

Time NeedTime;//需要时间

Time UsedTime;//已用时间

char state;//状态

}PCB;//进程控制块

int n;//标示进程的总数

PCB pcb[Max];

int pTime;//时间片大小

void AddProcess()

{

char ch;

do {

system("cls");

printf(" n 请输入进程名");

scanf("%s",pcb[n].name);

printf(" 请输入进程的优先级(0-10)");

scanf("%d",&pcb[n].priority);

printf(" 请输入进程需要的时间");

scanf("%d",&pcb[n].NeedTime);

pcb[n].ReachTime=n;

pcb[n].UsedTime=0;

pcb[n].state='W';

n++;

do

{

system("cls");

printf("还要继续增加进程吗,是(Y),否(N)");

ch=getche();

} while(ch!='Y'&&ch!='N'&&ch!='y'&&ch!='n');

}while (ch=='Y'||ch=='y');

}

// 排序函数,将最先运行的进程放在最先即pcb[0]

void sort()

{//用冒泡排序

int i,j;

PCB temp;

//先按到达时间排序

for (i=0;i<n-1;i++)

{

for (j=n-2;j>=i;j--)

{

......余下全文>>
 

1怎玩“进程管理”,通过进程管理可以达到什目的?

进程管理没有什么好玩的。看进程管理一般可以看一下电脑现在那个程序用的资源多,可以简单的了解一下系统有没有什么问题,比如有没有可凝的程序之类的,不过现在很多木马和病毒在进程管理里看不到。所以进程管理也没有什么好玩的!
 

相关内容

    暂无相关文章