进程管理1--进程的概念与操作
从进程的观点研究操作系统把OS看作是由若干个可独立运行的程序和一个可对这些程序进行协调控制的核心内核组成。
这些运行的程序称为进程它是资源分配和独立运行的基本单位每一个进程都完成某一特定任务。OS的内核则必须要控制和协调这些进程的运行解决进程之间的通信并从系统可并发工作为出发点实现并发进程间通信并解决由此带来的共享资源的竞争问题。
本文地址http://www.cnblogs.com/archimedes/p/os-process-management1.html转载请注明源地址。
1.进程的基本概念![](http://images.cnitblog.com/blog/617081/201408/272005356107582.jpg)
定义有向无循环图是一个二元组由结点的集合和有向边组成。其中
结点表示一条语句、一个程序段或一个进程 有向边两个结点之间的前趋关系“ ”→ ={(Pi,Pj)|Pi必须在Pj开始执行之前完成}。
直接前趋、直接后继
初始结点、终止结点
程序顺序执行通常一个程序可分成若干个程序段它们必须按照某种先后次序执行仅当前一操作执行后才能执行后继操作。
![](http://images.cnitblog.com/blog/617081/201408/272015143767498.jpg)
Eg2:进行计算 I:输入操作 C:计算操作 P:打印操作 在进行计算时总是先输入用户的程序和数据然后进行计算最后将结果打印出来。
程序顺序执行时有如下特征
顺序性—处理机的操作严格按照程序所规定的顺序执行每一操作必须在下一个操作开始之前结束。
封闭性—在封闭环境下执行独占全机资源执行结果不受外界影响。
可再现性—只要程序执行时的环境和初始条件相同当程序重复执行时不论它是从头到尾不停顿地执行还是“走走停停”地执行都将获得相同的结果。
程序并发执行 在处理一批作业时有的程序可实现并发执行![](http://images.cnitblog.com/blog/617081/201408/272019190488879.jpg)
失去封闭性—多个程序共享系统中的各种资源资源状态由多个程序来改变。 不可再现性—由于程序的并发执行打破了由另一程序独占系统资源的封闭性因而破坏了可再现性。 进程的定义、特征
1、进程(process)的定义
1进程是程序的一次执行。
2进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
3进程是程序在一个数据集合上的运行过程它是系统进行资源分配和调度的一个独立单位。
进程与程序的主要区别:程序是指令的有序集合其本身没有任何运行的含义它是一个静态的概念。而进程是程序在处理机上的一次执行过程它是一个动态概念。 程序的存在是永久的。而进程则是有生命期的它因创建而产生因调度而执行因得不到资源而暂停执行因撤消而消亡。 程序仅是指令的有序集合。而进程则由程序段、相关数据段、进程控制块PCB组成。 进程与程序之间不是一一对应。
1结构特征
为了描述和记录进程的运动变化过程并使之能正确运行每个进程都应配置了一个PCB。所以从结构上看每个进程进程实体都是由程序段、相关数据段及进程控制块PCB组成。
注在早期UNIX版本中称进程的三个组成部分为“进程映像”
2动态性
进程的实质是程序在处理机上的一次执行过程因此是动态的。所以动态性是进程的最基本的特征。同时动态性还表现在进程是有生命期的它因创建而产生因调度而执行因得不到资源而暂停执行因撤消而消亡。
指多个进程实体同时存在于内存中能在一段时间内同时运行。
引入进程的目的就是为了使进程能并发执行以提高资源利用率所以并发性是进程的重要特征也是OS的重要特征。
4独立性
指进程是一个能独立运行的基本单位也是系统进行资源分配和调度的独立单位。
5异步性
指进程以各自独立的、不可预知的速度向前推进。
进程的状态为了刻画了整个进程可以将一个进程的生命周期划分为一组状态
1、进程的五种状态两种短暂的状态、三种基本状态 new新建/创建:进程正在创建中的状态 terminated终止/撤消/退出进程执行完毕释放所占资源的状态。 ready-就绪: 进程已获得了除处理机以外的所有资源等待分配处理机执行的状态。 running-运行/执行: 当一个进程获得必要的资源并正在处理机上执行的状态。 waiting-等待/阻塞: 正在执行的进程由于发生某事件而暂时无法执行下去此时进程所处的状态。进程在运行期间并非固定处于某个状态而是不断从一个状态转换到另一个状态。
挂起状态/静止状态
程序在运行期间由于某种需要往往要将进程暂停执行使其静止下来以满足某些需要。这种静止状态就称为进程的挂起状态。
引入挂起状态的原因
终端用户的需要终端用户在自己程序运行中发现问题要求使正在执行的进程暂停执行而使进程处于挂起状态。 父进程的需要父进程为了考查和修改某个子进程或者协调各子进程间的活动需要将该子进程挂起。 操作系统的需要操作系统为了检查运行中的资源使用情况或进行记帐而将某些进程挂起。 对换的需要为了提高内存的利用率将内存中某些进程挂起以调进其它程序运行。 负荷调节的需要由于工作负荷较重而将一些不重要的进程挂起以保证系统能正常运行实时操作系统在引入挂起状态后就增加了挂起状态静止状态与非挂起状态活动状态间的转换如图所示
进程控制块PCB
是操作系统为了管理和控制进程的运行而为每一个进程定义的一个数据结构它记录了系统管理进程所需的全部信息。系统根据PCB而感知进程的存在PCB是进程存在的唯一标志。例Linux中的PCB
1、进程控制块PCB的作用
是OS对并发执行的进程进行控制和管理的根据。也是系统用来感知进程存在的根据即PCB是进程存在的唯一标志。2、进程控制块PCB中的信息
根据操作系统的要求不同PCB所包含信息有些不同但通常包含以下信息
1进程标识符
内部标识符由系统创建进程时分配给进程的唯一标识号通常为一整数称为进程号用于区分不同的进程
外部标识符由字母、数字组成由用户访问该进程时使用。
2处理机状态断点信息
即处理机中各种寄存器通用寄存器、PC、PSW等的内容
3进程调度
记录了进程调度的相关信息状态、优先级、事件等。
4进程控制
记录了系统对进程控制的信息程序和数据的地址、同步机制、资源清单、链接指针
3、进程控制块PCB的组织方式
在一个系统中通常存在着许多进程它们所处的状态不同为了方便进程的调度和管理需要将各进程的PCB用适当方法组织起来。目前常用的组织方式有
链接方式把同一状态的PCB链接成一个队列这样就形成了就绪队列、阻塞队列等。
![](http://images.cnitblog.com/blog/617081/201408/272321209239074.jpg)
进程控制是进程管理中最基本的功能即对系统中所有的进程实施有效的管理其功能包括
进程的创建 进程的撤消 进程的阻塞与唤醒等一个进程可以创建若干个新进程新创建的进程又可以创建子进程为了描述进程之间的创建关系引入了进程图如下图所示
1、进程图又称为进程树或进程家族树是描述进程家族关系的一棵有向树。
![](http://images.cnitblog.com/blog/617081/201408/291600529851307.jpg)
在多道程序环境中只有进程才可以在系统中运行。为了使一个程序能运行必须为它创建进程。导致进程创建的事件有
用户登录在分时OS中用户在终端键入登录命令后如是合法用户则系统为该终端创建一进程并插入就绪队列。作业调度在批处理OS中当按某算法调度一作业进内存系统为之分配必要资源同时为该作业创建一进程并插入就绪队列。
提供服务在程序运行中若用户需某种服务则系统创建一进程为用户提供服务并插入就绪队列。
应用请求在运行中由于应用进程本身的需求自己创建一进程并插入就绪队列。
3、进程的创建
操作系统一旦发现了要求创建进程的事件后便调用进程创建原语create()按以下过程创建一新进程
![](http://images.cnitblog.com/blog/617081/201408/291608040953599.jpg)
一个进程在完成其任务后应加以撤消以便及时释放其占有的各类资源。
1、导致进程撤消的事件
进程正常结束 进程异常结束如果系统中发生了要求撤消进程的事件OS便调用撤消原语去撤消进程。
2、撤消原语可采用2种撤消策略
只撤消指定的进程
撤消指定进程及其所有的子孙进程
进程的撤消的过程
![](http://images.cnitblog.com/blog/617081/201408/291617203454328.jpg)
当一个进程期待的事件还没有出现时该进程调用阻塞原语block()将自己阻塞起来
block()功能将进程由执行状态转变为阻塞状态。
对于处于阻塞状态的进程当该进程期待的事件出现时由其它相关进程调用唤醒原语wakeup() 将阻塞的进程唤醒使其进入就绪状态
wakeup()功能将进程由阻塞状态转变为就绪状态。
Linux进程控制【进程程序替换】 子进程 在被创建后,共享的是 父进程 的代码,如果想实现自己的逻辑就需要再额外编写代码,为了能让 子进程 执行其他任务,可以把当前 子进程 的程序替换为目标程序,此时需要用到 Linux 进程程序替换相关知识 子进程 替换为其他程序后,无法再执行原有程序,但 进程 始终为同一个
liunx:进程概念 输入单元:包括键盘, 鼠标,扫描仪, 写板等 中央处理器(CPU):含有运算器和控制器等 输出单元:显示器,打印机等
驱动开发:监控进程与线程对象操作 监控进程对象和线程对象操作,可以使用`ObRegisterCallbacks`这个内核回调函数,通过回调我们可以实现保护calc.exe进程不被关闭,具体操作从`OperationInformation- Object`获得进程或线程的对象,然后再回调中判断是否是计算器,如果是就直接去掉`TERMINATE_PROCESS`或`TERMINATE_THREAD`权限即可。
2.1.1操作系统(进程定义,组成,组织方式,特征,进程状态与转换,进程控制,原语) 1.进程的定义 2.进程的组成 3.组织方式 1.链接方式 2.索引方式 4.进程的特征 5.进程的状态 6.进程状态的转换 7.进程控制 1.什么是进程控制 2.如何实现进程控制 3.进程控制相关的原语
12.2 Linux进程启动的方式有几种? 在 Linux 系统中,每个进程都有一个唯一的进程号(PID),方便系统识别和调度进程。通过简单地输出运行程序的程序名,就可以运行该程序,其实也就是启动了一个进程。
CPU由一个进程快速切换至另一个进程,使得每个进程运行几十或几百毫秒,从而产生一种并行的错觉。
相关文章
- 程序员的量化交易之路(7)--金融概念Positon
- [Spring学习笔记 4 ] AOP 概念原理以及java动态代理
- 数据挖掘、数据分析的一些概念
- Unicode(UTF-8, UTF-16)令人混淆的概念
- 重新整理操作系统概念系类——进程引入
- 重新整理操作系统概念系类——进程互斥硬件实现
- 重新整理操作系统概念系类——文件管理
- 重新整理操作系统概念系类——进程互斥硬件实现
- 重新整理操作系统概念系类——进程互斥软件实现
- 重新整理操作系统概念系类——进程互斥
- 重新整理操作系统概念系类——进程引入
- 重新整理操作系统概念系类——进程通信
- block,inline和inline-block概念和区别
- Angular 为什么要引入 injection token 的概念
- 【操作系统笔记01】操作系统之概念、功能、运行机制和体系结构、进程相关的概念介绍
- Qt进程与线程的概念、Qt多线程编程、多线程间的同步
- 线程的概念 线程和进程的比较 多线程的用处 线程的基本操作 线程的创建 验证多线程实现多任务 及线程间共享全局变量 验证线程函数传参 collect2: error: ld returned 1 e
- 属性动画的概念解析--实现星星控件
- 指针的概念
- 【Linux 内核】CFS 调度器 ① ( CFS 完全公平调度器概念 | CFS 调度器虚拟时钟 Virtual Runtime 概念 | 四种进程优先级 | 五种调度类 )
- 【Linux 内核】进程管理 ( 进程特殊形式 | 内核线程 | 用户线程 | C 标准库与 Linux 内核中进程相关概念 | Linux 查看进程命令及输出字段解析 )
- Linux 操作系统中进程和线程的概念
- 【看表情包学Linux】进程的概念 | 进程控制块 PCB | 父进程与子进程 | 进程 ID | task_struct
- 深度学习与自然语言处理 主要概念一览
- Vue (完结篇)- Vuex 概念 、开启Apache的gzip压缩