大工21春《操作系统概论》复习资料七
《操作系统概论》辅导资料七主 题:第2章 进程管理(第5—6节)学习时间:2020年5月11日--5月17日“不忘初心、牢记使命”主题理论学习:
忠诚是共产党人必须具备的优秀品格。“忠诚印寸心,浩然充两间”的坚毅,“砍头不要紧,只要主义真”的无畏,腹中满是草根而宁死不屈的气节,食指钉入竹签而永不叛党的坚贞,无数先烈用鲜血诠释了对党的忠诚。对党忠诚必须是纯粹的、无条件的,是政治标准、更是实践标准,鲜明体现在坚决贯彻答案决策部署上。
摘选自《在第十九届中央纪律检查委员会第二次全体会议上的讲话》内 容:
第2章 进程管理
这周我们将学习课件第2章中的5-6节,下面整理出的理念框架供同学们学习。
本篇的基本要求:
1.了解进程间通信
2. 掌握线程的定义
3.了解线程的基本状态
重点掌握内容:
1. 线程2.5进程间通信
进程通信指在进程之间进行信息交换。并发执行的诸进程为了合作完成同一任务,为了互斥与同步,它们之间需要交换信息。交换的信息量可多可少,少的也许只是一个状态或者只有一个字节,多者则可能有成千上万个字节。操作系统提供了多种进程间通信机制,它们分别适用于不同场合,可以从不同角度对进程间的通信机制进行分类。
按照通信量的大小,可以将进程间的通信分为:
(1)低级通信。进程之间一次只能传送很少信息,例如,一个字节,一个整数。前面介绍的进程互斥与同步就涉及低级通信。优点:速度快;缺点:传送信息量小,效率低;通信过程对用户不透明,因为共享数据结构的设置、数据传送,进程互斥与同步都必须由程序员实现,编程较复杂。
(2)高级通信。进程间一次可以传送大量信息。优点:通信效率高,操作系统隐藏了进程通信的实现细节,减少了通信程序编程上的复杂性。
进程间的高级通信又分为以下三种:
①共享内存通信方式
通信双方利用共享的内存区来实现进程间通信。
②共享文件通信方式
通信双方利用共享一个文件来实现进程间通信。该通信方式又称为管道通信,而被共享的文件称为管道。
③消息传递通信方式
利用操作系统提供的消息传递系统来实现进程间通信,进程间以消息为单位进行信息交换。由于这种通信方式是直接使用操作系统提供的通信命令(原语)进行通信,操作系统隐藏了实现通信的细节,因而大大降低了编程的复杂性,于是得到了广泛使用。消息传递通信根据实现方式的不同又可进一步分为消息缓冲通信方式(直接通信方式)和信箱通信方式(间接通信方式)。
高级通信方式既适用于集中式操作系统,又适用于分布式操作系统。
1. 共享内存通信方式
在内存中划出一块共享存储区,要通信的进程双方将自己的逻辑地址空间映射到共享存储区上
/
2消息缓冲通信方式
消息缓冲通信机制由Hansen在1973年首先提出,后来被广泛应用于本地进程之间通信。消息缓冲通信属于直接通信方式。若采用这种通信方式,则发送进程利用发送命令(原语)直接将信息发送到接收进程的消息缓冲队列,而接收进程从自己的消息缓冲队列中取出消息。进程间的信息交换以消息为单位。
/
3信箱通信方式
信箱通信方式又称为间接通信方式,指进程之间的通信要借助称为信箱的共享数据结构实体,来暂时存放发送进程发送给接收进程的消息。发送进程利用发送原语send将消息发送到信箱中,接收进程利用接收原语receive从信箱中取出对方发送给自己的消息。采用信箱通信的最大好处是,发送方和接收方不必直接建立联系,没有处理时间上的限制,发送方可以在任何时间发送信件,接收方也可以在任何时间取走信件。
/
4管道通信方式
管道:是指连接在两个进程之间的一个打开的共享文件,专门用于进程之间进行数据通信。发送进程可以源源不断地从管道一端写入数据流,每次写入的长度是可变的;接收进程可以从管道的另一端读出数据,读出的长度也是可变的。管道通信方式如图所示。
/2.6线程
1引入线程的目的
1)进程是拥有自己资源的单元体—资源主权。
-虚地址空间,其他运行所需要的系统资源;
2)进程是被调度分派在处理器上运行的单元体
-程序所定义的任务的实现。
局限性--多进程实现某一相关任务时,可能需要共享同一地址
空间和其他资源-一个进程无法使用多个处理器。
解决的方法:
可否分解进程为更小的独立单位,它们可共享进程的资源,尤其是使用同一地址空间,各小单位间仍可以并行。--引入了线程的概念!
例如:现有一应用要求,分批采集数据,分批数据分析,分批分析结果显示。
方法1:顺序程序设计方法
方法2:多进程方法(多道程序设计)
方法3:多线程方法(多道程序设计)
2线程的概念
线程是进程中能够并发执行的实体,是能够被系统独立调度和分派的基本单位。线程除了具有为保证其运行而必不可少的资源外,基本不拥有系统资源。一个进程可以包含若干个线程,同属于一个进程的所有线程共享该进程的全部资源。
线程具有以下属性:
(1)线程属于轻型实体,基本不拥有系统资源,只拥有为保证其运行而必不可少的资源,例如,有一个线程控制块TCB,程序计数器、一组寄存器以及堆栈等。
(2)线程是独立调度和分派的基本单位,亦是能够独立运行的基本单位。
(3)同一个进程中的所有线程共享该进程所拥有的全部资源,例如,同一个进程的所有线程使用相同的地址空间(即进程的地址空间),可以访问该进程的所有文件、定时器和信号量等。
(4)线程并发执行程序高,不但同一个进程内部的诸线程可以并发执行,而且属于不同进程的诸线程也可以并发执行。
线程的状态
线程是动态的,所以线程有生命周期(同进程)
1、线程的三个基本状态
-就绪状态:线程已具备运行条件,等待分配CPU;
-运行状态:线程在CPU上运行;
-等待状态(阻塞状态):线程正在等待事件发生。
2、与进程状态的区别
-线程不需要挂起,因线程不需要让出主存;
-一个线程阻塞,进程及其他线程不因此而阻塞;
-多线程进程的状态:笼统分为活动和非活动状态。
3、线程状态设计的不一致性进程与线程的比较
1)进程是资源分配单元,线程是资源使用者;
2)进程有独立的存储空间,多线程使用进程存储空间;
3)进程是一个独立的保护体系,线程在此体系之中;
4)进程有一个或多个线程。/
4线程实现机制
不同系统中,线程的实现方式不一样。可以将多线程的实现方法分成三类:用户级线程、内核支持线程和混合式线程。无论什么类型的线程,都必须以直接或间接方式获得操作系统内核支持,内核支持线程可以直接使用系统调用为它服务,而用户级线程若要取得内核服务,则必须借助于一个中间系统。
(1)内核支持线程
(2)用户级线程
(3)混合式线程(1)内核支持线程
内核支持线程在操作系统内核的直接支持下运行,无论是用户进程中的线程,还是系统进程中的线程,它们的创建、撤销和切换等都通过系统调用由内核实现。
每当创建一个新线程时,操作系统内核就在内核空间为该线程分配一个线程控制块TCB,用来登记该线程的线程标识符、寄存器内容、状态以及优先级等信息,并分配运行所必需的资源。每当撤销一个线程时,内核便回收为该线程分配的资源和线程控制块。由此可见,内核支持线程的创建和撤销类似于传统进程的创建与撤销。
内核支持线程的调度和切换亦与传统进程的调度和切换类似,由内核完成。传统进程的调度方式和调度算法都适用于内核支持线程。当然,线程在调度和切换过程中花费的开销,要比传统进程在调度和切换过程中花费的开销小得多。内核支持线程以线程为调度单位,因而具有多个线程的进程将获得更多的处理器时间。
优点:
①在引入内核支持线程的操作系统中,调度以线程为单位,内核能够同时调度一个进程内的多个线程并发执行;而在多处理器系统中,则能同时将多个线程分配到各个处理器上并行执行;因此,内核支持线程比较适合多处理器系统。
②在引入内核支持线程的操作系统中,一个线程因等待某个事件而阻塞不会影响其他线程执行。这是因为此时内核会调度同一个进程内的其他线程占用处理器运行,或调度其他进程中的线程执行。
③内核支持线程本身只使用了很小的数据结构和堆栈,切换速度较快,加之内核本身也可以采用多线程技术实现,因此,引入内核支持线程的操作系统一般具有较高的运行效率。
主要缺点是:线程运行在用户态,而线程的调度和管理由内核实现,以至于同一进程中的线程需要在用户态和核心态之间来回切换,系统开销较大。
(2)用户级线程
用户级线程在用户空间内实现。这种线程的创建、撤销、切换以及通信都不能直接利用系统调用完成,而是借助线程库这个中间系统实现。线程库是操作系统提供的一个专门用来管理用户级线程的软件包,它驻留在用户空间内,提供了创建线程、撤销线程、线程切换、线程调度、线程同步以及线程之间通信等功能。线程库在用户级线程与内核之间起到了接口作用。用户级线程通过线程库以间接方式获得内核提供的服务,从而使用户级线程与内核无关;反过来,由于线程库的隔离,内核亦不知道用户级线程的存在。
(3)混合式线程
一些操作系统同时实现了用户级线程和内核支持线程,在这些操作系统中,线程实现分成两个层次:用户层和核心层。用户层线程(用户级线程)使用线程库实现,核心层线程(内核支持线程)在操作系统内核中实现。
线程的创建、同步、调度都在用户空间中完成。一个应用程序中的多个用户级线程被映射到一些(小于或等于)内核支持线程上,而内核支持线程可以在多个处理器上并行执行,且若一个用户级线程阻塞,内核会立即调度另一个线程执行,不会出现因某个线程阻塞而导致整个进程阻塞的现象。因此,系统在宏观上和微观上都具有很好的并行性。重要考点
一、选择题
1、一个进程可以包含多个线程,各线程()。
A、共享进程的虚拟地址空间
B、必须串行工作
C、是资源分配的独立单位
D、共享堆栈
答案:A
解析:一个进程可以拥有多个线程。一个线程是一个进程的一个部分,他们共享相同的内存空间。线程的总数受有效的物理内存的限制。进程是操作系统资源分配的单位,线程可以作为一个独立运行的单位,一个进程可以拥有多个线程,同一进程中的线程共享该进程拥有的资源,进程中的线程也可以并发执行,从而提高系统利用率和系统效率。2、下面()情况不会引起进程之间的切换。
A、进程调用本程序中定义的sinx函数进行数学计算
B、进程处理I/O请求
C、进程创建了子进程并等待子进程结束
D、产生中断
答案:A
解析:进程切换可以在操作系统从当前正在运行的进程中获得控制权的任何时刻发生。
首先考虑系统中断。实际上,大多数操作系统区分两种类型的系统中断。一种称为中断,另一种称为陷阱。前者与当前正在运行的进程无关的某种类型的外部事件相关,如完成一次I/O 操作;后者与当前正在运行的进程所产生的错误或异常条件相关,如非法的文件访问。对于普通中断,控制首先转移给中断处理器,它做一些基本的辅助工作,然后转到与已经发生的特定类型的中断相关的操作系统例程。参见以下例子:
时钟中断:操作系统确定当前正在运行的进程的执行时间是否已经超过了最大允许时间段(时间片,即进程在被中断前可以执行的最大时间段),如果超过了,进程必须切换到就绪态,调入另一个进程。
I/O中断:操作系统确定是否发生了I/O 活动。如果I/O 活动是一个或多个进程正在等待的事件,操作系统就把所有相应的阻塞态进程转换到就绪态(阻塞/挂起态进程转换到就绪/挂起态),操作系统必须决定是继续执行当前处于运行态的进程,还是让具有高优先级的就绪态进程抢占这个进程。
内存失效:处理器访问一个虚拟内存地址,且此地址单元不在内存中时,操作系统必须从外存中把包含这个引用的内存块(页或段)调入内存中。在发出调入内存块的I/O 请求之后,操作系统可能会执行一个进程切换,以恢复另一个进程的执行,发生内存失效的进程被置为阻塞态,当想要的块调入内存中时,该进程被置为就绪态。
3、某进程由于需要从磁盘上读入数据而处于等待状态。当系统完成了所需的读盘操作后,此时该进程的状态将()。
A、从就绪变为运行
B、从运行变为就绪
C、从运行变为阻塞
D、从等待变为就绪
答案:D
解析:答题的关键是读题目,题目上给出当前进程处于等待状态,因此变化状态是从等待状态转为其他状态,因此答案为D。4、在操作系统中,一般不实现进程从()状态的转换。
A、从就绪到等待
B、从运行到就绪
C、从就绪到运行
D、从等待到就绪
答案:A
解析:一个进程在运行期间,不断地从一种状态转换到另一种状态,它可以多次处于就绪状态和执行状态,也可以多次处于阻塞状态。图3_4描述了进程的三种基本状态及其转换。
(1) 就绪→执行
处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。
(2) 执行→就绪
处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。
(3) 执行→阻塞
正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。
(4) 阻塞→就绪
处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。南开答案可以联系QQ 761296021
页:
[1]