一、进程

1.1.进程的定义

  • 程序关于某个数据集合的一次执行过程

1.2.进程的特征(与程序比较)

  • 结构特征

    • 进程控制块(PCB) + 程序 + 数据 = 进程实体
  • 动态性 -- 最基本特征
    • 进程:进程实体的一次执行过程,有生命周期
    • 程序:程序是一组有序指令的集合,是静态的概念

1.3.进程的三种基本状态

  • 就绪状态(Ready)

    • 进程已获得除CPU之外的所有必需的资源,一旦得到CPU控制权,立即可以运行
  • 运行状态(Running)
    • 进程已获得运行所必需的资源,它正在处理机上执行
  • 阻塞状态(Blocked)
    • 正在执行的进程由于发生某时间而暂时无法执行时,便放弃处理机而处于暂停状态,称该进程处于阻塞状态或等待状态

1.4.进程的五种状态

  • 引入挂起状态后,增加了挂起状态(静止状态)到非挂起状态(活动状态)的转换,或者相反

二、进程互斥与同步

2.1.进程间两种形式的制约关系

  • 间接相互制约关系 --- 源于资源共享
  • 直接相互制约关系 --- 源于进程合作

2.1.临界资源

  • 临界资源(Critical Resource):把一段时间内只允许一个进程访问的资源称为临界资源或独占资源
  • 临界区(Critical Section):每个进程中访问临界资源的那段代码称为临界区

三、信号量机制

3.1.基本概念

  • 信号量时OS提供的管理共有资源的有效手段
  • 信号量时一个整数,当信号量大于等于零时,代表可供并发进程使用的资源数量,当信号量小于零时,表示处于阻塞态的进程的个数

3.2.信号量的操作

  • Wait操作:

    • 申请操作,减量操作,S.value:=S.value-1
    • 当S.value<0时,表示资源分配完,进行自我阻塞
  • Signal操作:
    • 释放资源,增量操作,S.value:=S.value+1
    • 当S.value≦0,唤醒S.L链表中的等待进程

四、信号量的应用

4.1.利用信号量实现进程互斥(模式)

  • 为使多个进程互斥的访问某临界资源,须为该资源设置一互斥信号量mutex,并设其初始值为1,然后将各进程访问资源的临界区CS置于wait(mutex)和signal(mutex)之间即可

4.2.利用信号量实现前驱关系(模式)

  • 设有两个并发执行的进程P1和P2,P1中有语句S1,P2中有语句S2,希望在S1执行后再执行S2
  • 使进程P1和P2共享一个公用信号量S,并赋予其初值为0
  • 进程P1: S1; Signal(S);
  • 进程P2:Wait(S); S2;

4.3.利用记录型信号量实现同步(模式)

  • p1,p2两进程因合作完成一项任务而共用一个变量x。进程p2将处理结果送入x;进程p1将x的结果打印
  • 即:p2: x=处理结果;
  • p1: Print(x);

五、进程调度

5.1.基本概念

  • 也称短程调度(Short-Term Scheduling),用来决定就绪队列中的哪个进程应获得处理机,然后再由分派程序把处理机分配给该进程

5.2.非抢占方式(Non-preemptive Mode)

  • 一旦把处理机分配给某进程后,便让该进程一直执行,直至该进程完成或发生某事件而被阻塞时,才把处理机分配给其他进程,绝不允许进程抢占已分配出去的处理机
  • 评价:实现简单,系统开销小;适用于大多数的批处理OS,但在要求比较严格的实时系统中,不宜采用这种调度方式

5.3.抢占方式(Preemptive Mode)

  • 允许调度程序根据某种原则,区暂停某个正在执行的进程,将处理机重新分配给另一进程
  • 抢占原则:
    • 时间片原则:各进程按时间片运行,一个时间片用完时,停止该进程执行重新进行调度
    • 短作业(进程)优先原则:短作业(进程)可以抢占长作业(进程)的处理机
    • 优先权原则:优先权高的可以抢占优先权低的进程的处理机

六、调度算法

6.1.分类

  • 先来先服务
  • 短作业(进程)优先调度算法
  • 高优先权优先调度算法
  • 时间片轮转调度算法

6.2.先来先服务调度算法(FCFS)

  • 是一种最简单的调度算法,既可用于作业调度,也可用于进程调度
  • 进程调度采用FCFS算法时,每次调度都从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之运行
    • FCFS算法比较有利于长作业(进程),而不利于短作业(进程)

