第八次进程调度与线程概念
进程调度

进程、线程与处理器的调度(1)进程的概念(Dijkstra)进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和调度的基本单位。
(2)进程与程序的联系与区别①程序是指令的有序集合,其本身没有任何运行的含义,是一个静态的概念。
而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
②程序可以作为一种软件资料长期存在,而进程是有一定生命期的。
程序是永久的,进程是暂时的。
注:程序可看作一个菜谱,而进程则是按照菜谱进行烹调的过程。
③进程和程序组成不同:进程是由程序、数据和进程控制块三部分组成的。
④进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
(3)进程的特征动态性:进程是程序的执行,同时进程有生命周期。
并发性:多个进程可同存于内存中,能在一段时间内同时执行。
独立性:资源分配和调度的基本单位。
制约性:并发进程间存在制约关系,造成程序执行速度不可预测性,必须对进程的并发执行次序、相对执行速度加以协调。
结构特征:进程由程序块、数据块、进程控制块三部分组成。
进程的三种基本状态:(1)运行态(running)当进程得到处理机,其执行程序正在处理机上运行时的状态称为运行状态。
在单CPU系统中,任何时刻最多只有一个进程处于运行状态。
在多CPU系统中,处于运行状态的进程数最多为处理机的数目。
(2)就绪状态(ready)当一个进程已经准备就绪,一旦得到CPU,就可立即运行,这时进程所处的状态称为就绪状态。
系统中有一个就绪进程队列,处于就绪状态进程按某种调度策略存在于该队列中。
(3)等待态(阻塞态)(Wait / Blocked )若一个进程正等待着某一事件发生(如等待输入输出操作的完成)而暂时停止执行的状态称为等待状态。
处于等待状态的进程不具备运行的条件,即使给它CPU,也无法执行。
系统中有几个等待进程队列(按等待的事件组成相应的等待队列)。
多线程知识点总结归纳

多线程知识点总结归纳多线程知识点总结归纳如下:1. 线程和进程的区别- 进程是程序的一个执行实例,每个进程都有自己的独立内存空间、代码和数据,相互之间不会直接共享资源。
线程是在进程内部运行的一段代码,多个线程可以共享同一个进程的资源。
2. 多线程的优势- 提高程序的并发性和响应性,能够更有效地利用 CPU 资源。
- 使得程序能够更轻松地实现并发处理和多任务处理。
- 能够通过多线程实现一些复杂任务,如网络编程、图形界面等。
3. 多线程的基本概念- 线程调度:操作系统通过调度算法决定哪个线程应当运行,哪个线程应当阻塞或唤醒。
- 线程同步:多个线程访问共享数据时需要进行同步操作,以避免数据竞争和死锁等问题。
- 线程通信:多个线程之间需要进行通信,以进行资源共享或协作完成任务。
4. 多线程的创建和启动- 使用线程类:在 Java 中,可以通过继承 Thread 类或实现 Runnable 接口来创建线程。
- 线程生命周期:线程的生命周期包括新建、就绪、运行、阻塞和死亡等状态。
5. 线程的安全性- 多线程程序需要考虑线程安全性,以避免数据竞争和死锁等问题。
- 常用的线程安全性方法包括加锁、使用线程安全的数据结构和对象等。
6. 线程的调度- 多线程程序的运行顺序由操作系统的调度算法决定,而且在不同的操作系统上可能有不同的调度策略。
- 线程的调度策略包括抢占式调度和协作式调度等。
7. 线程的优先级- 线程的优先级决定了它在被调度时的优先级,可以通过设置线程的优先级来影响它的调度顺序。
8. 线程的阻塞和唤醒- 线程在执行过程中可能会因为某些原因而阻塞,需要等待一定的条件满足后才能被唤醒继续执行。
- 一些常见的线程阻塞和唤醒操作包括等待、通知、等待超时等。
9. 线程同步的方法- 使用锁机制:在多线程程序中通常使用锁来保护共享资源,以避免数据竞争和执行顺序问题。
- 使用同步代码块:通过 synchronized 关键字或 ReentrantLock 类等来创建同步代码块,保护共享资源的访问。
计算机操作系统(第四版)1-8章-课后答案(全)

