进程管理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()将指定进程激活。

进程的挂起过程

进程的激活过程

时间: 2024-10-31 21:31:08

进程管理1--进程的概念与操作的相关文章

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

对于操作系统来说,进程管理是其最重要的职责之一. 考虑到这部分的内容较多,因此会拆分成几篇文章来讲解. 本文是进程管理系统文章的第一篇,会讲解Android系统中的进程创建. 本文适合Android平台的应用程序开发者,也适合对于Android系统内部实现感兴趣的读者. 概述 Android系统以Linux内核为基础,所以对于进程的管理自然离不开Linux本身提供的机制.例如: 通过fork来创建进行 通过信号量来管理进程 通过proc文件系统来查询和调整进程状态等 对于Android来说,进程

linux进程管理之进程创建

所谓进程就是程序执行时的一个实例. 它是现代操作系统中一个很重要的抽象,我们从进程的生命周期:创建,执行,消亡来分析一下Linux上的进程管理实现. 一:前言 进程管理结构; 在内核中,每一个进程对应一个task.就是以前所讲的PCB.它的结构如下(include/linux/sched.h): struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ void *stack; at

Node.js进程管理之进程集群

一.cluster模块 Node.js是单线程处理,对于高并发的请求怎么样能增加吞吐量呢?为了提高服务器的利用率,能不能多核的来处理呢?于是就有了cluster模块. cluster模块可以轻松实现运行在同一机器不同进程上的TCP或HTTP服务器集群.它们仍使用相同的底层套接字,从而在相同的IP地址和端口组合上处理请求. 下面是它的一些事件属性和方法. 事件: fork:当新的工作进程已经被派生时发出.callback函数接收worker对象作为唯一的参数.function(Worker) on

Spark修炼之道(基础篇)——Linux大数据开发基础:第七节:进程管理

本节主要内容 进程管理简介 进程管理常用命令 计划任务 1. 进程管理简介 (1)进程概念 进程是操作系统中非常重要的一个概念,进程是程序的执行过程,相对于程序,进程是动态的,在linux系统中,它与用户权限相关,程序与进程并没有一一对应,一个程序可能对应多个进程,例如: //ps命令列出当前所有对应当前用户的活动进程 xtwy@ubuntu:~$ ps PID TTY TIME CMD 2087 pts/0 00:00:00 bash 2105 pts/0 00:00:00 ps xtwy@u

Linux 进程管理剖析(创建、管理、调度和销毁)

Linux 是一种动态系统,能够适应不断变化的计算需求.Linux 计算需求的表现是以进程 的通用抽象为中心的.进程可以是短期的(从命令行执行的一个命令),也可以是长期的(一种网络服务).因此,对进程及其调度进行一般管理就显得极为重要. 在用户空间,进程是由进程标识符(PID)表示的.从用户的角度来看,一个 PID 是一个数字值,可惟一标识一个进程.一个 PID 在进程的整个生命期间不会更改,但 PID 可以在进程销毁后被重新使用,所以对它们进行缓存并不见得总是理想的. 在用户空间,创建进程可以

Linux进程管理及作业控制

Linux是一个多任务的操作系统,系统上同时运行着多个进程,正在执行的一个或多个相关进程称为一个作业.使用作业控制,用户可以同时运行多个作业,并在需要时在作业之间进行切换.本章详细介绍进程管理及作业控制的命令,包括启动进程.查看进程.调度作业的命令. 进程及作业的概念 Linux是一个多用户多任务的操作系统.多用户是指多个用户可以在同一时间使用计算机系统:多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务. 操作系统管理多个用户的请求和多个任务.大多数系统都只

Linux进程管理机制概述

一 .进程的概念和分类 1.进程的概念 Linux是一个多用户多任务的操作系统.多用户是指多个用户可以在同一时间使用同一个linux系统:多任务是指在Linux下可以同时执行多个任务,更详细的说,linux采用了分时管理的方法,所有的任务都放在一个队列中,操作系统根据每个任务的优先级为每个任务分配合适的时间片,每个时间片很短,用户根本感觉不到是多个任务在运行,从而使所有的任务共同分享系统资源,因此linux可以在一个任务还未执行完时,暂时挂起此任务,又去执行另一个任务,过一段时间以后再回来处理这

linux 查找进程及终止进程操作的相关命令

  使用linux操作系统,难免遇到一些软件"卡壳"的问题,这时就需要使用linux下强大的kill命令来结束相关进程.这在linux系统下是极其容易的事情,你只需要kill xxx即可,这里xxx代表与此软件运行相关的进程PID号. 首先,我们需要使用linux下另外一个命令ps查找与进程相关的PID号:ps aux | grep program_filter_word 1)ps a 显示现行终端机下的所有程序,包括其他用户的程序. 2)ps -A 显示所有程序. 3)ps c 列出

进程管理3--经典的进程同步问题

管程机制 用信号量机制实现进程间的同步和互斥,既方便又有效.但存在以下两个问题: 每个访问临界资源的进程都必须自备同步操作(P.V操作),这使大量的同步操作分散在各个进程中,给系统的管理带来麻烦. 会因同步操作使用不当而导致系统死锁. 解决方法: 管程(Monitors) Dijkstra于1971年提出:为每个共享资源设立一个"秘书"来管理对它的访问.  一切来访者都要通过秘书,而秘书每次仅允许一个来访者(进程)来访问共享资源.这样既便于系统管理共享资源,又能保证进程的互斥访问和同步