6.3.短作业(进程)优先调度算法(SJ(P)F)

  • 对短作业或短进程优先调度的算法,可以分别用于作业调度和进程调度

    • 短作业优先(SJF)的调度算法:从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行
    • 短进程优先(SPF)调度算法:是从就绪队列中选出一估计运行时间最短的进程,将处理机分配给它,使它立即运行
  • SJF调度算法的优缺点:
    • 优点:有效降低作业的平均等待时间,提高系统吞吐量
    • 缺点:对长作业不利
      • 该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)会被及时处理
      • 由于作业(进程)的长短只是根据估计执行时间定的,主观因素较大,不一定能真正做到短作业优先

6.4.高优先权优先调度算法

  • 为照顾紧迫性作业,使之在进入系统后便获得优先处理,引入了最高优先权优先(FPF)调度算法
  • 此算法常用于批处理系统中,作为作业调度算法,也作为多种操作系统中的进程调度算法,还可用于实时系统中
  • 优先权的类型:
    • 静态优先权:在创建进程时确定的,在进程的整个运行期间保持不变。利用某一范围的整数来表示(0~7),又称为优先数
    • 动态优先权:在创建进程时所赋予的优先权可以随进程的推进或随其等待时间的增加而改变
  • 高响应比优先调度算法
    • 优先权 = (等待时间+要求服务时间)/要求服务时间
    • 或Rp = 响应时间/要求服务时间
    • 从上式可以看出:
      • 如作业等待时间相同,则要求服务的时间愈短优先权愈高,所以该算法利于短作业
      • 当要求服务的时间相同,作业优先权的高低决定于其等待时间的长短,所以时先来先服务
      • 对于长作业,作业的优先级可以随等待时间的增加而提高,当其等待时间足够长也可获得处理机

6.5.时间片轮转调度算法

  • 每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间

    • 如果在时间片结束时进程还没有运行结束,则CPU将被剥夺并分配给另一进程,该进程到就绪队列队尾重新排队
    • 如果进程在时间片内阻塞或结束,则CPU当即进行切换

七、死锁

7.1.基本概念

  • 是指多个进程在运行过程中因剥夺资源而造成的一种僵局,当进程处于这种状态时,若无外力作用,它们都将无法再向前推进

7.2.产生死锁的原因

  • 竞争资源:当系统中供多个进程共享的资源如打印机、公用队列等,其数目不足以满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁

    • 可剥夺性资源:资源分配给进程后可以被高优先级的进程剥夺,如CPU、主存
    • 不可剥夺性资源:分配给进程后只能在进程用完后才释放的资源,如磁带机、打印机等
  • 进程间推进顺序非法:进程在运行过程中,请求和释放资源的顺序不当,也同样会导致产生死锁

7.3.产生死锁的必要条件

  • 互斥条件:进程访问的时临界资源,即在一段时间内资源只由一个进程占用,如果此时还有其他进程请求该资源,则请求者只能等待,直至占有该资源的进程用完释放
  • 请求和保持条件:一进程在请求新的资源的同时,保持对已分配资源的占有
  • 不可剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放
  • 环路等待条件:指在发生死锁时,必然存在一个进程--资源的环形链

7.4.处理死锁的基本方法

  • 预防死锁:设置某些限制条件,去破坏产生死锁的四个必要条件的一个或几个

    • 摒弃“请求和保持”条件
    • 摒弃”不剥夺“条件
    • 摒弃”环路等待“条件
  • 避免死锁:防止系统进入不安全状态
    • 银行家算法避免死锁
  • 检测死锁
  • 解除死锁