计算机操作系统(第四版)1-8章-课后答案(全)第四版计算机操作系统课后答案第一章1. 操作系统的定义操作系统是一种软件,它管理着计算机系统的硬件和软件资源,并为用户和应用程序提供接口,以方便他们的使用。
2. 操作系统的功能操作系统具有以下功能:- 进程管理:负责创建、执行和终止进程,并管理它们的资源分配。
- 存储管理:管理计算机系统的内存资源,包括内存分配、虚拟内存和页面置换等。
- 文件系统管理:管理计算机系统中的文件和文件夹,包括文件的存储、读写和保护等。
- 设备管理:负责管理计算机系统中的各种设备,如打印机、键盘和鼠标等。
- 用户接口:提供用户与计算机系统进行交互的接口,如命令行界面和图形用户界面。
3. 操作系统的类型操作系统可以分为以下类型:- 批处理操作系统:按照一系列预先定义的指令集来运行任务。
- 分时操作系统:多个用户可以同时使用计算机系统。
- 实时操作系统:对任务的响应时间要求非常高,用于控制系统和嵌入式系统。
- 网络操作系统:支持多台计算机之间的通信和资源共享。
- 分布式操作系统:在多台计算机上分布式地管理和调度任务。
第二章1. 进程与线程的区别进程是计算机系统中正在运行的程序实例,而线程是进程内的一个执行单元。
进程拥有独立的地址空间和资源,而线程共享进程的地址空间和资源。
多个线程可以在同一进程内并发执行,从而提高系统的效率和资源利用率。
2. 进程的状态转换进程可以处于以下状态:- 创建状态:进程正在被创建。
- 就绪状态:进程准备好执行,等待分配CPU资源。
- 运行状态:进程占用CPU资源执行。
- 阻塞状态:进程等待某种事件发生。
- 终止状态:进程完成执行或被终止。
3. 进程调度算法操作系统使用进程调度算法来决定哪个进程应该被执行。
常见的调度算法有:- 先来先服务(FCFS)调度算法:按照进程到达的顺序进行调度。
- 最短作业优先(SJF)调度算法:选择运行时间最短的进程进行调度。
操作系统的进程调度与并发

操作系统的进程调度与并发在计算机科学领域,操作系统起到了管理和控制计算机硬件资源的关键作用。
其中,进程调度和并发是操作系统中两个重要的概念。
进程调度是指操作系统在多个进程之间分配CPU时间片,使得它们能够以合理的顺序执行,从而提高整个系统的吞吐量和响应时间。
而并发则指在同一时间可以执行多个独立的任务,进一步提高系统的效率。
一、进程调度进程调度是操作系统的核心功能之一,它决定了程序的执行顺序和优先级。
进程调度算法的设计影响着系统的性能和资源利用率。
常用的进程调度算法有以下几种:1. 先来先服务(FCFS)调度算法:按照进程到达的顺序进行调度,即先到先服务。
该算法的优点是简单易懂,但当有长作业阻塞短作业等待时,会导致平均等待时间较长。
2. 最短作业优先(SJF)调度算法:选择估计需要的CPU时间最短的作业来先执行。
该算法能够保证平均等待时间最小,但需要准确估计作业的执行时间。
3. 优先级调度算法:为每个进程赋予优先级,并按照优先级的高低进行调度。
该算法可以灵活调整各个进程的优先级,但会导致低优先级进程长时间等待。
4. 时间片轮转调度算法:设置固定的时间片,每个进程按照时间片的大小进行调度。
当一个进程的时间片用完后,会被放入就绪队列的尾部,等待下一轮调度。
该算法公平地分配CPU资源,但可能会导致上下文切换频繁。
二、并发并发是指系统同时处理多个任务的能力。
在操作系统中,实现并发的方式有多种。
1. 多道程序设计:允许多个进程同时驻留在内存中,并在进程之间切换。
通过利用中断机制和进程调度算法,操作系统能够在较短的时间内切换多个进程的执行。
2. 多线程:线程是一个独立的执行流,一个进程可以拥有多个线程。
多线程使得程序能够并行执行多个任务,提高了系统的响应速度和资源利用率。
3. 并行处理:通过利用多个处理器同时执行多个任务,实现真正的并行处理。
多核处理器的出现使得并行处理得到了更好的支持。
三、进程调度与并发的关系进程调度和并发是紧密相关的,两者相互影响、相互促进。
简述调度的概念

