第二章:进程管理

概念:一个具有一定独立功能的程序对某个数据集合的一次动态运行过程和资源分配过程。

相关元素:代码、数据、进程表

进程和程序的差别和联系:

·进程是动态的。程序是静态的

·进程是临时的,程序是永久的

·程序和进程都包括代码数据,进程还还有进程表

·程序经过多创建,能够相应不同的进程

·一个进程通过系统调用,能够被多个程序所调用

 性质:

·动态性

·并发性

·独立性

·异步性

 进程的三种主要状态:

    ·执行状态

·堵塞状态:因为各种原因,进程放弃处理机的执行,并且不再期望被调用进行处理。

      堵塞分为两种:

·被迫堵塞

·自我堵塞

   ·就绪状态:准备好资源等待由调度器调度进入执行状态

 三种状态之间的转换:

·执行状态 --> 堵塞状态

·执行状态 --> 就绪状态

·就绪状态 --> 执行状态

·堵塞状态 --> 就绪状态

 进程控制:

   ·进程创建:

首先查找系统的PCB表(进程控制表)。查询有无空的PCB表,假设有 。则申请一个。并对其进行初始化。初始化的项目有进程标识符(PID)、进程状态和执行程序的起
   始地址等。假设申请不成功,要么继续等待有空暇PCB表时继续申请。要么返回创建失败信息。

   ·进程的创建:

申请空白进程表—>为新进程分配资源—>初始化进程表—>假设进程就绪队列可以接纳新进程,便将进程插入就绪队列。

 创建进程的典型事件:

·用户登录

·作业调度

·提供服务

·应用请求

 进程撤销:

撤销原语首先检查PCB链表,寻找索要撤销的进程是否存在,假设找到了相应的表项,则撤销原语就释放该进程占用的资源并回收相应的PCB数据结构, 假设该进程还有子进
    程,则进程撤销原语必须先撤销子进程的PCB表并释放其占用的资源。

 进程撤销的情况:

    ·正常结束(自愿的)

    ·异常结束

·普通错误退出(自愿的)

·致命错误退出(非自愿的)

   ·外界干预(非自愿的)

 进程堵塞:

进程堵塞原语先停止处理机并同一时候保存该进程的处理现场,然后将堵塞进程插入到等待队列中,再将控制权交给调度程序,调度程序会按调度算法从就绪队列中选择一个进        程投入执行。

 进程唤醒:

唤醒原语将被唤醒的进程从对应的等待队列移除。并将其PCB中状态置为就绪状态。并将其送入就绪队列。此时。唤醒原语既能够从调度程序处直接返回,也能够转向进程        调度程序,由调度进程选择一个合适的进程去执行。

进程由执行状态变为堵塞状态时,是这个进程自己调用堵塞原语去完毕的,而进程由堵塞状态到就绪状态却是还有一个进程调用唤醒原语实现的。普通情况下,这个进程与被        唤醒进程是具有一定相关性的并发进程。

 可能引起堵塞和唤醒的事件:

·请求系统服务

·启动某种操作

·新数据尚未到达

·无新工作可做

 进程挂起:

挂起原语将进程交换到外存储区挂起。释放其在内存中占用的资源,改写PCB,返回系统。

 进程激活:

激活原语将进程从外存储区交换到内存,进行内存重定位,改写PCB进程状态信息。内存非配信息,程序计数器等,返回激活原语调用处。当激活后进程处于就绪状态时,        返回后,控制权将交还给调度程序。又一次调度。

 进程组织:

·进程实体:

   ·程序:也称正文,描写叙述进程所要完毕的功能,特指二进制的指令代码。

   ·数据集合:程序执行时所须要的数据结构,包含常数、变量、堆、数据栈     等。

   ·进程控制模块:

·进程控制模块包括了进程的描写叙述信息、控制信息和资源信息。是进程动态特性的集中反映。

·进程控制信息包含:进程的基本信息和处理机管理信息

·进程内存资源分配

·进程设备和文件的分配使用情况进程同信:进程之间的信息交换工作称为进程间的同信

   ·P、V操作称为低级操作

  ·高级通信的方式可分为三类:

·共享内存

·消息传递

·管道机制

 线程:

    特性:

·轻型实体(easy创建和撤销)

·独立调度和分配的基本单位

·可并发运行

·共享进程资源

·适应硬件发展

 调度:

   概念:进程的数量多于处理机的个数,竞争处理机。 分配处理机的任务由进程调度机完毕,由进程分配程序详细实施。用一定的算法,动态的把处理机分配给进程。使之                       能公平、合理和高效的 执行。

调度是分层次的。一个作业从提交開始。直到完毕,往往要经历多级调度。

 进程调度:又称为微观调度,是指决定就绪队列中那个进程将获得处理机,并实际将处理机分配给该进程的操作。

 引起进程调度的典型事件:

