操作系统概念 第四五章概念整理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 调度算法