简述调度的概念调度是指在计算机系统中,根据一定的策略和算法,将各种任务和资源进行合理的分配和安排的过程。
调度器是计算机操作系统中的一个重要组成部分,负责管理和调度系统中的各种任务,包括进程调度、作业调度、IO调度等。
进程调度是指对于多道程序系统中的各个进程,根据一定的调度算法,为其分配系统资源,决定其执行顺序和运行时间等。
进程调度是操作系统中一个重要的功能,它的目标是提高系统的效率和性能,保证资源的公平分配,合理利用系统资源,提供良好的用户体验。
在进程调度中,常见的调度算法有先来先服务(FCFS)、短作业优先(SJF)、最高响应比优先(HRRN)、多级反馈队列(MFQ)等。
这些调度算法都有各自的特点和适用范围,通过灵活选用不同的调度算法,可以根据实际情况来满足不同的需求。
进程调度的主要任务包括进程创建、进程挂起(阻塞)、进程唤醒(就绪)、进程结束等。
当操作系统接收到一个新的进程时,需要为其分配系统资源,设置其优先级,并将其加入到就绪队列中,等待分配CPU资源进行执行。
如果一个进程需要等待某个事件的发生(如IO操作)时,会被阻塞并放入阻塞队列,直到事件发生后再被唤醒。
当一个进程执行完毕或被终止时,需要释放其所占用的资源,并从进程队列中移除。
作业调度是指对于多道程序系统中的各个作业,根据一定的调度算法,为其分配系统资源,决定其执行顺序和运行时间等。
作业调度是在进程调度之前进行的,其目标是提高系统的吞吐量和资源利用率,减少等待时间,提高用户满意度。
在作业调度中,常见的调度算法有先来先服务(FCFS)、短作业优先(SJF)、高响应比优先(HRRN)等。
同样地,通过灵活选用不同的调度算法,可以根据实际情况来满足不同的需求。
IO调度是指对于系统中的输入输出操作,根据一定的调度算法,决定其执行顺序和时间等。
在多任务环境下,各个进程或作业的IO请求可能会同时存在,而IO设备的资源是非常有限的,所以需要进行IO调度来合理分配和调度这些IO 操作。
操作系统中的进程调度原理

操作系统中的进程调度原理一、概述进程调度在操作系统中是非常重要的一个概念。
它是指在系统中多个进程同时运行时,如何选择下一个要运行的进程,并对进程进行分配CPU时间片的过程。
进程调度在操作系统中扮演着重要的角色,它决定了系统整体的性能和响应时间。
在本文中,我们将详细讨论进程调度的原理、算法和实现,以及一些常见的调度策略。
二、进程调度的原理操作系统中的进程调度的本质是分配CPU资源。
CPU时间片是操作系统中进行任务调度的基本单位。
每个进程执行自己的任务时,都要先获得CPU时间片,进程使用的时间片用完之后,操作系统将紧接着将CPU资源分配给下一个进程运行。
在进程调度的过程中,操作系统需要维护一张任务调度表,该表中记录着每个进程的进程控制块(PCB),该表还需要维护一些其他的信息,如就绪进程队列、阻塞进程队列等。
每个进程具有自己的属性,如进程的优先级、占用CPU的时间等。
在进程调度的过程中,根据进程的优先级和占用CPU的时间来判断下一个将要运行的进程,并将CPU时间片分配给下一个进程。
三、进程调度的算法1.先来先服务(FCFS)先来先服务(FCFS)是最古老的进程调度算法。
这个算法的工作原理是,先到达的进程将拥有较高的优先级,并将首先获得CPU时间片运行。
虽然FCFS算法很容易实现,但它并不是最优的。
如果某个长时间运行的进程在队列前面,那么它将一直占用CPU资源,而其他进程会一直等待。
2.最短作业优先(SJF)最短作业优先(SJF)调度算法是根据每个任务占用的CPU时间来进行调度的。
该算法的工作流程如下:当进程到达时,根据其需要运行的时间将其放入队列中。
如果下一个就绪的任务的需要运行时间比当前运行的任务更短,那么该就绪任务将被优先执行。
但是,该算法也有一个问题,就是如果存在镰刀现象,即一些进程长时间等待,无法获得CPU时间片。
3.时间片轮转(RR)时间片轮转(RR)是一种分时系统调度算法。
正如其名字所暗示的那样,RR算法将相等的量分配给每个进程的时间片,每个进程在其时间片用完之前被调用,然后被挂起并在下一次被调用时恢复执行。
操作系统第3章 处理机调度(调度)