霍纳法树形流图中处理机p个数_处理机管理(进程管理)相关推荐

  1. 霍纳法树形流图中处理机p个数_2009系统结构试卷答案

    一.单项选择题(共 10 分,每选 1 分) 1. 与流水线最大吞吐率高低有关的是 ( C ) A. 各个子过程的时间 B. 最快子过程的时间 C. 最慢子过程的时间 D. 最后子过程的时间 2. 在 ...

  2. 霍纳法树形流图中处理机p个数_计算机系统结构习题课

    1.选择题 系统多级层次中,从下层到上层,各级相对顺序正确的是(B ) A 汇编语言机器级--操作系统机器级--高级语言机器级 B 微程序机器级--传统机器语言机器级--汇编语言机器级 C传统机器语言 ...

  3. JavaScript实现hornerMethod霍纳法算法(附完整源码)

    JavaScript实现hornerMethod霍纳法算法(附完整源码) hornerMethod.js完整源代码 hornerMethod.js完整源代码 /*** @param {number[] ...

  4. 7-6 统计字符串中数字字符的个数_洛谷 || 标题统计(C语言)

    点击上方「蓝字」关注"程序员Bob" 每天与你不见不散! 每日一句,送给最珍贵的你: Happy people focus on what they have, unhappy p ...

  5. c语言用字符串统计一个整数中数字的个数_全国计算机等级考试二级C语言

    590. 在 C 程序中,用_____表示逻辑值"真". A) 1 B) 非 0 的数 C) 非 1 的数 D) 大于 0 的数 正确答案:B 591. 假设变量已正确定义,表达式 ...

  6. java中输出5个数_编写一个程序,要求用户输入5个数字,并输出这些数字中最大的数字和这些数字中最小的数字...

    编写一个程序,要求用户输入5个数字,并输出这些数字中最大的数字和这些数字中最小的数字 . 因此,例如,如果用户键入数字2456 457 13 999 35,则输出将如下所示:最大数字是2456,最小数 ...

  7. python获取列表中某个元素个数_如何获取列表中的元素数?

    How to get the size of a list? 要查找列表的大小,请使用内置函数len:items = [] items.append("apple") items. ...

  8. 关于python变量使用下列说法中错误的是_关于Python内存管理,下列说法错误的是_学小易找答案...

    [单选题]Python 编程中用代码缩进表示逻辑递进关系,通常用几个空格 [判断题]决定系数(英语:coefficient of determination,记为R2或r2)在统计学中用于度量因变量的 ...

  9. 如何在表格数据中加同一个数_怎么在excel表格中的数字前统一加一个字母

    怎么在excel表格中的数字前统一加一个字母以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 怎么在excel表格中的数字 ...

最新文章

  1. IntelliJ IDEA 2018.1新特性
  2. 配置管理小报111106:在wincvs中查找文件
  3. C#实现对Word文件读写[转]
  4. 《Linux就该这么学》培训笔记_ch06_存储结构与磁盘划分
  5. mysql 触发器计算总价,mysql’插入’触发器根据其他字段计算字段
  6. 用观察者模式编写一个可被其他对象拓展复用自定义事件系统
  7. 成为中国最好的Magento开发公司
  8. linux redis 普通用户,非root用户安装redis
  9. DEBERTA(Decoding-enhanced BERT with disentangled attention) 论文笔记
  10. 无法连接到数据库网络或无法登录数据库等问题整合
  11. 梳理数仓FI manager节点健康检查逻辑
  12. blob字段如何更新_Axure RP8 中继器:字段增删改
  13. 百度深度学习初级工程师认证划水贴
  14. [译]反射(Reflection)和动态(dynamic)
  15. 打开pdf文件提示文件过大_如何把pdf文件进行分割?拆分pdf文件的方法分享
  16. 本地邮件服务器 易邮 使用
  17. Layui表单验证lay-verify属性
  18. 南京邮电大学MOOC高级程序语言设计(C++)第六章编程题答案
  19. 如何轻松使用阿里云得矢量图标库
  20. [从头读历史] 第253节 孔子和他的《春秋》 [BC722至BC658]

热门文章

  1. PC817/TLP2309/TLP291/AQY280S主要参数对比
  2. 线程启动语句的顺序是否决定线程的执行次序。_详细分析 Java 中启动线程的正确和错误方式
  3. 使用Preference保存设置
  4. px、dp和sp,这些单位有什么区别?
  5. android平台的s5pc110触摸屏驱动分析
  6. 超文本传输协议及HTTP包
  7. catia linux下载64位,CATIA V5 CATSysDemon.exe缓冲区溢出漏洞
  8. 计算机工程与应用查重吗,计算机工程期刊录用率_计算机工程与应用期刊_计算机八大核心期刊...
  9. Java代码服务器上下载图片_Java如何从服务器中下载图片
  10. 北斗三号b1c频点带宽_北斗三号导航信号的创新设计(一)