·正在执行的进程发生某事件而不能再继续执行

·执行中的进程因提出输入/输出请求而暂停执行

·在进程同信或同步过程中执行了某种原语操作,如P操作

·在可抢先式调度中,有一个比当前进程优先级更高的进程进入就绪队列

·在时间片轮转算法中。时间片用完

 分派程序:分派程序完毕进程的切换,是实际操作者:主要为上下文切换

  调度的基本准则包含:

·处理机利用率

·吞吐量

·周转时间

  调度方式:

·可抢先

·不可抢先

  调度的典型算法:

·先来先服务(FCFS)

·短作业或短进(线)程优先(SJF&SPF)

·时间片轮转调度算法(RR)

·高优先级优先调度算法

·高响应比优先调度(HRRN)算法:

响应比Rp=(等待时间+估计执行时间)

估计执行时间=(响应时间/估计执行时间)

·多级反馈队列调度算法

  同步与相互排斥:

    概念:

    ·间接相互制约:源于资源共享-相互排斥

  ·直接相互制约:源于进程合作-同步

 ·临界资源:一次仅仅同意一个进程有用的资源称为临界资源

临界区:在每一个进程中。訪问临街资源的那段代码称为临界区

  同步与相互排斥的基本准则:

·空暇则进 ·遇忙等待 ·有限等待 ·让权等待

  实现临界区相互排斥的基本方法:

·软件实现方法

·硬件实现方法

  信号量:信号量的值是可变的,由初始化和P、V操作来改变

  ·P(S)操作的定义:

--S.Q。        //表示申请一个资源

If(S.Q<0) //若没有空暇资源

{

调用进程进入等待队列S.Q;

堵塞调用进程。

}

  ·V(S)操作的定义:

--V(S)。 //表示释放一个资源

If(S.Q < 0) 若有进程处于堵塞状态

{

从等待队列S.Q中取出一个进程P;

进程P进入就绪队列。

}

    ·同步时:P、V操作一定会是一组,即同一时候出现

  ·相互排斥时:P、V操作一定是分开的

管程:

一个管程定义了一个数据结构和能为并发进程所执行的一组操作,这组操作能同步进程和改变管程的的数据。

     经典的同步问题:

·生产者-消费者问题

·读者-写者问题 ·哲学家问题

死锁:

  概念:系统中两个或两个以上的进程无限期的相互等待永远不会发生的条 件,系统处于一种停止状态,这样的情况称为死锁。

    死锁产生的原因:

·进程推进的书序不当

·对相互排斥资源分配不当

   产生死锁的四个必要条件(必须所有具备):

·相互排斥条件:随意时刻仅仅同意一个进程使用资源

·非剥夺条件:进程已经占用的资源,不会被强制剥夺

·占用并请求资源:进程占有部分资源,并申请很多其它的资源,且不会主动释放已占有的资源

·循环等待:请求资源的进程形成了循环

    死锁的处理策略:

·忽略死锁

·死锁的检測与恢复

·死锁的避免

·死锁的预防

   死锁预防:

条件              方法

----------------------------------------------------

相互排斥             虚拟设备假摆脱

占有并等待       一次分配所有资源

非剥夺           主动放弃

循环等待          有序分配资源

   死锁避免:

·安全状态

·不安全状态

   死锁的检測:

·资源分配图算法

·资源矩阵算法

  死锁的解除:

·资源剥夺法

·进程撤销法

·进程回退法

·又一次启动系统

时间: 2024-10-08 08:48:59

第二章:进程管理的相关文章

操作系统——第二章 进程管理

二.进程管理 2.1进程与线程 2.1.1进程的基本概念 PID (ProcessID) 2.1.1进程的概念 多道并发执行可能会发生的问题: 不能让程序粗野的执行,我们必须给他们引入一些约束: 进程包括什么: 进程控制块是一种数据结构,在Linux中是一个结构体   (答案就是上面的那张图) 挂起状态 (Linux代码) 2.1.6线程 设计之初进程是独立的,进程间不允许用相同的地址空间,必须得开辟一块新的存储空间,然后来取,线程的设计解决了这种问题. 比如还是播放器问题: 单进程的话,读完了

第二章 状态管理和绘制几何物体 总结

目标 1. 清除窗口 2.强制完成所有尚未执行的绘图操作 3.在2d或3d空间绘制图元 4.打开.关闭.查询状态 5.控制图元显示 6.在实心物体表面适当位置指定法线向量 7.用顶点数组和缓冲区对象存储和访问几何数据. 8.同时保存和恢复几个状态变量. 1.1 3种基本操作:清除窗口.绘制几何图形.绘制光栅对象. 2. 绘图工具箱: 2.1 清除RGBA模式的窗口 glClearColor(R, G, B, A); //将当前清除颜色设置成为一个状态变量 glClearDepth(1.0); /

Linux内核分析——第三章 进程管理

