博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
处理机调度的层次和调度算法的目标
阅读量:2257 次
发布时间:2019-05-09

本文共 1242 字,大约阅读时间需要 4 分钟。

一个作业从提交开始,往往要经历下述三级调度,其所作的工作包括:

         1. 选择作业
        
2. 分配资源
         3. 建立作业的进程
         4. 建立有关的表格
         5. 作业的善后处理

处理机调度的层次

  1. 高级调度(High Level Scheduling)

    用于决定把后备队列中的哪些作业调入内存,  为它们分配必要的资源,并创建进程。

  2. 低级调度(Low Level Scheduling)

    用来决定就绪队列中哪个进程应先获得处理机, 并将处理机分配给选中的进程。

  3. 中级调度(Intermediate Scheduling)

    用于将外存中已具备运行条件的进程换入内存,而将内存中处于阻塞状态的某些进程换出至外存。

 

处理机调度分为3级:

作业调度(高级调度)对输入井的作业进行选择,为其分配内存、设备;创建根进程;回收系统资源

 交换调度(中级调度)根据系统并发度,完成进程在内外存的换入和换出。

 进程调度(进程调度)选取一个处于就绪状态的进程占用处理机

 

 高级调度-作业调度

  在多道批处理系统中,作业是用户提交给系统的一项相对独立的工作。操作员把用户提交的作业通过相应的输入设备输入到磁盘存储器,并保存在一个后备作业队列中。再由作业调度程序将其从外存调入内存。
  1. 作业和作业步
  (1) 作业(Job)
  
(2) 作业步(Job Step)

       2. 作业控制块(Job Control BlockJCB)

  为了管理和调度作业,在多道批处理系统中,为每个作业设置了一个作业控制块JCB,它是作业在系统中存在的标志,其中保存了系统对作业进行管理和调度所需的全部信息。通常在JCB中包含的内容有:作业标识用户名称用户账号作业类型作业状态调度信息资源需求资源使用情况等。

       3. 作业运行的三个阶段和三种状态

  作业从进入系统到运行结束,通常需要经历收容、运行和完成三个阶段。相应的作业也就有“后备状态”、“运行状态”和“完成状态”。
  
(1) 收容阶段。
  
(2) 运行阶段。  
  
(3) 完成阶段。
      在每次执行作业调度时,都需做出以下两个决定。
  (1) 接纳多少个作业
  
(2) 接纳哪些作业

作业与进程的关系
 

  1. 作业是用户向计算机提交任务的任务实体
  2. 进程是为了完成用户任务实体而设置的执行实体。一个作业由一个以上的进程组成

 调度队列模型

  前面所介绍的三级调度,都将涉及到作业或进程的队列,形成了不同的三类调度队列模型。
    1. 仅有进程调度的调度队列模型(分时系统)
      
    2. 具有高级和低级调度的调度队列模型(批处理系统)

选择调度方式和调度算法的若干准则

选择调度方式和算法的准则,有的是面向用户的,有的是面向系统的。

    1.面向用户的准则
   
(1) 周转时间短。        (2) 响应时间快。
   
(3) 截止时间的保证。    (4) 优先权准则。
    2.面向系统的准则
   
(1) 系统吞吐量高
   
(2) 处理机利用率好。
   
(3) 各类资源的平衡利用
     

                              

转载地址:http://jogdb.baihongyu.com/

你可能感兴趣的文章
什么是__pycache__?
查看>>
如何在Docker容器中挂载主机目录
查看>>
“参数”vs“参数”[重复]
查看>>
getContext(),getApplicationContext(),getBaseContext()和“ this”之间的区别
查看>>
Kotlin中的Java静态方法等效于什么?
查看>>
在Android Studio中搜索整个项目中所有出现的字符串
查看>>
如何忽略Git中目录中的文件?
查看>>
将div垂直居中放置在另一个div中[重复]
查看>>
使用多个JFrame:好的还是不好的做法? [关闭]
查看>>
要求用户提供输入,直到他们给出有效的答复
查看>>
如何通过在ViewPager中用手指轻扫来禁用分页,但是仍然能够以编程方式轻扫?
查看>>
链接并执行GitHub上托管的外部JavaScript文件
查看>>
jQuery循环使用相同类的元素
查看>>
如何在Android Studio中查看方法信息?
查看>>
在Java中有类似.NET的NotImplementedException吗?
查看>>
为什么“ npm install”会重写package-lock.json?
查看>>
如何获取cURL以不显示进度栏?
查看>>
如何查看功能的源代码?
查看>>
错误消息“禁止您没有访问此服务器上的权限/”(关闭)
查看>>
Grunt手表错误 - 等待...致命错误:观看ENOSPC
查看>>