学习笔记——处理器管理(2)

所用教材为:操作系统教程(第5版)  费翔林 骆斌编著

线程及其实现

引入多线程的动机

 (1)引入进程是为了程序的并发执行,以改善资源的利用率,提高系统吞吐量
 (2)可以看出传统进程既是资源分配的单位,又是调度分派的单位,这使得系统在进程管理调度时的时空开销较大,速度较低。
 (3)因此引入线程,将资源分配与调度分派分开,进一步提高系统的并发程度,提高系统的吞吐率和资源利用率。

线程的概念:

 (1)把进程的两项概念——“独立分配资源”与“被调度分派执行”分离开
 (2)进程不需要频繁地切换
 (3)线程作为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换,在这种指导思想下,产生了线程的概念。

线程的特点:

(1)线程是进程的一个实体,是比进程更小的能被系统独立调度和分派的j基本单位
(2)线程基本上不拥有系统资源,但可以与统一进程的其它进程共享该进程的全部资源。
(3)同一进程的多个线程间可并发执行,它们之间可存在创建与被创建关系
(4)线程同进程一样,有就绪、阻塞、执行三种基本状态。

多线程结构进程的优点:

(1)快速线程切换
(2)通信易于实现
(3)减少管理开销
(4)并发程度提高

多线程环境中的进程与线程

多线程结构进程定义

           
(1)进程是操作系统中出处理器外进行的资源分配和保护的基本单位
(2)它有独立的虚拟地址空间,容纳进程映像,并以进程为单位对各种资源实施保护

多线程环境的线程概念

(1)线程是操作系统进程中能够独立执行的实体,是处理器调度和分派的基本单位。
(2)线程是进程的组成部分,每个进程内允许包含多个并发的实体,这就是多线程

线程的组成

(1)线程唯一标识符即线程状态信息
(2)线程是一条执行路径,有独立的程序计数器;未运行时保护程序上下文
(3)线程有执行栈和存放局部变量的私用存储空间
(4)可访问所属进程的内存和资源,并与该进程中的其他线程共享这些资源。

线程的作用

系统调度的基本单位是线程而不是进程,每当创建一个进程时,至少要同时为该进程创建一个线程。

线程的状态

(1)包括运行、就绪、等待和终止。状态转换也类似于进程。
(2)挂起状态对线程是没有意义的

线程的实现

从实现角度线程分三类:

用户级线程ULT
内核级线程KLT
混合式线程

线程调度

处理器调度

处理器调度层次

作业从进入系统成为后备作业开始,直到运行结束退出系统为止,需经历不同级别的调度

高级调度(作业调度、长程调度)

(离用户比较近,离CPU比较远)
作业、作业控制块JCB
(1)作业是用户提交给操作系统计算的一个独立任务
(2)JCB的主要内容包括:
               作业情况
               资源需求
               资源使用情况
作业生命周期状态
 输入状态、后备状态、执行状态、完成状态
作业和进程的关系
(1)作业是任务实体,进程是完成任务的执行实体
(2)没有作业任务,进程无事可做
(3)没有进程,作业任务无法完成
(4)作业的概念更多地用于批处理操作系统中,而进程则用于各种多道程序设计系统
作业调度
 (1)接纳多少个作业
 (2)接纳哪些作业

中级调度(交换调度、中程调度)

目的
    提高内存利用率和系统吞吐量
方法
(1)将暂时不能运行的进程调至外存上去等待,此时进程状态为:就绪驻外存状态或挂起状态
(2)再次满足运行条件时,由中级调度把外存上的具备运行条件的进,调入内存,挂在就绪队列上等待进程调度

低级调度(进程调度、短程调度)

(直接靠在CPU上,本身就是一个进程)
低级调度的主要功能:调度程序两项任务:调度和分派
调度:实现调度策略
分派:实现调度机制
功能
(1)保存处理器的现场信息
(2)按某种算法选取进程
(3)把处理器分配给进程
进程调度的三个基本机制
(1)排队器(进程队列)
(2)分派器(分派程序、调度程序)
(3)上下文切换机制(环境信息切换)
进程调度的方式(类型)
(1)非抢占式
           引发调度的事件:
                                          正在执行的进程执行完毕
                                          发生某事件而不能再继续执行
                                          执行中的进程因提出I/O请求而暂停执行
                                          执行了某种原语操作
          特点:实现简单、系统开销小、适用于大多数的批处理系统环境,难以满足紧急任务的要求
(2)抢占式
          抢占的原则:
                   优先权原则
                   短作业(进程)优先原则
                   时间片原则

处理器的调度模型

仅有进程调度的调度队列模型
             
具有高级和低级调度的调度队列模型
            
处理器三级调度模型
             

选择调度算法原则

面向系统的性能指标

(1)资源利用率
         CPU利用率 = CPU有效工作时间/CPU总的运行时间
         CPU总的运行时间 = CPU有效工作时间+CPU空闲等待的时间
(2)吞吐率
            单位时间内处理的作业数
(3)公平性

面向用户的性能指标

(1)响应时间
           交互式进程从提交一个请求(命令)到接收到响应之间的时间间隔
(2)周转时间
             批处理用户从作业提交给系统开始,到作业完成为止的时间间隔成作业周转时间
