zoukankan      html  css  js  c++  java
  • 操作系统–进程管理

    进程概念

    进程:申请资源和调度资源的基本单位,一个进程就是一个程序的一个运行过程。是一个动态的概念,在不同的操作系统中,会有不同的进程出现。

    程序:静态概念,是指令和数据的集合,可长期存储。

    进程与程序对应关系: 
    - 一个程序可以对应一个进程或者多个进程 
    - 一个进程可以对应一个程序,或者一段程序

    进程结构

    进程由程序,数据集合,进程控制块PCB(Process Control Block) 
    PCB,进程在创建的时候,同时创建。进程结束的时候,PCB删除。

    进程状态转化

    进程的状态:

    • 新状态:进程已经创建,但未被os接纳为可执行进程
    • 就绪状态:准备执行
    • 执行状态:占用处理机(单个处理机环境中,某一个时刻仅一个进程占用处理机)
    • 阻塞状态:等待某时间发生才能执行,如等待I/O完成等
    • 终止状态:因停止或取消,被os从执行状态释放

    挂起概念

    挂起:操作系统中将进程换出内存,我们将这称为进程的挂起。 
    五状态转换: 

    五状态队列模型调度:

    进程控制

    进程的两种执行模式:

    系统模式(系统态):具有最高特权,运行系统特定的指令。 
    用户模式(用户态):较低的特权,用户一般运行在用户模式

    进程切换和模式切换

    进程切换:作用于进程之间的一种操作。当分派程序收回当前进程的CPU并准备把它分派给某个就绪进程时,该进程将被引用。 
    模式切换:是进程内部所引用的一种操作。当用户程序转入系统调用,或者相反时,该操作将被调用。

    进程调度

    进程调度:在一个队列中,按照某种方法(算法),选择一个合适的个体的过程。

    调度目标

    调度目标:公平性,处理机利用率,提高系统吞吐量,尽量减少进程的响应时间。

    进程调度–面向系统原则

    优先权

    优先权:队列可以根据进程的优先权不同,组织不同的就绪队列。进程调度时,首先选择高优先权队列中的进程,当优先权高的队列没有进程的时候,在选择较低优先权的队列中的进程。

    如图: 

    进程调度方式

    剥夺方式

    剥夺方式:时间片到了,进程被剥夺;有新的优先权高的进程插入。

    非剥夺方式

    非剥夺方式:执行进程只有在执行完毕,或者申请I/O阻塞自己时,才中断其执行,释放处理机,调入新进程。

    进程调度类型

    长程调度

    长程调度 :又称为作业调度,它为被调度作业或用户程序创建进程,分配必要的系统资源,并将创建的进程插入就绪队列,等待短程调度。或者将新建的进程插入到就绪/挂起队列,等待中程队列。

    中程调度

    中程调度:内外存之间的对换功能的一部分。当内存空间紧张的时候,将内存中的进程换到外存挂起;当内存空闲的时候,将外存中挂起的进程换到内存。

    短程调度

    短程调度:也称为进程调度,即就绪队列中的哪个进程将获取处理机。 

    进程调度算法

    先来先服务算法:(适合长程,中程,短程调度)

    该方法按照进程到达的先后顺序排序,每次调度对首的进程。

    短进程优先算法:(适用长程和短程调度)

    当需要调度进程的时候,通过计算判定就绪队列中哪个进程的预期执行时间最短;哪个最短,就调度哪个。

    时间片轮转调度法:(适用于短进程调度)

    就是在相同时间片内,在各个进程之间的轮转调度的方式。 

    基于优先级的调度算法

    为每个进程定义一个优先级,优先级越高的进程,将优先获取处理机的调度。(这个算法可以和上面的时间片轮转方法结合使用,相互完善) 
    静态优先级:一旦确定,则进程运行期间优先级一直不改变。 
    动态优先级:系统首先赋予进程一个初始优先级,该优先级将随着进程的运行而改变。(剩余时间最短者优先,响应比高者优先)

    剩余时间最短者优先:进程的剩余时间越短,优先级越高 
    响应比高者优先:进程(预期执行时间)越长,优先级越低;而随着进程的等待时间越长,优先级越高

    反馈调度算法

    反馈调度算法是一种根据进程执行历史调整调度方式调度方法,它结合了时间片轮转调度思想。 
    调度顺序:首先将进程放到第一个就绪队列中。如果在这个队列中无法完成进程,将进程移动到下一个就绪队列中,等待执行。

    问题为什么要在不同的队列中设置不同的时间片? 
    因为,没有在上一级队里中完成的进程,说明它的需要运行的时间比较多。我们将它放到下一级队列中,并提供较大的时间片,这样可以减少处理机内存的换进换出,提高系统效率。 
    问题当一个进程运行完毕后,需要从哪里调用新的进程? 
    从第一个就绪队列中,调用新的进程。调用新的进程的时候,我们选择优先级高的进程先调用。

  • 相关阅读:
    判断当前时间
    判断页面有没有点击
    js前台与后台数据交互-后台调前台(后台调用、注册客户端脚本)
    js前台与后台数据交互-前台调后台
    关于Cookie
    关于Session
    asp.net中的<%%>的几种形式的用法
    解析客户端脚本、服务器端脚本
    Asp.net--Ajax前后台数据交互
    Asp.Net 前后台交互小结
  • 原文地址:https://www.cnblogs.com/huangwentian/p/7487700.html
Copyright © 2011-2022 走看看