文章目录
第一章 计算机系统概述
1.1 操作系统的基本概念
- 操作系统是计算机系统中最基本的系统软件,能控制和管理整个计算机系统的硬件与软件资源。
- 操作系统的基本特征包括并发、共享、虚拟和异步。并发和共享是操作系统两个最基本的特征。
- 操作系统的功能:
处理机管理:进程控制,进程同步,进程通信,死锁处理,处理机调度等
存储器管理:内存分配与回收,地址映射,内存保护与共享,内存扩充等
文件管理:存储空间管理,目录管理,文件读写管理和保护等
设备管理:缓冲管理,设备分配,设备处理和虚拟设备等 - 操作系统提供的接口:命令接口和程序接口。
- 命令接口分为联机命令接口和脱机命令接口,程序接口由一组系统调用(也称广义指令)组成,用户通过在程序中使用这些系统调用来请求操作系统为其提供服务。
- 并发是指两个或多个事件在同一时间间隔内发生。
- 顺序性是单道程序设计的基本特征。
- 系统调用是由操作系统提供给用户的,是操作系统为应用程序使用内核功能所提供的接口,只能通过用户程序间接使用,目的是请求系统服务。
1.1 练习题
- 下面()资源不是操作系统应该管理的。
A、CPU B、内存 C、外存 D、源程序
D
解析:源程序是一种计算机代码,不是操作系统的管理内容。 - 下列关于并发性的叙述中,正确的是()
A、并发性是指若干事件在同一时刻发生
B、并发性是指若干事件在不同时刻发生
C、并发性是指若干事件在同一时间间隔内发生
D、并发性是指若干事件在不同时间间隔内发生
C
解析:并发性是指若干事件在同一时间间隔内发生,而并行性是指若干事件在同一时刻发生。 - 【2009统考真题】单处理机系统中,可并行的是()
I、进程与进程 II、处理机与设备 III、处理机与通道 IV、设备与设备
A、I、II、III
B、I、II、IV
C、I、III、IV
D、II、III、IV
D
解析:单处理机系统中,同一时刻只能有一个进程占用处理机,因此进程之间不能并行执行。 - 用户可以通过()两种方式来使用计算机。
A、命令接口和函数
B、命令接口和系统调用
C、命令接口和文件管理
D、设备管理方式和系统调用
B
解析:操作系统提供的接口:命令接口和程序接口(系统调用)。 - 【2010统考真题】下列选项中,操作系统提供给应用程序的接口是()
A、系统调用
B、中断
C、库函数
D、原语
A
解析:操作系统接口主要有命令接口和程序接口(也称系统调用)。 - 操作系统与用户通信接口通常不包括()
A、shell
B、命令解释器
C、广义指令
D、缓存管理指令
D
解析:命令解释器属于命令接口,shell是命令解析器,也属于命令接口。系统中的缓存全部由操作系统管理,对用户是透明的,操作系统不提供管理系统缓存的系统调用。 - 【2013统考真题】计算机开机后,操作系统最终被加载到()
A、BIOS
B、ROM
C、EPROM
D、RAM
D
解析:系统开机后,操作系统的程序会被自动加载到内存中的系统区,这段区域是RAM。
1.2 操作系统的发展与分类
- 单道批处理系统
特点:自动性、顺序性、单道性
缺点:系统的资源得不到充分的利用 - 多道批处理系统
特点:多道、宏观上并行、微观上串行
优点:资源利用率高、系统吞吐量大
缺点:用户响应的时间较长、不提供人机交互能力 - 分时操作系统
特点:同时性(多路性)、交互性、独立性、及时性
优点:较好地解决了人机交互问题 - 实时操作系统
硬实时操作系统:某个动作必须绝对地在规定的时刻发生,如飞行棋的飞行自动控制系统。
软实时操作系统:能够接受偶尔违反时间规定且不会引起任何永久性的损害,如飞机订票系统。
特点:及时性、可靠性 - 此外还有网络操作系统、分布式操作系统、个人计算机操作系统(常见的有Windows、Linux、Macintosh等)、嵌入式操作系统、服务器操作系统、智能手机操作系统等。
1.2 练习题
- 【2016统考真题】下列关于批处理系统的叙述中,正确的是()
I、批处理系统允许多个用户与计算机直接交互
II、批处理系统分为单道批处理系统和多道批处理系统
III、中断技术使得多道批处理系统和I/O设备可与CPU并行工作
A、仅II、III
B、仅II
C、仅I、II
D、仅I、III
A
解析:批处理缺少交互能力,I错误 - 【2017统考真题】与单道程序系统相比,多道程序系统的优点是()
I、CPU利用率高
II、系统开销小
III、系统吞吐量大
IV、I/O设备利用率高
A、仅I、III
B、仅I、IV
C、仅II、III
D、仅I、III、IV
D - 实时系统的进程调度,通常采用()算法
A、先来先服务
B、时间片轮转
C、抢占式的优先级高者优先
D、高响应比优先
C
解析:实时系统必须能足够及时地处理某些紧急的外部事件,因此普遍用高优先级,并用“可抢占”来确保实时处理。 - 分时系统的一个重要性能是系统的响应时间,对操作系统的()因素进行改进有利于改善系统的响应时间。
A、加大时间片
B、采用静态页式管理
C、优先级+非抢占式调度算法
D、代码可重入
C
解析:采用优先级+非抢占式调度算法,既可让重要的作业/进程通过高优先级尽快获得系统响应,又可保证次要的作业/进程在非抢占式调度下不会迟迟得不到系统响应,二者兼顾,有利于改善系统的响应时间。 - 【2018统考真题】下列关于多任务操作系统的叙述中,正确的是()
I、具有并发和并行的特点
II、需要实现对共享资源的保护
III、需要运行在多CPU的硬件平台上
A、仅I
B、仅II
C、仅I、II
D、I、II、III
C
解析:多任务操作系统可在同一时间内运行多个应用程序,I正确。多个任务必须互斥地访问共享资源,为达到这一目标必须对共享资源进行必要的保护,II正确。现代操作系统都是多任务的(主要特点是并发和并行),并不一定需要运行在多CPU的硬件上,单个CPU也可满足要求,III错误。
1.3 操作系统的运行环境
- 可将CPU的状态划分为用户态(目态)和核心态(又称管态、内核态)。
- 大多数操作系统内核包括:时钟管理、中断机制、原语、系统控制的数据结构及处理。
- 发生中断或异常时,运行用户态的CPU会立即进入核心态,这是通过硬件实现的。
- 异常(Exception)也称内中断、例外或陷入(trap),指源自CPU执行指令内部的事件,如程序的非法操作码、地址越界、算术溢出、虚存系统的缺页及专门的陷入指令等引起的事件。
- 异常不能被屏蔽,一旦出现应立即处理。
- 中断处理的过程
- 在用户程序中,凡是与资源有关的操作(如存储分配、进行I/O传输及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。
- 系统调用的处理需要由操作系统内核程序负责完成,要运行在核心态。用户程序可以执行陷入指令(又称访管指令或trap指令)来发起系统调用,请求操作系统提供服务。
- 下面列举一些由用户态转向核心态的例子:
(1)用户程序要求操作系统的服务,即系统调用。
(2)发生一次中断。
(3)用户程序中产生了一个错误状态。
(4)用户程序中企图执行一条特权指令。
(5)从核心态转向用户态由一条指令实现,这条指令也是特权命令,一般是中断返回指令。 - 若程序的运行由用户态转到核心态,则会用到访管指令,访管指令是在用户态使用的,所以它不可能是特权指令。
- 操作系统中,通道技术是一种硬件技术。
- 操作系统执行程序时,必须从起始地址开始执行。
- 输入/输出指令需要中断操作,中断必须在核心态下执行。
- 系统调用需要触发trap指令。
- 在中断发生后,进入操作系统的程序属于操作系统程序。
1.3 练习题
- ()是操作系统必须提供的功能。
A、图形用户界面(GUI)
B、为进程提供系统调用命令
C、中断处理
D、编译源程序
C
解析:中断是操作系统必须提供的功能,因为计算机的各种错误都需要中断处理,核心态与用户态切换也需要中断处理。 - 用户程序在用户态下要使用特权指令引起的中断属于()
A、硬件故障中断
B、程序中断
C、外部中断
D、访管中断
D
解析:要使用特权指令,就先要转成核心态去运行,这个过程就是访管中断。 - 下列操作系统的各个功能组成部分中,()可不需要硬件的支持。
A、进程调度
B、时钟管理
C、地址映射
D、中断系统
A
解析:中断系统和地址映射显然都需要硬件支持,因为中断指令和地址映射中的重定位都是离不开硬件支持的。而时钟管理中,重置时钟等是由硬件直接完成的。进程调度由调度算法决定CPU使用权,由操作系统实现,无须硬件的支持。 - 计算机区分核心态和用户态指令后,从核心态到用户态的转换是由操作系统程序执行后完成的,而用户态到核心态的转换则是由()完成的。
A、硬件
B、核心态程序
C、用户程序
D、中断处理程序
A
解析:计算机通过硬件中断机制完成由用户态到核心态的转换。中断处理程序一般也在核心态执行,因此无法完成“转换成核心态”这一任务。若由用户程序将操作系统由用户态转换到核心态,则用户程序中就可使用核心态指令,这就会威胁到计算机的安全。 - 只能在核心态下运行的指令是()
A、读时钟指令
B、置时钟指令
C、取数指令
D、寄存器清零
B
解析:若在用户态下执行“置时钟指令”,则一个用户进程可在时间片还未到之前把时钟改回去,从而导致时间片永远不会用完,进而导致该用户进程一直占用CPU,这显然不合理。 - 在操作系统中,只能在核心态下执行的指令是()
A、读时钟
B、取数
C、广义指令
D、寄存器清零
C
解析:广义指令即系统调用命令,它必然工作在核心态。(注意区分“调用”和“执行”,广义指令的调用可能发生在用户态,调用广义指令的那条指令不一定是特权指令,但广义指令存在于核心态中,所以执行一定在核心态。) - 下列选项中,必须在核心态下执行的指令是()
A、从内存中取数
B、将运算结果装入内存
C、算术运算
D、输入/输出
D
解析:输入/输出指令涉及中断操作,而中断处理工作在核心态。 - 【2011统考真题】下列选项中,在用户态执行的是()
A、命令解释程序
B、缺页处理程序
C、进程调度程序
D、时钟中断处理程序
A
解析:缺页处理和时钟中断都属于中断,在核心态执行;进程调度是操作系统内核进程,在核心态执行;命令解释程序属于命令接口,面对用户,在用户态执行。 - 【2012统考真题】下列选项中,不可能在用户态发生的事件是()
A、系统调用
B、外部中断
C、进程切换
D、缺页
C
解析:(注意本题是“在用户态发生”,与上题的“在用户态执行”区分),系统调用是操作系统提供给用户程序的接口,发生在用户态,被调用程序在核心态下执行;外部中断是用户态到核心态的“门”,也发生在用户态,在核心态完成中断过程;进程切换属于系统调用执行过程中的事件,只能发生在核心态;缺页产生后,在用户态发生缺页中断,然后进入核心态执行缺页中断服务程序。 - 【2013统考真题】下列选项中,会导致用户进程从用户态切换到内核态的操作是()。
I、整数除以零
II、sin()函数调用
III、read系统调用
A、仅I、II
B、仅I、III
C、仅II、III
D、I、II和III
B
解析:整数除零(需中断处理)和read系统调用函数需要在内核态执行。 - 【2012统考真题】中断处理和子程序调用都需要压栈以保护现场,中断处理一定会保存而子程序调用不需要保存其内容的是()
A、程序计数器
B、程序状态字寄存器
C、通用数据寄存器
D、通用地址寄存器
B
解析:子程序调用只需保存程序断点,即该指令的下一条指令的地址;中断调用子程序不仅要保存断点(PC的内容),还要保存程序状态字寄存器(PSW)的内容。在中断处理中,最重要的两个寄存器是PC和PSWR。 - 【2014统考真题】下列指令中,不能在用户态执行的是()
A、trap指令
B、跳转指令
C、压栈指令
D、关中断指令
D
解析:trap指令、跳转指令、压栈指令均可以在用户态执行,其中trap指令负责由用户态转换为内核态。关中断指令为特权指令,必须在核心态才能执行。(注意:关中断指令是权限非常大的指令,因为中断是现代操作系统正常运行的核心保障之一) - 【2015统考真题】内部异常(内中断)可分为故障(fault)、陷阱(trap)和终止(abort)三类。下列有关内部异常的叙述中,错误的是()
A、内部异常的产生与当前执行指令相关
B、内部异常的检测由CPU内部逻辑实现
C、内部异常的响应发生在指令执行过程中
D、内部异常处理后返回到发生异常的指令继续执行
D
解析:内中断是指来自CPU和内存内部产生的中断,包括程序运算引起的各种错误,如地址非法、校验错、页面失效、非法指令、用户程序执行特权指令自行中断(INT)和除数为零等,以上都是在指令的执行过程中产生的;内中断不能被屏蔽,一旦出现应立即处理;考虑到特殊情况,如除数为零和自行中断(INT)都会自动跳过中断指令,所以不会返回到发生异常的指令继续执行。 - 【2016统考真题】异常是指令执行过程中在处理器内部发生的特殊事件,中断是来自处理器外部的请求事件。下列关于中断或异常情况的叙述中,错误的是()
A、“访存时缺页”属于中断
B、“整数除以0”属于异常
C、“DMA传送结束”属于中断
D、“存储保护错”属于异常
A
解析:中断是指来自CPU执行指令以外事件的发生,如设备发出的I/O结束中断,表示设备输入/输出处理已经完成,希望处理机能够向设备发出下一个输入输出请求,同时让完成输入/输出后的程序继续运行。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。异常也称内中断、例外或陷入(trap),指源自CPU执行指令内部的事件,如程序的非法操作码、地址越界、算术溢出、虚存系统的缺页及专门的陷入指令等引起的事件。因此“访存时缺页”属于异常。 - 【2015统考真题】处理外部中断时,应该由操作系统保存的是()
A、程序计数器(PC)的内容
B、通用寄存器的内容
C、块表(TLB)的内容
D、Cache中的内容
B
解析:外部中断处理过程,PC值由中断隐指令自动保存,而通用寄存器内容由操作系统保存。 - 【2015统考真题】假定下列指令已装入指令寄存器,则执行时不可能导致CPU从用户态变为内核态(系统态)的是()
A、DIV R0,R1 ;(R0)/(R1)->R0
B、INT n ;产生软中断
C、NOT R0 ;寄存器R0的内容取非
D、MOV R0,addr;把地址addr处的内存数据放入寄存器R0
C
解析:部分指令可能出现异常导致中断,从而转到核心态,指令A有除零异常的可能;指令B为中断指令;指令D有缺页异常的可能;指令C不会发生异常。 - 【2017统考真题】执行系统调用的过程包括如下主要操作:
①返回用户态
②执行陷入(trap)指令
③传递系统调用参数
④执行相应的服务程序
正确的执行顺序是()。
A、② --> ③ --> ① --> ④
B、② --> ④ --> ③ --> ①
C、③ --> ② --> ④ --> ①
D、③ --> ④ --> ② --> ①
C
解析:执行系统调用的过程:正在运行的进程先传递系统调用参数,然后由陷入(trap)指令负责将用户态转换为内核态,并将返回地址压入堆栈以备后用,接下来CPU执行相应的内核态服务程序,最后返回用户态,选项C正确。 - 【2018统考真题】定时器产生时钟中断后,由时钟中断服务程序更新的部分内容是()。
I、内核中时钟变量的值
II、当前进程占用CPU的时间
III、当前进程在时间片内的剩余执行时间
A、仅I、II
B、仅II、III
C、仅I、III
D、I、II、III
D
解析:时钟中断的主要工作是处理和时间有关的信息以及决定是否执行调度程序。和时间有关的所有信息包括系统时间、进程的时间片、延时、使用CPU的时间、各种定时器,因此I、II、III均正确。 - 下列关于系统调用的叙述中,正确的是()
I、在执行系统调用服务程序的过程中,CPU处于内核态
II、操作系统通过提供系统调用避免用户程序直接访问外设
III、不同的操作系统为应用程序提供了统一的系统调用接口
IV、系统调用是操作系统内核为应用程序提供服务的接口
A、仅I、IV
B、仅II、III
C、仅I、II、IV
D、仅I、III、IV
C
解析:用户可以在用户态调用操作系统的服务,但执行具体的系统调用服务程序是处于内核态的,I正确;用户程序需要通过系统调用使用操作系统的设备管理服务,II正确;操作系统不同,底层逻辑、实现方式均不相同,为应用程序提供的系统调用接口也不同,III错误;系统调用是用户在程序中调用操作系统提供的子功能,IV正确。
1.4 操作系统的体系结构
- 操作系统的两种主要的体系结构:大内核和微内核。
- 大内核系统将操作系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为应用提供高性能的系统服务。因为各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具有无可比拟的性能优势。
- 微内核系统将内核中最基本的功能(如进程管理等)保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低了内核的设计复杂性。微内核结构有效地分离了内核与服务、服务与服务,使得它们之间的接口更加清晰,维护的代价大大降低,各部分可以独立地优化和演进,从而保证了操作系统的可靠性。因为需要频繁地在核心态和用户态之间进行切换,操作系统的执行开销偏大,影响了系统的效率。
1.4 练习题
- 相对于传统操作系统结构,采用微内核结构设计和实现操作系统具有诸多好处,下列()是微内核结构的特点。
I、使系统更加高效
II、添加系统服务时,不必修改内核
III、微内核结构没有单一内核稳定
IV、使系统更可靠
A、I、III、IV
B、I、II、IV
C、II、IV
D、I、IV
C
解析:微内核结构的信息交换影响了系统的效率,I错误;由于内核的服务变少,且一般来说内核的服务越少内核越稳定,所以III错;而II、IV正是微内核的优点。
第二章 进程管理
2.1 进程与线程
- 为什么要引入进程?
传统的程序本身是一个静态的概念,我们无法从程序的字面上看出它何时执行、何时停顿,也无法看出它与其他执行程序的关系,为了深刻描述程序动态执行过程的性质乃至更好地支持和管理多道程序的并发执行,引入了进程的概念。 - 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念。每个进程包含独立的地址空间,进程各自的地址空间是私有的,只能执行自己地址空间中的程序,且只能访问自己地址空间中的数据,相互访问会导致指针的越界错误。因此,进程之间不能直接交换数据,但可利用操作系统提供的共享文件、消息传递、共享存储区等进行通信。
- 一个进程实体由程序段、相关数据段和进程控制块(Process Control Block,PCB) 三部分构成,其中PCB是进程存在的唯一标识,程序段是进程运行的程序的代码,数据段则是存储程序运行过程中相关的一些数据。操作系统通过PCB表来管理和控制进程。
- 通常进程有以下五种状态,前三种是进程的基本状态。
(1)运行态。进程正在处理机上运行。在单处理机环境下,每个时刻最多只有一个进程处于运行态。
(2)就绪态。进程获得了除处理机外的一切所需资源,一旦得到处理机,便可立即运行。 系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。
(3)阻塞态,又称等待态。进程正在等待某一事件而暂停运行,如等待某资源为可用(不包括处理机)或等待输入/输出完成。即使处理机空闲,该进程也不能运行。
(4)创建态。进程正在被创建,尚未转到就绪态。
(5)结束态。进程正从系统中消失,可能是进程正常结束或其他原因中断退出运行。进程需要结束运行时,系统首先必须置该进程为结束态,然后再进一步处理资源释放和回收等工作。 - 注意区别就绪态和等待态:就绪态是指进程仅缺少处理机,只要获得处理机资源就立即运行;而等待态是指进程需要其他资源(除了处理机)或等待某一事件。需要注意的是,一个进程从运行态变成阻塞态是主动的行为,而从阻塞态变成就绪态是被动的行为,需要其他相关进程的协助。
- 允许一个进程创建另一个进程,创建者称为父进程,被创建者称为子进程。子进程可以继承父进程所拥有的资源,在撤销父进程时,必须同时撤销其所有的子进程。
- 进程切换是指处理机从一个进程的运行转到另一个进程上运行,在这个过程中,进程的运行环境产生了实质性的变化。
- 注意“调度”和“切换”的区别。调度是指决定资源分配给哪个进程的行为,是一种决策行为;切换是指实际分配的行为,是执行行为。一般来说,先有资源的调度,然后才有进程的切换。
- 进程通信是指进程之间的信息交换。PV操作是低级通信方式,高级通信方式是指以较高的效率传输大量数据的通信方式。
- 高级通信方式主要有:共享存储、消息传递、管道通信三类。
- 共享存储如图:
- 进程与程序的区别与联系
(1)进程是一个动态的概念,进程的运行实体是程序,离开程序的进程没有存在的意义。进程是由程序、数据和PCB三部分组成的,而程序是一组有序的指令集合,是一种静态的概念。
(2)进程是动态地创建和消亡的,具有一定的生命周期,是暂时存在的;而程序则是一组代码的集合,是永久存在的,可长期保存。
(3)一个进程可以执行一个或几个程序,一个程序也可构成多个进程。进程可创建进程,而程序不可能形成新的程序。 - 在消息传递系统中,进程间的数据交换是以格式化的消息为单位的。
(1)直接通信方式。发送进程直接把消息发送给接收进程,并把它挂在接收进程的消息缓冲队列上,接收进程从消息缓冲队列中取得消息,如下图所示:
(2)间接通信方式。发送进程把消息发送到某个中间实体,接收进程从中间实体取得消息。这种中间实体一般称为信箱,这种通信方式又称信箱通信方式。该通信方式广泛应用于计算机网络中,相应的通信系统称为电子邮件系统。
- 管道通信是消息传递的一种特殊方式。所谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间的通信的一个共享文件,又名pipe文件。为了协调双方的通信,管道机制必须提供以下三方面的协调能力:互斥、同步和确定对方的存在。
- 管道只能采用半双工通信,即某一时刻只能单向传输。要实现父子进程双方互动通信,需要定义两个管道。
- 线程是一个进本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。线程没有自己独立的地址空间,它共享其所属进程的空间;进程可以创建多个线程;与进程之间线程的通信可以直接通过它们共享的存储空间。
- 线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。
- 在引入线程的操作系统中,线程是独立调度的基本单位,进程是拥有资源的基本单位。在同一进程中,线程的切换不会引起进程切换。
- 线程不拥有系统资源(也有一点儿必不可少的资源),但线程可以访问其隶属进程的系统资源。
- 多个线程之间可以并发执行,从而使操作系统具有更好的并发性,提高了系统的吞吐量。
- 线程切换时只需保存和设置少量寄存器内容,开销很小,线程之间的同步与通信非常容易实现,甚至无须操作系统的干预。
- 进程间通信(IPC)需要进程同步和互斥手段的辅助,以保证数据的一致性,而线程间可以直接读/写进程数据段(如全局变量)来进行通信。
- 多线程模型
(1)多对一模型。将多个用户级线程映射到一个内核级线程,线程管理在用户空间完成。此模式中,用户级线程对操作系统不可见(即透明)。
优点:线程管理是在用户空间进行的,因而效率比较高。
缺点:一个线程在使用内核服务时被阻塞,整个进程都会被阻塞;多个线程不能并行地运行在多处理机上。
(2)一对一模型。将每个用户级线程映射到一个内核级线程。
优点:当一个线程被阻塞后,允许另一个线程继续执行,所以并发能力较强。
缺点:每创建一个用户级线程都需要创建一个内核级线程与其对应,这样创建线程的开销比较大,会影响到应用程序的性能。
(3)多对多模型。将 n 个用户级线程映射到 m 个内核级线程上,要求 m ≤ n 。
特点:多对多模型是多对一模型和一对多模型的折中,既克服了多对一模型并发度不高的缺点,又克服了一对一模型的一个用户进程占用太多内核级线程而开销太大的缺点。 - 一个进程的状态变化可能会引起另一个进程的状态变化。例如,一个进程时间片用完,可能会引起另一个就绪进程的运行。(也可能不会引起另一个进程的状态变化,例如,一个进程由阻塞态转变为就绪态就不会引起其他进程的状态变化。)
- 一个进程的基本状态可以从其他两种基本状态转变过去,这个基本的状态一定是就绪态
2.1 练习题
- 进程和程序的根本区别是()
A、静态和动态特点
B、是不是被调入内存
C、是不是具有就绪、运行和等待三种状态
D、是不是占有处理器
A
解析:动态性是进程最重要的特性,以此来区分文件形式的静态程序。 - 下面的叙述中,正确的是()
A、进程获得处理器运行是通过调度得到的
B、优先级是进程调度的重要依据,一旦确定不能改动
C、在单处理器系统中,任何时刻都只有一个进程处于运行态
D、进程申请处理器而得不到满足时,其状态变为阻塞态
A
解析:优先级分静态和动态两种,动态优先级是根据运行情况而随时调整的,B选项错误;系统发生死锁时有可能进程全部都处于阻塞态,或无进程任务,CPU空闲,C选项错误;进程申请处理器得不到满足时就处于就绪态,等待处理器的调度,D选项错误。 - 系统进程所请求的一次I/O操作完成后,将使进程状态从()
A、运行态变为就绪态
B、运行态变为阻塞态
C、就绪态变为运行态
D、阻塞态变为就绪态
D
解析:I/O操作完成之前进程在等待结果,状态为阻塞态;完成后进程等待事件就绪,变为就绪态。 - 并发进程失去封闭性,是指()
A、多个相对独立的进程以各自的速度向前推进
B、并发进程的执行结果与速度无关
C、并发进程执行时,在不同时刻发生的错误
D、并发进程共享变量,其执行结果与速度有关
D
解析:程序封闭性是指进程执行的结果只取决于进程本身,不受外界影响,也就是说,进程在执行过程中不管是不停顿地执行,还是走走停停,进程的执行速度都不会改变它的执行结果。失去封闭性后,不同速度下的执行结果不同。 - 通常用户进程被建立后,()。
A、便一直存在于系统中,直到被操作人员撤销
B、随着进程运行的正常或不正常结束而撤销
C、随着时间片轮转而撤销与建立
D、随着进程的阻塞或者唤醒而撤销与建立
B
解析:进程在时间片结束时只是就绪,不是撤销;进程可在完成时撤销,或在出现内存错误等时撤销。进程之间有可能具有相关性,也有可能是相互独立的。 - 用信箱实现进程间互通信息的通信机制要有两个通信原语,它们是()
A、发送原语和执行原语
B、就绪原语和执行原语
C、发送原语和接收原语
D、就绪原语和接收原语
C
解析:用信箱实现进程间互通信息的通信机制要有两个通信原语,它们是发送原语和接收原语。 - 支持多道程序设计的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,但其中()不是引起操作系统选择新进程的直接原因。
A、运行进程的时间片用完
B、运行进程出错
C、运行进程要等待某一事件发生
D、有新进程进入就绪态
D
解析:这道题实际上问的是,哪种情况下进程不从运行态转换成其他状态。 - 若一个进程实体由PCB、共享正文段、数据堆段和数据栈段组成,请指出下列C语言程序中的内容及相关数据结构各位于哪一段中。
I、全局赋值变量()
II、未赋值的局部变量()
III、函数调用实参传递值()
IV、用malloc()要求动态分配的存储区()
V、常量值(如1998、“string”)()
VI、进程的优先级()
A、PCB
B、正文段
C、堆段
D、栈段
B、D、D、C、B、A
解析:二进制代码和常量存放在正文段,动态分配的存储区在数据堆段,临时使用的变量在数据栈段,进程的优先级只能在PCB内。 - 系统动态DLL库中的系统线程,被不同的进程所调用,它们是()的线程。
A、不同
B、相同
C、可能不同,也可能相同
D、不能被调用
B
解析:程序代码经过多次创建可对应不同的进程,而同一个系统的进程(或线程)可以由系统调用的方法被不同的进程(或线程)多次使用。 - PCB是进程存在的唯一标志,下列()不属于PCB
A、进程ID
B、CPU状态
C、堆栈指针
D、全局变量
D
解析:PCB内所含的数据结构内容,主要有四大类:进程标志信息、进程控制信息、进程资源信息、CPU现场信息。因此,全局变量与PCB无关,它只与用户代码有关。 - 在一个多道系统中,若就绪队列不空,就绪的进程数目越多,处理器的效率()。
A、越高
B、越低
C、不变
D、不确定
C
解析:只要就绪队列不为空,CPU就总是可以调度进程运行,保持繁忙。 - 进程自身决定()
A、从运行态到阻塞态
B、从运行态到就绪态
C、从就绪态到运行态
D、从阻塞态到就绪态
A
解析:只有从运行态到阻塞态的转换是由进程自身决定的。从运行态到就绪态的转换是由于进程的时间片用完,“主动”调用程序转向就绪态。从就绪态到运行态的转换同样是由调度程序决定的,但进程是“被动的”。从阻塞态到就绪态的转换是由协作进程决定的。 - 对进程的管理和控制使用()
A、指令
B、原语
C、信号量
D、信箱
B - 下面的叙述中,正确的是()
A、不论是系统支持的线程还是用户级线程,其切换都需要内核的支持
B、引入线程后,处理器仍在进程间切换
C、线程的引入增加了程序执行时的时空开销
D、线程的切换,可能引起进程的切换
D
解析:假如有一个内核进程,它映射到用户级后有多个线程,那么这些线程之间的切换不需要在内核级切换进程,也就不需要内核的支持,A错误;同一进程中,线程的切换不会引起进程的切换,当从一个进程中的线程切换到另一个进程中的线程时,才会引起进程的切换,B错误,D正确;引入线程是为了减少程序执行时的时空开销,C错误。 - 【2010统考真题】下列选项中,导致创建新进程的操作是()。
I、用户登录成功
II、设备分配
III、启动程序执行
A、仅I和II
B、仅II和III
C、仅I和III
D、I、II和III
C
解析:用户登录成功后,系统要为此创建一个用户管理的进程;启动程序执行是引起创建进程的典型事件。 - 【2014统考真题】在支持多线程的系统中,进程P创建的若干线程不能共享的是()
A、进程P的代码段
B、进程P中打开的文件
C、进程P的全局变量
D、进程P中某线程的栈指针
D
解析:进程中的线程共享进程内的全部资源,但进程中某线程的栈指针对其他线程是透明的,不能与其他线程共享。 - 在以下描述中,()并不是多线程系统的特长。
A、利用线程并行地执行矩阵乘法运算
B、Web服务器利用线程响应HTTP请求
C、键盘驱动程序为每个正在运行的应用配备一个线程,用以响应该应用的键盘输入
D、基于GUI的调试程序用不同的线程分别处理用户输入、计算和跟踪等操作
C
解析:整个系统只有一个键盘,且速度比较慢,完全可以用一个线程来处理整个系统的键盘输入。 - 【2012统考真题】下列关于进程和线程的叙述中,正确的是()
A、不管系统是否支持线程,进程都是资源分配的基本单位
B、线程是资源分配的基本单位,进程是调度的基本单位
C、系统级线程和用户级线程的切换都需要内核的支持
D、同一进程中的各个线程拥有各自不同的地址空间
A
解析:在用户级线程中,有关线程管理的所有工作都应由应用程序完成,无须内核的干预,内核意识不到线程的存在,同一进程中的各个线程共享进程的地址空间。 - 【2010统考真题】下列选项中,降低进程优先级的合理时机是()。
A、进程时间片用完
B、进程刚完成I/O操作,进入就绪队列
C、进程长期处于就绪队列
D、进程从就绪态转为运行态
A
解析:进程时间片用完,可降低其优先级以让其他进程被调度进入执行状态,A正确;刚完成I/O操作,为了让其尽快处理I/O结果,应提高优先级,不选B;进程长期处于就绪队列,为不致于产生饥饿现象,也应适当提高优先级,不选C;进程的优先级应在时间片用完后在降低,不应在D时降低。 - 【2014统考真题】一个进程的读磁盘操作完成后,操作系统针对该进程必做的是()。
A、修改进程状态为就绪态
B、降低进程优先级
C、给进程分配用户内存空间
D、增加进程时间片大小
A
解析:进程申请读磁盘操作时,因为要等待I/O操作完成,会把自身阻塞,此时进程变为阻塞态;I/O操作完成后,进程从阻塞态转换到就绪态(这是操作系统的行为)。 - 【2014统考真题】下列关于管道(pipe)通信的叙述中,正确的是()。
A、一个管道可实现双向数据传输
B、管道的容量仅受磁盘容量大小限制
C、进程对管道进行读操作和写操作都可能被阻塞
D、一个管道只能有一个读进程或一个写进程对其操作
C
解析:管道类似于通信中半双工信道的进程通信机制,一个管道可以实现双向的数据传输,而同一时刻只能最多有一个方向的传输,不能两个方向同时进行;当管道满时,进程在写管道会被阻塞,而当管道空时,进程在读管道会被阻塞。 - 【2018统考真题】下列选项中,可能导致当前进程P阻塞的事件是()。
I、进程P申请临界资源
II、进程P从磁盘读数据
III、系统将CPU分配给高优先权的进程
A、仅I
B、仅II
C、仅I、II
D、I、II、III
C
解析:进程等待某资源为可用(不包括处理机)或等待输入输出完成均会进入阻塞态,因此I、II正确;III中情况发生时,进程进入就绪态,III错误。 - 【2015统考真题】下列选项中,会导致进程从执行态变为就绪态的事件是()。
A、执行P(wait)操作
B、申请内存失败
C、启动I/O设备
D、被高优先级进程抢占
D
解析:P(wait)操作表示进程请求某一资源,A、B、C都因为请求某一资源会进入阻塞态,而D只是被剥夺了处理机资源,进入就绪态,一旦得到处理机即可运行。 - 【2019统考真题】下列关于线程的描述中,错误的是()
A、内核级线程的调度由操作系统完成
B、操作系统为每个用户级线程建立一个线程控制块
C、用户级线程间的切换比内核级线程间的切换效率高
D、用户级线程可以在不支持内核级线程的操作系统上实现
B
解析:B选项属于一对一模型。 - 【2019统考真题】下列选项中,可能会将进程唤醒的事件是()。
I、I/O结束
II、某进程退出临界区
III、当前进程的时间片用完
A、仅I
B、仅III
C、仅I、II
D、I、II、III
C
解析:当被阻塞进程等待的某资源(不包括处理机)可用时,进程将会被唤醒(阻塞态→就绪态)。时间片用完,就绪态变成执行态。
2.2 处理机调度
- 一个作业从提交开始直到完成,往往要经历以下三级调度:
(1)作业调度。又称高级调度,按一定的原则从外存上处于后备状态的作业中挑选一个(或多个)作业,给它(们)分配内存、输入输出设备等必要的资源,建立相应的进程。对于每个作业只调入一次、调出一次。
(2)中级调度。又称内存调度,作用是提高内存利用率和系统吞吐量。将暂时不能运行的进程挂起,处于作业调度和进程调度之间。
(3)进程调度。又称低级调度,是操作系统中最基本的一种调度。 - 作业调度为进程活动做准备,进程调度使进程正常活动起来,中级调度将暂时不能运行的进程挂起,处于作业调度和进程调度之间。作业调度次数少,中级调度次数略多,进程调度频率最高,进程调度是最基本的,不可或缺。
- 不能进行进程的调度与切换的情况:
(1)在处理中断的过程中。
(2)进程在操作系统内核程序临界区中。
(3)其他需要完全屏蔽中断的原子操作过程中。如加锁、解锁、中断现场保护、恢复等原子操作。在原子过程中,连中断都要屏蔽,更不应该进行进程调度与切换。
若在上述过程中发生了引起调度的条件,则不能马上进行调度和切换,应置系统的请求调度标志,直到上述过程结束后才进行相应的调度与切换。 - 进程调度方式
(1)非剥夺调度方式,又称非抢占方式。是指当一个进程正在处理机上执行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在执行的进程继续执行,直到该进程完成或发生某种事件而进入阻塞态时才把处理机分配给更为重要或紧迫的进程。优点是实现简单、系统开销小,适用于大多数的批处理系统,但它不能用于分时系统和大多数的实时系统。
(2)剥夺调度方式,又称抢占方式。是指当一个进程正在处理机上执行时,若有某个更为重要或紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给这个更为重要或紧迫的进程。对提高系统吞吐率和响应效率都有明显的好处。 - 调度的基本准则:
(1)CPU利用率。应尽可能使CPU保持“忙”状态,使这一资源利用率最高。
(2)系统吞吐量。表示单位时间内CPU完成作业的数量。
(3)周转时间。周转时间是指从作业提交到作业完成所经历的时间,周转时间=作业完成时间-作业提交时间。
(4)等待时间。等待时间指进程处于等处理机状态的时间之和,等待时间越长,用户满意度越低。处理机调度算法只影响作业在就绪队列中等待所花的时间。
(5)响应时间。响应时间指从用户提交请求到系统首次产生响应所用的时间。 - 先来先服务(FCFS)调度算法
FCFS调度算法是一种最简单的调度算法,它既可用于作业调度,又可用于进程调度。
在作业调度中,算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
在进程调度中,FCFS调度算法每次从就绪队列中选择最先进入该队列的进程,将处理机分配给它,使之投入运行,直到完成或因某种原因而阻塞时才释放处理机。
FCFS调度算法属于不可剥夺算法,特点是算法简单,但效率低;对长作业比较有利,但对短作业不利(相对于SJF和高响应比);有利于CPU繁忙型作业,而不利于I/O繁忙型作业。 - 短作业优先(SJF)调度算法
SJF调度算法是指对短作业(进程)优先调度的算法。SJF调度算法从后备队列中选择一个或若干估计运行时间最短的作业,将它们调入内存运行;短进程优先(SPF)调度算法从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即执行,直到完成或发生某事件而阻塞时,才释放处理机。平均等待时间、平均周转时间最少。
缺点:对长作业不利,长作业的周转时间会增加,由于调度程序总是优先调度那些(即使是后进来的)短作业,将导致长作业长期不被调度(“饥饿”现象);完全未考虑作业的紧迫程度,因此不能保证紧迫性作业会被及时处理;根据估计执行时间而定,不一定能真正做到短作业优先调度。 - 优先级调度算法
又称优先权调度算法,它既可用于作业调度,又可用于进程调度。优先级用于描述作业运行的紧迫程度。
在作业调度中,优先级调度算法每次从后备作业队列中选择优先级最高的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,将处理机分配给它,使之投入运行。
根据新的更高优先级进程能否抢占正在执行的进程,可将该调度算法分为非剥夺式优先级调度算法、剥夺式优先级调度算法。而根据进程创建后其优先级是否可以改变,可以将进程优先级分为静态优先级和动态优先级,静态优先级是在创建进程时确定的,在进程的整个运行期间保持不变;动态优先级在进程运行过程中,根据进程情况的变化动态调整优先级,主要依据有进程占有CPU时间的长短、就绪进程等待CPU时间的长短。
一般来说,进程优先级的设置可以参照以下原则:
(1)系统进程 > 用户进程。
(2)交互型进程 > 非交互型进程(或前台进程 > 后台进程)。
(3)I/O型进程 > 计算型进程。所谓I/O型进程,是指那些会频繁使用I/O设备的进程,而计算型进程是那些频繁使用CPU的进程(很少使用I/O设备)。由于I/O设备的处理速度要比CPU慢得多,因此若将I/O型进程的优先级设置得更高,就更有可能让I/O设备尽早开始工作,进而提升系统的整体效率。 - 高响应比优先调度算法
高响应比优先调度算法主要用于作业调度,是对FCFS调度算法和SJF调度算法的一种综合平衡,同时考虑了每个作业的等待事件和估计的运行时间。作业调度时,先计算后备作业队列中每个作业的响应比,从中选出响应比最高的作业投入运行。
响应比Rp=(等待时间+要求服务时间)/(要求服务时间)
作业的等待时间相同时,要求服务时间越短,响应比越高,有利于短作业。
要求服务时间相同时,等待时间越长,响应比越高,因此它实现的是先来先服务。
对于长作业,当等待时间足够长时,响应比便可升到很高,从而也可获得处理机,从而克服了饥饿状态,兼顾了长作业。 - 时间片轮转调度算法
时间片轮转调度算法主要适用于分时系统,先来先服务的原则,在使用完一个时间片后,即使进程并未完成其运行,它也必须释放出(被剥夺)处理机给下一个就绪的进程,而被剥夺的进程返回到就绪队列的末尾重新排队。
时间片的大小对系统性能的影响很大。若时间片足够大,以至于所有进程都能在一个时间片内执行完毕,则时间片轮转调度算法就退化为先来先服务调度算法。如时间片很小,则处理机将在进程间过于频繁地切换,使处理机的开销增大,而真正用于运行用户进程的时间将减少。因此,时间片的大小应选择适当。
时间片的长短通常由以下因素确定:系统的响应时间、就绪队列中的进程数目和系统的处理能力。 - 多级反馈队列调度算法(融合了前几种算法的优点)
实现思想:
(1)设置多个就绪队列,并赋予不同的优先级,第1级队列的优先级最高,第2级队列次之,其余队列的优先级逐次降低。
(2)赋予各个队列中进程执行时间片的大小各不相同。在优先级越高的队列中,每个进程的运行时间片越小。例如,第2级队列的时间片要比第1级队列的时间片长1倍……第 i + 1 级队列的时间片要比第 i 级队列的时间片长1倍。
(3)一个新进程进入内存后,首先将它放入第1级队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;若它在一个时间片结束时尚未完成,调度程序便将该进程转入第2级队列的末尾,再同样按FCFS原则等待调度执行;若它在第2级队列
多级反馈队列调度算法通过动态调整进程优先级和时间片大小,兼顾多方面的系统目标。例如,为提高系统吞吐量和缩短平均周转时间而照顾短进程;为获得较好的I/O设备利用率和缩短响应时间而照顾I/O型进程;同时也不必事先估计进程的执行时间。
优势:
(1)终端型作业用户:短作业优先。
(2)短批处理作业用户:周转时间较短。
(3)长批处理作业用户:经过前面几个队列得到部分执行,不会长期得不到处理。 - 优先级调度算法按照任务的优先级进行调度,对于更紧急的任务给予更高的优先级,适合实时操作系统。高响应比优先调度算法、时间片轮转调度算法、多级反馈队列调度算法都能保证每个任务在一定时间内分配到时间片,并轮流占用CPU,适合分时操作系统。
2.2 练习题
- 时间片轮转调度算法是为了()。
A、多个用户能及时干预系统
B、使系统变得高效
C、优先级较高的进程得到及时响应
D、需要CPU时间最少的进程最先做
A
解析:时间片轮转的主要目的是,使得多个交互的用户能够得到及时响应,使得用户以为“独占”计算机的使用,增加了系统开销,不会使得系统高效运转,吞吐量和周转时间均不如批处理,但其较快速的响应时间使得用户能够与计算机进行交互,改善了人机环境,满足用户需求。 - 设有4个作业同时到达,每个作业的执行时间均为2h,它们在一台处理器上按单道式运行,则平均周转时间为()。
A、1h
B、5h
C、2.5h
D、8h
B
解析:4个作业的周转时间分别是2h,4h,6h,8h,所以4个作业的总周转时间为20h。平均周转时间=5h。 - 下列调度算法中,()调度算法是绝对可抢占的。
A、先来先服务
B、时间片轮转
C、优先级
D、短进程优先
B
解析:时间片轮转算法是由时间配额决定的、是绝对可抢占的。优先级算法和短进程优先算法都可分为抢占式和不可抢占式。 - 作业是用户提交的,进程是由系统自动生成的,除此之外,两者的区别是()。
A、两者执行不同的程序段
B、前者以用户任务为单位,后者以操作系统控制为单位
C、前者是批处理的,后者是分时的
D、后者是可并发执行的,前者则不同
B
解析:作业是从用户角度出发的,它由用户提交,以用户任务为单位;进程是从操作系统出发的,由系统生成,是操作系统的资源分配和独立运行的基本单位。
第5题表:
进程名 | 到达时间 | 运行时间 |
---|---|---|
P1 | 0.0 | 9 |
P2 | 0.4 | 4 |
P3 | 1.0 | 1 |
P4 | 5.5 | 4 |
P5 | 7 | 2 |
- 有以下的进程需要调度执行(见上表)
(1)若用非抢占式短进程优先调度算法,问这5个进程的平均周转时间是多少?
(2)若采用抢占式短进程优先调度算法,问这5个进程的平均周转时间是多少?
A、8.62;6.34
B、8.62;6.8
C、10.62;6.34
D、10.62;6.8
D
解析:周转时间=完成时间-作业到达时间,
非抢占式:P1的周转时间是9-0=9;P2的周转时间是16-0.4=15.6;P3的周转时间是10-1=9;P4的周转时间是20-5.5=14.5;P5的周转时间是12-7=5;
平均周转时间为(9+15.6+9+14.5+5)//5=10.62。
同理,抢占式的平均周转时间为6.8。 - 下列说法中,正确的是()
I、分时系统的时间片固定,因此用户越多,响应时间越长。
II、UNIX是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统分类,属于分时操作系统。
III、中断向量地址是中断服务例行程序的入口地址。
IV、中断发生时,由硬件保护并更新程序计数器(PC),而不是由软件完成,主要是为了提高处理速度
A、I、II
B、II、III
C、III、IV
D、仅IV
A
解析:分时系统中,响应时间与时间片和用户数成正比,中断向量本身是用于存放中断服务例行程序的入口地址,因此中断向量地址就应是该入口地址的地址;中断由硬件保护并完成,主要是为了保证系统运行可靠、正确。提高处理速度也是一个好处,但不是主要目的。
第7题表:
进程名 | 到达时间 | 运行时间 |
---|---|---|
P1 | 0.0 | 9 |
P2 | 0.4 | 4 |
P3 | 1.0 | 1 |
P4 | 5.5 | 4 |
P5 | 7 | 2 |
- 【2013统考真题】某系统正在执行三个进程P1,P2,P3,各进程的计算(CPU)时间和I/O时间比例如上表所示。为提高系统资源利用率,合理的进程优先级设置应为()。
A、P1 > P2 > P3
B、P3 > P2 > P1
C、P2 > P1 = P3
D、P1 > P2 = P3
B
解析:I/O型作业的优先权高于计算型作业的优先权,这是由于I/O操作需要及时完成,它没有办法长时间的保存所要输入输出的数据,所以考虑到系统资源利用率,要选择I/O繁忙型作业有更高的优先级。 - 【2009统考真题】下列进程调度算法中,综合考虑进程等待时间和执行时间的是()。
A、时间片轮转调度算法
B、短进程优先调度算法
C、先来先服务调度算法
D、高响应比优先调度算法
D
解析:响应比R=(等待事件+执行时间)/执行时间。它综合考虑了每个进程的等待时间和执行时间,对于同时到达的长进程和短进程,短进程会优先执行,以提高系统吞吐量;而长进程的响应比可以随等待时间的增加而提高,不会产生进程无法调度的情况。
第9题表:
作业 | 到达时刻t | 运行时间 |
---|---|---|
J1 | 0 | 3 |
J2 | 1 | 3 |
J3 | 1 | 2 |
J4 | 3 | 1 |
- 【2017统考真题】假设4个作业到达系统的时刻和运行时间如上表所示。系统在t=2时开始作业调度。若分别采用先来先服务和短作业优先调度算法,则选中的作业分别是()。
A、J2,J3
B、J1,J4
C、J2,J4
D、J1,J3
D
解析:显然。 - 【2012统考真题】一个多道批处理系统中仅有P1和P2两个作业,P2比P1晚5ms到达,它的计算和I//O操作顺序如下:
P1:计算60ms,I/O80ms,计算20ms
P2:计算120ms,I/O40ms,计算40ms
若不考虑调度和切换时间,则完成两个作业需要的时间最少是()。
A、240ms
B、260ms
C、340ms
D、360ms
B
解析:显然。 - 【2016统考真题】某单CPU系统中有输入和输出设备各1台,现有3个并发执行的作业,每个作业的输入、计算和输出时间均某单CPU系统中有输入和输出设备各一台,现有3个并发执行的作业,每个作业的输入、计算和输出时间均分别为2ms、3ms和4ms,且都按输入、计算和输出的顺序执行,则执行完3个作业需要的时间最少是()。
A、15ms
B、17ms
C、22ms
D、27ms
B
解析:画图,一眼就看出来了。 - 【2017统考真题】下列有关基于时间片的进程调度的叙述中,错误的是()。
A、时间片越短,进程切换的次数越多,系统开销越大
B、当前进程的时间片用完后,该进程状态由执行态变为阻塞态
C、时钟中断发生后,系统会修改当前进程在时间片内的剩余时间
D、影响时间片大小的主要因素包括响应时间、系统开销和进程数量等
B
解析:A明显正确;当前进程的时间片用完后,状态由执行态变为就绪态,B错误;时钟中断是系统中特定的周期性时钟节拍,操作系统通过它来确定时间间隔,实现时间的延时和任务的超时,C正确;现代操作系统为了保证性能最优,通常根据响应时间、系统开销、进程数量、进程运行时间、进程切换开销等因素确定时间片大小,D正确。 - 【2012统考真题】若某单处理器多进程系统中有多个就绪态进程,则下列关于处理器调度的叙述中,错误的是()。
A、在进程结束时能进行处理机调度
B、创建新进程后能进行处理机调度
C、在进程处于临界区时不能进行处理机调度
D、在系统调用完成并返回用户态时能进行处理机调度
C
解析:A、B、D显然属于可以进行处理机调度的情况。当进程处于临界区时,说明进程正在占用处理机,只要不破坏临界资源的使用规则,就不会影响处理机的调度。比如,通常访问的临界资源可能是慢速的外设(如打印机),若在进程访问打印机时,不能进行处理机调度,则系统的性能将非常差。 - 【2011统考真题】下列选项中,满足短作业优先且不会发生饥饿现象的是()调度算法。
A、先来先服务
B、高响应比优先
C、时间片轮转
D、非抢占式短作业优先
B
解析:高响应比调度算法在等待时间相同的情况下,作业执行时间越短响应比越高,满足短任务优先,且不会产生饥饿现象。 - 【2014统考真题】下列调度算法中,不可能导致饥饿现象的是()。
A、时间片轮转
B、静态优先数调度
C、非抢占式短作业优先
D、抢占式短作业优先
A
解析:显然。
第16题表:
进程 | 等待时间 | 需要的CPU时间 | 优先权 |
---|---|---|---|
P1 | 30µs | 12µs | 10 |
P2 | 15µs | 24µs | 30 |
P3 | 18µs | 36µs | 20 |
- 【2018统考真题】某系统采用基于优先权的非抢占式进程调度策略,完成一次进程调度和进程切换的系 统时间开销为 1µs。在 T 时刻就绪队列中有 3 个进程 P1、P2和 P3,其在就绪队列中的等待时间、 需要的 CPU 时间和优先权如下表所示。若优先权值大的进程优先获得 CPU,从 T 时刻起系统开始进程调度,系统的平均周转时间为()。
A、54µs
B、73µs
C、74µs
D、75µs
D
解析:进程的执行顺序为P2→P3→P1。P2的周转时间为1+15+24=40μs;P3的周转时间为18+1+24+1+36=80μs;P1的周转时间为30+1+24+1+36+1+12=105μs;平均周转时间为(40+80+105)/3=225/3=75μs,因此选D。 - 【2019统考真题】系统采用二级反馈队列调度算法进行进程调度。就绪队列 Q1 采用时间片轮转调度算法, 时间片为 10ms;就绪队列 Q2 采用短进程优先调度算法;系统优先调度 Q1 队列中的进程,当 Q1 为空时系统才会调度 Q2 中的进程;新创建的进程首先进入 Q1;Q1中的进程执行一个时间片后,若未结束,则转入 Q2。若当前 Q1、Q2 为空,系统依次创建进程 P1、P2后即开始进程调度, P1、P2需要的 CPU 时间分别为 30ms 和 20ms,则进程 P1、P2在系统中的平均等待时间为()。
A、25ms
B、20ms
C、15ms
D、10ms
C
解析:进程P1,P2依次创建后进入队列Q1,根据时间片调度算法的规则,进程P1,P2将依次被分配10ms的CPU时间,两个进程分别执行完一个时间片后都会被转入队列Q2,就绪队列Q2采用短进程优先调度算法,此时P1还需要20ms的CPU时间,P2还需要10ms的CPU时间,所以P2会被优先调度执行,10ms后进程P2执行完成,之后P1再调度执行,再过20ms后P1也执行完成,平均等待时间=(P1等待时间+P2等待时间)/2=(20+10)/2=15,因此选C。 - 【2016统考真题】某进程调度程序采用基于优先数(priority)的调度策略,即选择优先数最小的进程运行,进程创建时由用户指定一个nice作为静态优先数。为了动态调整优先数,引入运行时间cpuTime和等待时间waitTime,初值均为0。进程处于执行态时,cpuTime定时加1,且waitTime置0;进程处于就绪态时,cpuTime置0,waitTime定时加1。请回答下列问题。
(1)若调度程序只将nice的值作为进程的优先数,即priority=nice,则可能会出现饥饿现象,为什么?
(2)使用nice、cpuTime和waitTime设计一种动态优先数计算方法,以避免产生饥饿现象,并说明waitTime的作用。
解答:
(1)由于采用了静态优先数,当就绪队列中总有优先数较小的进程时,优先数较大的进程一直没有机会运行,因而会出现饥饿现象。(2分)
(2)优先数priority的计算公式为:priority=nice+k1×cpuTime-k2×waitTime,其中k1>0,k2>0,用来分别调整cpuTime和waitTime在priority中所占的比例。(3分)waitTime可使长时间等待的进程优先数减少,从而避免出现饥饿现象。(1分)
【评分说明】
①公式中包含nice给1分,利用cpuTime增大优先数给1分,利用waitTime减少优先数给1分;部分正确,酌情给分。
②若考生给出包含nice、cpuTime和waitTime的其他合理的优先数计算方法,同样给分。
2.3 进程同步
- 在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,引入了进程同步的概念。例如,让系统计算1+2*3,假设系统产生两个进程:一个是加法进程,一个是乘法进程。要让计算结果是正确的,一定要让加法进程发生在乘法进程之后,但实际上操作系统具有异步性,若不加以制约,加法进程发生在乘法进程之前是绝对有可能的,因此要制定一定的机制去约束加法进程,让它在乘法进程完成之后才发生。
- 临界资源:一次仅允许一个进程使用的资源,如打印机等。
- 对临界资源的访问,必须互斥地进行,在每个过程中,访问临界资源的那段代码称为临界区。
- 临界资源的访问过程可分为4个部分:
(1)进入区。为了进入临界区使用临界资源,在进入区要检查可否进入临界区,若能进入临界区,则应设置正在访问临界区的标志,以阻止其他进程同时进入临界区。
(2)临界区。进程中访问临界资源的那段代码,又称临界段。
(3)退出区。将正在访问临界区的标志清除。
(4)剩余区。代码中的其余部分。
do {
entry section; //进入区
critical section; //临界区
exit section; //退出区
remainder section //剩余区
} while(true)
- 同步亦称直接制约关系,是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系源于它们之间的相互合作。
- 互斥也称间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一进程才允许去访问此临界资源。
- 为禁止两个进程同时进入临界区,同步机制应遵循以下准则:
(1)空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区。
(2)忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待。
(3)有限等待。对请求访问的进程,应保证能在有限时间内进入临界区。
(4)让权等待。当进程不能进入临界区时,应立即释放处理器,防止进程忙等待。 - 实现临界区互斥的基本方法
(1)软件实现方法。在进入区设置并检查一些标志来表明是否有进程在临界区中,若已有进程在临界区,则在进入区通过循环检查进行等待,进程离开临界区后则在退出区修改标志。
算法实现:Peterson’s Algorithm 为了防止两个进程为进入临界区而无限期等待,设置了变量turn,每个进程在设置自己的标志后再设置turn标志。这时,再同时检测另一个进程状态标志和不允许进入标志,以便保证两个进程同时要求进入临界区时,只允许一个进程进入临界区。
(2)硬件实现方法。
①中断屏蔽方法。当一个进程正在使用处理机执行它的临界区代码时,防止其他进程进入其临界区进行访问的最简方法是,禁止一切中断发生,或称之为屏蔽中断、关中断。其典型模式为
…
关中断;
临界区;
开中断;
…
这种方法限制了处理机交替执行程序的能力,因此执行的效率会明显降低。
②硬件指令方法
TestAndSet指令:这条指令是原子操作,即执行该代码时不允许被中断。其功能是读出指定标志后把该标志设置为真。
可以为每个临界资源设置一个共享布尔变量lock,表示资源的两种状态:true表示正被占用,初值为false。在进程访问临界资源之前,利用TestAndSet检查和修改标志lock;若有进程在临界区,则重复检查,直到进程退出。指令的功能描述和利用该指令实现进程互斥的算法描述如下:
while TestAndSet(boolean *lock) {
boolean old;
old=*lock;
*lock=true;
return old;
}
while TestAndSet(&lock);
进程的临界区代码段;
lock=false;
进程的其他代码;
- Swap指令:该指令的功能是交换两个字(字节)的内容。其功能描述如下:
Swap(boolean *a, boolean *b) {
boolean temp;
Temp=*a;
*a=*b;
*b=temp;
}
- TestAndSet和Swap指令是由硬件直接实现的,而并非软件实现的定义,不会被中断。
2.3 练习题
- 【2010统考真题】设与某资源相关联的信号量初值为3,当前值为1,若M表示该资源的可用个数,N表示等待资源的进程数,则M,N分别是() 。
A、0,1
B、1,0
C、1,2
D、2,0 - 【2016统考真题】下列关于管程的叙述中,错误的是()。
A、管程只能用于进程的互斥
B、管程是由编程语言支持的进程同步机制
C、任何时候只能有一个进程在管程中执行
D、管程中定义的变量只能被管程内的过程访问
第3题代码:
//进程P1
int x=0;
Thread1()
{
int a;
a=1;
x+=1;
}
Thread2()
{
int a;
a=2;
x+=2;
}
//进程P2
int x=0;
Thread3()
{
int a;
a=x;
x+=3;
}
Thread4()
{
int b;
b=x;
x+=4;
}
- 【2016统考真题】进程P1和P2均包含并发执行的线程,部分伪代码描述如下所示。下列选项中,需要互斥执行的操作是()。
A、a =1与a = 2
B、a = x与b = x
C、x += 1与x += 2
D、x += 1与x += 3
2.4 死锁
2.4 练习题
最后一次更新时间:2021/01/15 20:14