第三章 进程管理 3.1 进程 1.进程就是处于执行期的程序:进程就是正在执行的程序代码的实时结果:进程是处于执行期的程序以及相关的资源的总称:进程包括代码段和其他资源. 线程:是在进程中活动的对象. 2.执行线程,简称线程,是在进程中活动的对象.每个线程都拥有一个独立的程序计数器.进程栈和一组进程寄存器. 3.内核调度的对象是线程,而不是进程.Linux对线程并不特别区分,视其为特殊的进程 4.在现代操作系统中,进程提供两种虚拟机制:虚拟处理器和虚拟内存.在线程之间可以共享虚拟内存,但每个都拥

Linux进程管理(第二版) --进程管理命令

进程管理命令 一.查看用户信息w 1. w显示信息的含义 TTY:说明用户登录的方式,ttyN:表示以本地终端登录;pts/N表示以远程终端登录 JCPU:以终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里 PCPU:CPU执行程序耗费的时间 WHAT:用户正在执行的操作 load average:分别显示系统在过去1.5.15 分钟内的系统的平均负载程度[一般在0.8之下,我们认为系统负载较轻] FROM:显示用户从何处登录系统,":0"的显示代表该用户时从

第十二章 进程管理

一.进程 1.进程概述 一个程序是一个可执行文件,而进程是程序执行的动态过程.进程是为运行着的程序提供执行环境的实体,它包括一个地址空间和一个控制点. 当执行一个程序的时候,系统加载程序会把此程序加载到内存中,它在内存中由5部分组成:正文.初始化数据.未初始化数据.栈.用户区 进程通常由三大部分组成:代码.数据.进程控制块(PCB).代码部分描述了进程所要完成的功能:数据部分包括程序在执行的时候所需要的数据和工作区.进程的代码部分和数据部分是进程存在的物质基础.进程控制块(PCB)包括了进程的描

node.js学习第二天--进程管理

1.简介 process是一个全局内置对象,可以在代码中的任何位置访问此对象,这个对象代表我们的node.js代码宿主的操作系统进程对象. 使用process对象可以截获进程的异常.退出等事件,也可以获取进程的当前目录.环境变量.内存占用等信息,还可以执行进程退出.工作目录切换等操作. 下面我们一起来学习一下process对象的一些常用方法. 2.cwd函数的基本用法 当我们想要查看应用程序当前目录时,可以使用cwd函数,使用语法如下: process.cwd(); 获取程序目录的方法就是这样简

第二章 进程的控制

进程:由程序段.相关的数据段和PCB三部分便构成了进程实体进程的特征:动态性.并发性.独立性.异步性进程的三种状态:就绪(Ready)状态 执行(Running)状态 阻塞(Block)状态 临界区:人们把在每个进程中访问临界资源的那段代码称为临界区. 同步机制应遵循的规则 (1)空闲让进 (2)忙则等待 (3)有限等待 (4)让权等待 进程同步问题 "生产者--消费者"问题."读者--写者问题"."哲学家进餐问题"

第二章_session管理

2.1 URL重写 URL重写是Session追踪技术.须要将一个或多个token做为一个查询字符串加入到一个URL中. Token的格式通常是键=值. Url?key-1=value-1&key-2=value-2...&key-n=value-n 2.2 隐藏域 利用隐藏域来保持状态,与採用网址重写技术类似.但它不是将值加入到URL后面,而是将他们放在HTML表单的隐藏域中.当用户提交表单时,隐藏域的值也传送到server.仅仅有当页面包括表单.或者能够在页面中加入表单时,才适合使用隐

HttpClient4.3教程 第二章 连接管理

2.1.持久连接 两个主机建立连接的过程是很复杂的一个过程,涉及到多个数据包的交换,并且也很耗时间.Http连接需要的三次握手开销很大,这一开销对于比较小的http消息来说更大.但是如果我们直接使用已经建立好的http连接,这样花费就比较小,吞吐率更大. HTTP/1.1默认就支持Http连接复用.兼容HTTP/1.0的终端也可以通过声明来保持连接,实现连接复用.HTTP代理也可以在一定时间内保持连接不释放,方便后续向这个主机发送http请求.这种保持连接不释放的情况实际上是建立的持久连接.Ht

第三章 进程管理笔记

20135109 高艺桐 3.1进程 1.程序本身并不是进程,进程是处于执行期的程序以及相关资源的总称. 2.执行线程,简称线程,是进程中活动的对象.每个线程都拥有一个独立的计数器.进程栈和一组进程计数器. 3.内核调度的对象是线程而不是进程,对Linux而言,线程是一种特殊的进程. 4.进程在创建它时开始存活,系统调用通过复制一个现有的进程来创建一个全新的进程,调用fork()的进程为父进程,新产生的进程为子进程. 5.fork()系统调用从内核返回两次:一次回到父进程,一次回到新产生的子进程