3.2 调度算法
进程调度的核心问题就是采用什么样的算法将处 理机分配给进程,常用的进程调度算法有:
先来先服务调度算法
短作业/进程优先调度算法
优先权调度算法
高响应比优先调度算法
时间片轮转调度算法
多级队列调度算法
多级反馈队列调度算法
返回目录
一、先来先服务调度算法FCFS
基本思想:按照进程进入就绪队列的 先后次序来分配处理机。
抢占(剥夺)方式
非抢占方式
一旦把处理机分配给某进程后,便让该进程 一直执行,直到该进程完成或因某事件而被 阻塞,才再把处理机分配给其它进程,不允 许进程抢占已分配出去的处理机。
特点:实现简单,系统开销小,常用于批处 理系统;但不利于处理紧急任务,故实时、 分时系统不宜采用。
抢占方式
允许调度程序根据某种原则(时间片、优 先权、短进程优先),停止正在执行的进 程,而将处理机重新分配给另一进程。
调度算法(太长---FCFS); 上下文切换(太短---上下文切换频繁); 平均周转时间。
短时间片增加上下文切换频率
周转时间随时间片变化
三、时间片轮转调度算法—例(1)
EG: 进程 到达时间
P1
0
P2
2
P3
4
P4
5
RR(时间片为1)
服务时间
7 4 1 4
P1 P2 P1 P2 P3 P1 P4 P2 P1 P4 P2 P1 P4 P1 P4
FCFS SPF-非 SPF-抢
周转T 124.25 100
75.75
等待T 74.25 49.5
25.25
二、SJF/SPF ——抢占式
到达顺序: 进程名 到达时间 服务时间
操作系统的调度名词解释