(3)截止时间的保证
(4)优先权准则

作业周转和带权周转时间

             

作业管理与调度

作业管理任务

 作业组织、作业调度、运行控制

批作业的调度

(1)选择作业
(2)分配资源
(3)创建进程
(4)作业控制
(5)后续处理

作业调度与进程调度的关系


作业调度和低级调度算法

先来先服务算法FCFS

 (1)要点:按照作业进入系统后备作业队列的先后次序来挑选次序,先进入系统的作业优先被挑选进内存。
                      非剥夺式调度算法
 (2)例子:

•三个作业同时到达系统并立即进入调度:作业名/所需CPU时间:作业1/28,作业2/9,作业3/3。采用FCFS算法,平均作业周转时间为35。

• 若三个作业提交顺序改为作业2、1、3,平均作业周转时间约为29。若三个作业提交顺序改为作业3、2、1,平均作业周转时间约为18。

 (3)注意:FCFS调度算法的平均作业周转时间与作业提交的顺序有关。

最短作业优先算法SJF

(1)要点:以进入系统作业所要求的CPU运行时间的长短为标准,总是选取预计计算时间最短的作业投入运行。
                     非剥夺式调度算法
(2)弱点:
            1、要预先知道作业所需的CPU运行时间
            2、忽视作业等待时间,可能会出现饥饿现象
            3、尽管能客服对长作业的偏爱,但由于缺少剥夺机制,对于分时、实时处理仍然不理想
(3)例子
                    
(4)比较与总结:SJF比FCFS平均作业周转时间小,所以它的调度性能比FCFS好

最短剩余时间优先SRTF

(1)要点: 把SJF算法改造为抢占式的。
                      一个新作业进入就绪状态,如果新作业需要的CPU时间比当前正在执行的作业剩余下来还需的CPU时间短,SRTF强行赶走当前正在执行作业。称最短剩余时间优先算法

                      不仅适用于作业调度,同样适用于进程调度。
(2)例子:
             

最高响应比优先算法HRRF

既考虑作业等待时间,又考虑作业处理时间
       响应比的定义
        响应比 = 1 + 作业等待时间/作业处理时间
      特点:
      (1)短作业容易得到较高响应比
      (2)长作业等待时间足够长后,也将获得足够高的响应比
      (3)饥饿现象不会发生
       举例:
       

优先级调度算法

静态优先数法
动态优先数法

时间片轮转调度算法

时间片调度:
(1)调度程序每次把CPU分配给就绪队列首进程使用一个时间片,就绪队列中的每个进程轮流地运行一个时间片。
(2)当这个时间片结束时,强迫一个进程让出处理器,让它排列到就绪队列的尾部,等候下一轮调度

多级反馈队列调度

主要思想
  将就绪进程分为两级或多级,系统相应建立两个或多个就绪进程队列,较高优先级的队列一般分配给较短的时间片。
一个三级反馈队列调度策略
       
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP(JavaServer Pages)是一种服务器端的动态网页开发技术,它可以将 Java 代码嵌入 HTML 页面中,从而实现动态网页的生成。 JSP 的基本原理是将 JSP 页面翻译成 Servlet,在服务器端执行 Servlet 代码,再将执行结果返回给客户端。因此,我们在使用 JSP 开发网页时,需要先了解 Servlet 的相关知识。 JSP 的语法基本上就是 HTML 标签加上 Java 代码。以下是一些基本的 JSP 标签: 1. <% ... %>:嵌入 Java 代码,可以用于定义变量、写循环、判断语句等。 2. <%= ... %>:输出 Java 代码的执行结果。 3. <%-- ... --%>:注释,不会被翻译成 Servlet。 4. <jsp:include ... />:包含其他 JSP 页面或 HTML 页面。 5. <jsp:forward ... />:将请求转发到其他资源(JSP 页面、Servlet 或 HTML 页面)。 6. <jsp:useBean ... />:创建 JavaBean 对象。 7. <jsp:setProperty ... />:为 JavaBean 对象设置属性。 8. <jsp:getProperty ... />:取得 JavaBean 对象的属性值。 在 JSP 页面中,我们还可以使用 EL 表达式和 JSTL 标签库来简化代码编写,提高开发效率。 EL(Expression Language)表达式是一种简化的表达式语言,可以用于取值、赋值、计算等操作。例如,${name} 表示取得名为 name 的变量的值。 JSTL(JavaServer Pages Standard Tag Library)是一套标签库,提供了循环、条件判断、格式化、国际化等常用功能的标签。例如,<c:forEach> 标签可以用于循环遍历集合,<c:if> 标签可以用于条件判断。 除了以上标签库,JSP 还支持自定义标签库。我们可以通过编写标签处理器来扩展 JSP 的功能。 JSP 的优点是可以将 Java 代码嵌入 HTML 页面中,使得网页的开发更加灵活和方便。但是,由于 JSP 页面需要翻译成 Servlet,因此会增加服务器的负担和响应时间。此外,JSP 页面中夹杂着 Java 代码,也不利于代码的维护和调试。因此,在开发大型网站时,建议使用 MVC 设计模式,将业务逻辑和视图分离,使得代码更加清晰和易于维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值