zoukankan      html  css  js  c++  java
  • 进程概念

    初稿:2017-11-19 21:58:21

    进程和程序的区别

    进程是动态的,程序是静态的,进程是暂存的,程序是永存的;程序和进程的关系就像剧本和场幕。

    进程的状态

    ①创建 ②静止就绪 ③就绪 ④执行 ⑤阻塞 ⑥终止【⑦挂起】任何状态都可转换成挂起状态。

    创建:1,申请空白PCB  2,填写PCB  3,申请资源  。申请到除内存外的所有资源进入静止就绪状态,申请到包括内存在内的所有资源进入就绪状态。

    静止就绪:进程申请到除内存以外的所有资源。进程在内存外,进入内存立刻转为就绪状态。

    就绪:进程申请到除CPU以外的所有资源。仅就绪状态能被调度。

    执行:单处理机最多一个进程处于执行状态。【执行状态只能由就绪状态转换】

    阻塞:根据阻塞原因设置多个阻塞队列,能提高系统效率。

    终止:1,中止执行。2,终止子进程。3,归还资源给父进程或系统。4,等待其他进程收集信息 5,清空并归还PCB。

    进程状态的转换

    创建->静止就绪/就绪,内存足够时直接转入就绪状态,不够时转入静止就绪状态。

    静止就绪->就绪。【内存足够时】

    就绪->执行。【调度】

    执行->就绪。【时间片用完】

    执行->阻塞。【临界资源,消息,等待I/O,等待任务】

    阻塞->就绪。

    就绪->静止就绪。【挂起原语】

    执行->静止就绪。【挂起原语】

    阻塞->挂起。

    挂起原语造成的状态被激活成就绪或阻塞。

    每当由激活的进程进入就绪队列,立刻检测该进程与当前正在执行的进程的优先级,若较高,立即切换。

    额外注意点:

    1,当进程处于阻塞状态,即使把处理器分配给进程,它也无法运行。

    2,在时间片轮转调度中,时间片用完后,进程转换为就绪状态而非阻塞状态。

    3,进程由执行状态转换成阻塞状态,是进程调用阻塞原语主动阻塞自己。阻塞状态转换成就绪状态,一般是由一个发现者进程调用激活原语激活,是被动行为。发现者进程一般是与阻塞进程相互合作的进程。

    进程和PCB

    进程 = PCB + 程序 + 数据

    PCB是进程存在的唯一标志。

    进程是分配资源和CPU调度的基本单元

    PCB内的主要信息:

    程序和数据的地址,资源清单,进程标识符,家族联系,进程状态,进程优先级,CPU现场保护区,进程队列指针,消息队列指针,信号量,进程等待时间和已执行时间等信息。

    为什么要引入进程挂起状态?

    1,终端用户发现程序异常,挂起它修改。

    2,父进程挂起子进程来协调各子进程。

    3,操作系统挂起进程统计资源。

    4,挂起不重要的进程从而削弱系统负荷,有利于实时任务。

     

  • 相关阅读:
    Python 函数知识点
    面向对象相关
    判断arg参数是否是可以被调用的
    利用U盘安装CentOS7系统
    简单模仿OpenGL中的栈的作用
    温故而知新我再一次学习库
    关于帧缓存的总结
    OGRE的相关工具和库
    OpenGL在Qt界面下的应用(helloworld)
    OpenGL加载Cg程序
  • 原文地址:https://www.cnblogs.com/joyeehe/p/7862343.html
Copyright © 2011-2022 走看看