操作系统的调度名词解释作为计算机科学中的重要概念,操作系统的调度在计算机系统的运行中起到了至关重要的作用。
通过合理的调度算法,操作系统能够合理分配和管理计算机资源,提高系统的性能和效率。
本文将对操作系统调度中的一些重要名词进行解释,以帮助读者更好地理解和掌握这一领域。
1. 进程调度进程调度是操作系统中的一个重要概念,它指的是操作系统通过预设的调度算法,合理选择优先级最高的进程,并分配CPU时间片给该进程执行。
进程调度的目标是提高系统的性能和响应速度,以确保各个进程都能得到公平的执行机会。
常见的进程调度算法包括先来先服务、短作业优先、时间片轮转等。
2. 线程调度线程调度是对操作系统中线程的分配和执行进行管理和调度的过程。
线程调度的目标是合理分配CPU时间片,使得多个线程能够并发执行,以提高程序的效率和响应速度。
常见的线程调度算法有优先级调度、时间片轮转、多级反馈队列等。
3. 中断调度中断调度是操作系统对中断事件的处理和分配过程。
在计算机运行中,发生中断事件时,操作系统需要及时响应并进行相应的处理操作。
中断调度的目标是尽快响应中断事件,将控制权转移到相应的中断处理程序,并在处理完之后返回原来的进程继续执行。
4. IO调度IO调度是操作系统在处理IO请求时的调度过程。
由于独立于CPU的IO设备存在速度差异,操作系统需要合理调度IO请求的顺序和时间,以提高系统的整体性能和效率。
常用的IO调度算法有先来先服务、最短寻道时间优先、电梯算法等。
5. 内存调度内存调度是指操作系统对内存中进程的分配和管理过程。
在多道程序设计环境下,操作系统需要合理选择和分配内存资源,以提高系统的利用率和性能。
内存调度的目标是实现内存的最佳利用和动态分配。
常见的内存调度算法有分页调度、分段调度、段页式调度等。
6. 磁盘调度磁盘调度是指操作系统中对磁盘访问请求的调度过程。
由于磁盘访问需要相当的时间,操作系统需要选择合适的算法来优化磁盘访问顺序,以提高磁盘的读写效率和响应时间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)两者分析
• • • • • • • • 针对不同的操作系统 开销和性能(线程的调度和切换速度) 系统调用(阻塞) 线程执行时间 灵活性 可扩充性 抢占CPU 共享进程的资源
(4)ULT和KLT结合方法
* 首先系统中设置多个就绪队列
* 每个就绪队列分配给不同时间片,优先级高的为第一级 队列,时间片最小,随着队列级别的降低,时间片加大
* 各个队列按照先进先出调度算法
* 一个新进程就绪后进入第一级队列 * 进程由于等待而放弃CPU后,进入等待队列,一旦等待的 事件发生,则回到原来的就绪队列 * 当有一个优先级更高的进程就绪时,可以抢占CPU,被抢 占进程回到原来一级就绪队列末尾
2.确定算法的原则
• 具有公平性 • 资源利用率高(特别是CPU利用率)
• 在交互式系统情况下要追求响应时间 (越短越好)
• 在批处理系统情况下要追求系统吞吐量
3.各种进程调度算法
先进先出进程调度算法(FIFO)
按照进程就绪的先后次序来调度进程
优点:实现简单 缺点:没考虑进程的优先级
基于优先数的调度 (HPF—Highest Priority First)
固定时间片
可变时间片 与时间片大小有关的因素: 系统响应时间 就绪进程个数 CPU能力
多队列反馈调度算法:
将就绪队列分为N级,每个就绪队列分配 给不同的时间片,队列级别越高,时间 越长,级别越小,时间片越小,最后一 级采用时间片轮转,其他队列采用先进 先出; 系统从第一级调度,当第一级为 空时,系统转向第二个队列,.....当运 行进程用完一个时间片,放弃CPU时,进 入下一级队列;等待进程被唤醒时,进 入原来的就绪队列;当进程第一次就绪 时,进入第一级队列
进程调度(CPU调度)
要解决的问题 WHAT:按什么原则分配CPU —进程调度算法 WHEN:何时分配CPU —进程调度的时机 HOW: 如何分配CPU
—CPU调度过程(进程的上下文切换)
处理机调度分成三个层次
处理机是计算机系统中的重要资源 处理机调度算法对整个计算机系统的综 合性能指标有重要影响 可把处理机调度分成三个层次:
间隔时钟
进行分析比较
虚时钟:
每个进程分配给一个虚时钟来记录CPU时 间,这个时钟称为虚时钟 虚时钟存放在PCB中,属于现场的一部分, 进程运行时,将虚时钟放入内存开辟的 专门单元,离开CPU则放在 PCB中
2.核心处理流程
进入核心的唯一入口:中断 中断后进入核心,由硬件完成
3.内核的执行特点
(2)核心级线程(KLT)
• 所有线程管理由核心完成
• 没有线程库,但对核心线程工具提供API
• 核心维护进程和线程的上下文
• 线程之间的切换需要核心支持
• 以线程为基础进行调度
• 例子:Windows NT,OS/2
核心级线程的优点和缺点
优点:
• 对多处理器,核心可以同时调度同一进程 的多个线程
• 选择另一个要执行的进程
• 更新被选中进程的PCB
• 从被选中进程中重装入 CPU 上下文
二.系统核心 系统核心:
向上提供多个无中断的虚拟机器
在核心内不允许中断 特点:* 为进程运行提供一个舞台
* 核心常驻内存
* 设计短小精焊
1.核心的组成
中断处理 进程管理: 调度 控制 通讯 互斥 同步等 原语管理: 在核心中提供一系列原语,同步,通 信,创建,撤消等
线程的引入(续3) 线程:有时称轻量级进程
进程中的一个运行实体 是一个CPU调度单位 资源的拥有者还是进程或称任务 将原来进程的两个属性分开处理
线程的引入(续4)
线程:
• 有执行状态(状态转换) • 不运行时保存上下文
• 有一个执行栈
• 有一些局部变量的静态存储
• 可存取所在进程的内存和其他资源
由中断驱动的: 中断→内核→退出
内核执行是连续的
内核执行过程中在中断屏蔽状态下 内核使用特权指令
三.线程的基本概念 • 线程的引入
• 线程与进程的对比
• 线程的实现
• 实例:Solaris
1.线程的引入
进程的两个基本属性: • 资源的拥有者: 给每个进程分配一虚拟地址空间,保存进 程 映 像 , 控 制 一 些 资 源 ( 文 件 , I/O 设 备),有状态、优先级、调度 • 调度单位:
• 低级调度 也称微观调度,从处理机资源分配
的角度来看,处理机需要经常选择就绪进程或 线程进入运行状态,低级调度的时间尺度通常 是毫秒级的。由于低级调度算法的频繁使用, 要求在实现时做到高效
一.进程调度算法
1.进程调度
进程调度的任务是控制协调进程对CPU的 竞争。即按一定的调度算法从就绪队列 中选中一个进程,把CPU的使用权交给被 选中的进程
何时切换进程?
• 只要OS取得对CPU的控制,进程切换就可 能发生,如:
–超级用户调用
• 来自程序的显式请求 (如:打开文件), 该进程 通常会被阻塞
–陷阱
• 最末一条指令导致出错,会引起进程移至退出状 态
–中断
• 外部因素影响当前指令的执行,控制被转移至IH (中断处理程序)
中断的例子
–时钟
• 进程用完其时间片,被转换至就绪状态
优先选择就绪队列中优先级最高的进程投 入运行
优先级根据优先数来决定
确定优先数的方法
静态优先数法: 在进程创建时指定优先数,在进程运行 时优先数不变
动态优先数法:
在进程创建时创立一个优先数,但在其 生命周期内优先数可以动态变化。如等 待时间长优先数可改变
两种占用CPU的方式
可剥夺式(可抢占式Preemptive): 当有比正在运行的进程优先级更高的进程就 绪时,系统可强行剥夺正在运行进程的CPU, 提供给具有更高优先级的进程使用 不可剥夺式(不可抢占式 Non-preemptive ): 某一进程被调度运行后,除非由于它自身的 原因不能运行,否则一直运行下去
队列管理:
队列数据结构:指向队首的表指针
三个队列: 运行,就绪,等待队列
排队方式: 排队首
排队尾
插 队
出队方式: 队首出队/队中出队
队列管理: 中断之后,进程调度之前
现场管理:
保存现场;注意顺序,中断之后第一步
恢复现场:恢复时机,进程调度最后一步
时钟管理:
以固定频率 +1 -1
用途:进入绝对时钟
* 当第一级队列空时,就去调度第二级队列,如此类推
* 当时间片到后,进程放弃CPU,回到下一级队列
二.进程调度的时机
当一个进程运行完毕,或由于某种错误而终止 运行 当一个进程在运行中处于等待状态(等待I/O) 分时系统中时间片到 当有一个优先级更高的进程就绪(可抢占式) 例如:新创建一个进程,一个等待进程变成就 绪 在进程通信中,执行中的进程执行了某种原语 操作(P操作,阻塞原语,唤醒原语)
一组管理线程的过程
• 核心不知道线程的存在
• 线程切换不需要核心态特权 • 调度是应用特定的
线程库
• 创建、撤消线程 • 在线程之间传递消息和数据 • 调度线程执行
• 保护和恢复线程上下文
对用户级线程的核心活动
• 核心不知道线程的活动,但仍然管理线程 的进程的活动 • 当线程调用系统调用时,整个进程阻塞
• 但对线程库来说,线程仍然是运行状态
即线程状态是与进程状态独立的
用户级线程的优点和缺点
优点:
• 线程切换不调用核心
• 调度是应用程序特定的:可以选择最好的算法 • ULT可运行在任何操作系统上(只需要线程库)
缺点:
• 大多数系统调用是阻塞的,因此核心阻塞进程, 故进程中所有线程将被阻塞 • 核心只将处理器分配给进程,同一进程中的两个 线程不能同时运行于两个处理器上
例子1:
LAN中的一个文件服务器,在一段时间内需 要处理几个文件请求
因此有效的方法是:为每一个请求创建一个 线程
在一个SMP机器上:多个线程可以同时在不 同的处理器上运行
例子2:
一个线程显示菜单,并读入用户输入; 另一个线程执行用户命令
考虑一个应用:由几个独立部分组成,这 几个部分不需要顺序执行,则每个部分 可以以线程方式实现
(如果没有就绪进程,系统会安排一个闲 逛进程(idle),没有其他进程时该进程一 直运行,在执行过程中可接收中断) * 恢复现场:最后一步恢复选中进程的PSW
在进程(上下文)中切换的步骤
• 保存处理器的上下文,包括程序计数器和其它 寄存器 • 用新状态和其它相关信息更新正在运行进程的 PCB
• 把原来的进程移至合适的队列-就绪、阻塞
• 线程创建在用户空间完成
• 大量线程调度和同步在用户空间完成
• 程序员可以调整KLT的数量
• 可以取两者中最好的
• 例子:Solaris
4. 实例:Solaris
进程:
• 用户地址空间 • 用户栈
• 进程控制块
实例:Solaris(续1)
用户级线程(线程库):
可在应用进程中建立多个ULT 每个ULT需要:栈、程序计数器 不受调度程序的调度,线程切换快 对操作系统不可见
当一个线程因I/O阻塞时,可以切换到同一 应用的另一个线程
2.线程与进程的比较
• 调度 • 并发性 • 拥有资源 • 系统开销
3.线程的实现机制
• 用户级线程 • 核心级线程 • 两者结合方法
(1)用户级线程(User Level Thread)
• 由应用程序完成所有线程的管理
通过线程库(用户空间)
用户 地址 空间
核 心 栈
核 心 栈