操作系统概念 第四五章概念整理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章线程

1. 引入线程的原因

①创建一个进程花费的时间少②个线程的切换花费的时间少③同一进程内的线程共

享内存和文件,通信无需调用内核④适合多处理机系统

2. 定义:轻量级进程(lightweight process LWP)是进程中的一个运行实体,一个执行单

元,是一个CPU调度单位

3.线程组成:PC TCB(线程控制块) 栈

4.线程调度:

Loop {

RunThread();

ChooseNextThread();

SaveStateOfCPU (curTCB); 系统耗费调度延迟

LoadStateOfCPU (newTCB);

}

何时调度:内部:①I/O阻塞②等待信号或其他线程③线程执行field()

外部:中断定时器

5、内核级线程依赖于OS核心,由内核的内部需求进行创建和撤销,执行一个指定的函数。

• 内核维护进程和线程的上下文信息;

• 线程切换由内核完成;

• 一个线程发起系统调用而阻塞,不会影响其他线程的运行;

• 时间片分配给线程,所以多线程的进程获得更多CPU时间。

❉内核线程的创建和管理要慢于用户线程的创建和管理

❤优点:①对于多处理器,内核可以同时调度同一进程的多个线程②阻塞是在线程一级完成③核心例程是多线程的

❤缺点:同一进程内的线程切换调用内核,导致速度下降

6、用户级线程不依赖于OS核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。如:数据库系统informix,图形处理AldusPageMaker。调度由应用软件内部进行,通常采用非抢先式和更简单的规则,也无需用户态/核心态切换,所以速度特别快。一个线程发起系统调用而阻塞,则整个进程在等待。时间片分配给进程,多线程则每个线程就慢。

•用户线程的维护由应用进程完成;

• 内核不了解用户线程的存在;

• 用户线程切换不需要内核特权;

• 用户线程调度算法可针对应用优化;

❤优点:①线程切换不用调用内核②调度是应用程序特定的,可以选择最好的算法③可以运行在任何操作系统上(只需要线程库)

❤缺点:①一个线程发起系统调用而阻塞,则整个进程在等待②内核只将处理器分配给进程,同一进程中的两个线程不能同时运行于两个处理器上

7、轻量级线程(LWP)是一种由内核支持的用户线程。它是基于内核线程的高级抽象,因此只有先支持内核线程,才能有LWP。每一个进程有一个或多个LWPs,每个LWP由一个内核线程支持。

8.多线程

第一章CPU调度——多道程序操作系统的基础

1.只要CPU 空闲,操作系统就必须从就绪队列中选择一个进程执行。调度程序从内存中的就绪进程中做出选择,并将CPU 分配给其中之一(调度程序选择的进程)。

①当进程从运行状态转换到等待状态时(I/O 请求或等待一个子进程的终止)inter

②当进程从运行状态转换到就绪状态时(例如:当发生中断时)outer

③当进程从等待状态转换到就绪状态时(例如:I/O 完成)

④当进程终止时

只在第一种和第四种情况下进行的调度为非抢占式的;否则为抢占式的(preemptive )。在非抢占式调度下,一旦把CPU 分配给一个进程,那么该进程就会保持CPU 直到终止或转换到等待状态。Microsoft Windows 3.1 和Apple Macintosh 采用了这种调度方式。因为非抢占式调度不像抢占式调度那样需要专门的硬件(如计时器),所以在某些硬件平台上它是唯一可用的方法。

2.调度准则

最大化CPU使用率

最大化吞吐量----一个时间单元内所完成的进程的数量(最小化开销有效利用资源)最小化周转时间-----从进程提交到进程完成的时间间隔

最小化等待时间-----在就绪队列中等待所花的时间

最小化响应时间-----从提交请求到产生敌意响应的时间

公平≠最小化平均响应时间

3.先到先服务调度算法(first-come first-server FCFS)

由于小进程等待一个大进程释放CPU,就会产生护航效应(convoy effect)

1.最短作业优先调度算法(shortest-job-first SJF)——非竞争

平均等待时间最短

困难之处:如何知道下一下CPU请求的长度

2.最短剩余时间优先(shortest-remainingtime-first SRTF)可抢占式SJF调度

弊端:若有很多小程序在大程序后进来,会导致饥饿(starvation)(或无穷阻塞)

3.预测下一个CPU区间的长度

参数ɑ控制近来和过去历史的权重。tn 包含了最近的信息;τn 则包含了过去的历史信息。

4.优先权调度算法

SJF算法作为优先权算法。求优先权为下一个预测的CPU区间的倒数。

老化(aging)是指逐渐地提高在系统中长时间等待的进程的优先权。

5.轮转算法(round-robin RR)——分时系统

适合前台交互程序(small job)

不适合后台批处理程序——用FCFS调度算法

6.多级反馈队列调度(multilevel feedback queue scheduling)

其思想是允许进程在队列之间移动,根据不同的CPU burst特点来区分进程。如果进程使用过多的CPU时间,那么它会被移到更低优先级队列。这种方案会将I/O型进程和交互式进程留在较高优先级队列。而在较低优先级队列中等待过长的进程会被移到较高优先级队列,这种形式的老化能阻止饥饿的发生。

通常通过如下的参量来定义多级反馈队列调度程序:

•队列的数量

•每个队列采用的调度算法

•用于决定何时将一个进程提升到优先权更高队列的方法

•用于决定何时将一个进程降到优先权更低队列的方法

•用于决定一个需要服务的进程进入哪个队列的方法

多级反馈队列调度程序的定义使它成为最通用的CPU 调度算法

相关文档
最新文档