# 操作系统~Fuak
# 简答题
# 第 1 章 计算机系统概述
不考,第一章为概述。
# 第 2 章 操作系统概述
# 【2023】1. 操作系统的概念、和一般应用程序的区别
概念:操作系统是控制应用程序执行的程序,是应用程序和计算机硬件之间的接口。
关系:操作系统和⼀般应⽤程序的关系是,操作系统是应⽤程序的基础和⽀撑,应⽤程序需要操作系统提供的各种服务和资源才能正常运⾏。
异同:
功能不同:操作系统是⼀个底层软件,负责计算机系统的底层管理和控制,⽽应⽤程序是具体的业务逻辑实现,是在操作系统的基础上开发的。
运⾏环境不同:操作系统是计算机系统中的核⼼软件,是最先启动的程序,它的运⾏环境是最基础的,⽽应⽤程序则是在操作系统之上运⾏的,需要操作系统提供的各种服务和资源。
权限不同:操作系统是具有最⾼权限的程序,可以控制计算机的所有资源和服务,⽽应⽤程序只能在操作系统的控制下运⾏,受到操作系统的权限控制和限制。
# 2. 操作系统的功能、⽬标(2.1 章的标题)
目标 -> 功能
方便(操作系统使计算机更易于使用)→作为用户 / 计算机接口;
有效(已更有效的方式使用计算机资源)→作为资源管理器;
扩展能力(在不妨碍服务的前提下,有效地开发、测试和引入新的系统功能)→操作系统的易扩展性
# 3. 操作系统的构成模块(书上图:第 0 章, 4 个模块)
构成模块包括进程调度、存储管理、文件系统、I/O 设备管理。
功能主要有 I/O 设备访问,程序的开发和运行,错误检测和相应等。
# 4. 操作系统的历史发展(没有,批处理,分时,实时)
三条主线 P34:多道程序批处理操作、分时和实时事务系统。
串⾏处理:没有操作系统。
批处理:多道程序设计是为了让处理器和 I/O 设备 (包括存储设备) 同时保持忙状态,以实现最⼤的效率。其关键机制是:在响应表示 I/0 事务结束的信号时,操作系统将对内存中驻留的不同程序进⾏处理器切换。
分时:由操作系统控制每个⽤户程序在很短的时间内交替执⾏,主要设计⽬标是能及时响应单个⽤户的要求。
实时:它可以对任务的响应时间和执⾏时间进⾏严格控制,保证系统的可靠性和实时性。
# 5. 分时系统和批处理系统的概念、产⽣背景、异同(批处理没有中断,交互)
分时:由操作系统控制每个⽤户程序在很短的时间内交替执⾏。
批处理:让处理器和 I/O 设备 (包括存储设备) 同时保持忙状态,以实现最⼤的效率。
# 6. 中断和异常在批处理系统和分时系统中的作用(考研题)
中断和异常自己的作用:【执行流程控制】【保护资源】【多任务调度】
执⾏流程控制:中断和异常可以打断 CPU 的正常执⾏流程,转⽽执⾏相应的中断处理程序或异常处理程序。这样可以在必要的时候,及时处理⼀些重要事件,如硬件故障、时钟中断、IO 中断等。
资源保护:中断和异常可以⽤于保护系统资源,如内存、 IO 端⼝等。当应⽤程序试图访问受保护的资源时,操作系统会发⽣异常,并执⾏相应的异常处理程序,以防⽌应⽤程序对系统资源的⾮法访问和破坏。
多任务调度:当⼀个任务执⾏时,如果发⽣了中断或异常,操作系统可以及时地切换到其他任务,从⽽实现多任务并发执⾏。
在批系统和分时系统中:
# 7. 请解释为什么说操作系统是虚拟机(考研)
(从 cpu ⻆度回答,所谓虚拟,就是⼀个 cpu,实现了多个 cpu 的感觉,⼆级存储模拟以及存储,虚拟就是延展了硬件)
从 CPU 的⻆度来看,它通过⼀定的软件技术,将计算机硬件资源(如 CPU、 RAM、硬盘等)虚拟化,为应⽤程序提供了⼀个看似完整的计算机环境。
CPU 虚拟化:操作系统通过 CPU 调度算法,将 CPU 时间⽚分配给多个应⽤程序,让它们在同⼀时刻似乎同时运⾏。
存储器虚拟化:操作系统通过内存管理机制,为每个应⽤程序分配虚拟地址空间,让应⽤程序感觉⾃⼰独占整个内存。实际上,操作系统在后台将虚拟地址映射到物理内存上,从⽽实现对
内存资源的虚拟化。
⼆级存储虚拟化:操作系统通过⽂件系统,为应⽤程序提供了⼀个统⼀的、抽象的⽂件访问接⼝,将多种不同的物理存储设备抽象为⼀个统⼀的⽂件系统,从⽽实现对存储资源的虚拟化
# 【New】7.Linux 综述(描述)
从以下几个角度回答:
类 UnixOS,遵循 POSIX 标准
1. 开源、多任务多用户、软件完善、发行版本
2. 进程调度(多种调度策略)、内存管理(虚拟存储、动态内存管理)、文件系统(分层)这些角度。
# 第 3 章 进程描述与控制
# 【Old】
# 【2022】1. 什么叫进程,进程和线程的区别
进程(Process)是计算机中正在运⾏的程序的实例,它是操作系统中最基本的资源分配单位。
线程是进程中的⼀个更⼩的单位, ⼀个进程可以包含多个线程,每个线程都可以独⽴地执⾏不同的任务。
进程和线程的区别如下:
资源分配⽅式不同:进程是操作系统进⾏资源分配和调度的基本单位,每个进程都有⾃⼰的内存空间和系统资源;⽽线程则是在进程内部的⼀种执⾏单元,多个线程共享同⼀进程的内存空间和系统资源。
执⾏⽅式不同:进程是独⽴的执⾏流,每个进程有⾃⼰的程序计数器和执⾏栈,能够独⽴地执⾏⼀段代码;⽽线程是进程中的⼀个执⾏单元,多个线程共享同⼀程序计数器和执⾏栈,能够并发地执⾏多个任务。
创建和销毁的开销不同:由于进程是操作系统进⾏资源分配和调度的基本单位,所以创建和销毁进程的开销相对较⼤;⽽线程是进程内部的⼀种执⾏单元,创建和销毁线程的开销相对较⼩。
# 2. 操作系统为了实现进程概念需要 cpu 提供哪些⽀持(考研)
【Mode way:用户态、内核态】【中断和异常处理】【时间片轮转调度】
为了实现进程概念, CPU 需要提供以下⽀持:
- 模式切换:为了保护操作系统的关键资源, CPU 需要提供⾄少两种运⾏模式,即⽤户态和内核态。在⽤户态下,应⽤程序只能访问⾃⼰的资源,⽽⽆法访问系统资源;在内核态下,操作系统可以访问和控制所有系统资源。操作系统需要通过中断或异常等⽅式,从⽤户态切换到内核态,以便于访问和控制系统资源。
- 中断和异常处理: CPU 需要提供中断和异常处理机制,以便于操作系统能够响应外部事件和处理程序的异常情况。在中断或异常处理过程中, CPU 会暂停当前任务的执⾏,转⽽执⾏相应的处理程序,处理完毕后再返回原来的任务。
- 时间⽚轮转调度:操作系统需要按照⼀定的策略,将 CPU 时间⽚分配给不同的进程,以实现多任务并发执⾏。
# 3. 什么是进程控制块(PCB),作⽤,含有哪些内容,列举三个
【进程标识信息】【处理器状态】【进程控制信息】
概念:由操作系统创建和管理,存放了进程执行的当前时刻,可以用来表征进程的所有列表信息的一个数据结构,是操作系统支持多进程,多重处理的关键工具
功能:进程控制块包含了充分的信息(程序计数器和处理器寄存器),可以在中断一个进程之后重新执行,就像没有被中断过那样
构成:进程标识信息:数字标识符(进程标识符,父进程标识符,用户标识符);处理器状态信息:用户可见寄存器,状态和控制寄存器,栈指针;进程控制信息:调度和状态信息,数据结构,进程间通信,进程特权,存储管理,资源所有权和使用情况
# 4. 画图描述程序从编译、到链接、执⾏(考研)
1)程序首先通过编译变成计算机可识别的可执行文件,放入内存;
2)操作系统为待执行的程序创建进程和或任务,处理器以某种顺序(程序计数器给出)执行指令序列中的指令,即进程由程序和程序执行的当前状态组成;
3)当父进程终止的时候,相关的所有子进程都终止,这个程序对应的进程结束
# 6. 列举进程控制相关的系统调⽤(书上,信号量)(考研)
fork ():⽤于创建⼀个新的进程,新进程是原进程的⼀个副本,但有不同的进程 ID。
exec ():⽤于在当前进程中执⾏⼀个新的程序,替换当前进程的代码和数据,但进程 ID 不变。
wait ():⽤于等待⼦进程结束并获取⼦进程的退出状态。
exit ():⽤于结束当前进程的执⾏,并向⽗进程返回⼀个退出状态。
getpid ():⽤于获取当前进程的进程 ID。
kill ():⽤于向指定进程发送信号,可以⽤来终⽌进程、修改进程的⾏为等。
# 7. 进程的五状态图(画图或描述)
运行态,就绪态,阻塞态(前三个是基本状态),新建态(新的批处理作业,交互登陆,为提供服务由操作系统创建进程,子进程),退出态(很多原因)
# 【2023】8. 从三个⻆度(cpu, 进程,操作系统)的描述进程轮换执⾏
进程轮换执⾏是操作系统中常⽤的⼀种进程调度算法,它通过为每个进程分配⼀定的时间⽚,让多个进程轮流使⽤ CPU,以实现多道程序的并发执⾏。
1.CPU ⻆度: CPU 按照⼀定的时间⽚为每个进程的指令执行分配时间,一个指令周期内完成取指译码执行的操作,当⼀个进程的时间⽚⽤完后, CPU 会切换到下⼀个进程,继续执⾏。
2. 进程⻆度:每个进程会不被打断的执行完当前时间片所允许的指令集合,这是基于逻辑控制流。
3. 操作系统⻆度:操作系统负责管理进程的状态和调度。当⼀个进程需要执⾏时,操作系统会将它从就绪队列中取出,并分配⼀定的 CPU 时间。当进程的时间⽚⽤完后,将进程放回就绪队列中,等待下⼀次执⾏,这就是交在物理控制流上的替执行。
# 9. 进程创建的流程(考研)
为新进程分配⼀个唯⼀的进程标识符
为进程分配空间。
初始化进程控制块
设置正确的链接
创建或扩充其他数据结构
# 10. 进程切换的时机并结合系统调⽤举例说明(考研, linuxfork,⼀次调⽤,两次返回)
进程切换的时机是由操作系统的进程调度算法决定的,通常发⽣在以下⼏种情况下:
进程时间⽚⽤完:操作系统通过时间⽚轮转算法为每个进程分配⼀定的时间⽚。当⼀个进程的时间⽚⽤完后,操作系统会切换到下⼀个进程。
⾼优先级进程就绪:当⼀个⾼优先级进程进⼊就绪队列时,操作系统会⽴即切换到该进程,以提⾼系统的响应性。
等待 I/O 操作完成:当⼀个进程需要等待 I/O 操作完成时,操作系统会将该进程阻塞,并将 CPU 资源分配给其他进程。当 I/O 操作完成后,操作系统会将该进程唤醒,并切换到该进程继续执⾏。
下⾯结合系统调⽤ fork () 的例⼦来说明进程切换的时机:
⽗进程调⽤ fork ():⽗进程通过调⽤ fork () 系统调⽤创建⼀个新的⼦进程。在调⽤ fork () 时,操作系统会为⼦进程创建⼀个进程描述符,并分配新的资源。
进程切换:在创建⼦进程时,操作系统会进⾏进程切换。具体来说,操作系统会将⽗进程的进程上下⽂保存到内存中,并加载⼦进程的进程上下⽂到 CPU 寄存器中。
⼦进程调⽤返回:在⼦进程创建成功后,操作系统会将⼦进程的进程 ID 返回给⽗进程。此时,⼦进程开始执⾏,并从 fork () 系统调⽤返回。
⽗进程调⽤返回:在⽗进程中, fork () 系统调⽤也会返回,但它返回的值是⼦进程的进程 ID。此时,⽗进程继续执⾏,并可以根据返回的⼦进程 ID 对⼦进程进⾏控制和通信。
1
2
3
4
5父进程:返回子进程PID
子进程:返回0
失败返回-1
# 【New】
# 1. 进程的概念,进程与应用程序关系
参考:线程和进程、程序、应用程序之间的关系 - 言止予思 - 博客园 (cnblogs.com)
1 | process = program + data + context |
进程(Process)是计算机中正在运⾏的程序的实例,它是操作系统中最基本的资源分配单位。
一个程序 (program) 就是一个正在执行的进程,而每个进程,可以是单线程的,也可以是多线程的。一个应用程序(application)通常由多个程序组成。
进程与程序的区别:
程序是静态的,进程是动态的,程序是存储在某种介质上的二进制代码,进程对应了程序的执行过程,系统不需要为一个不执行的程序创建进程,一旦进程被创建,就处于不断变化的动态过程中,对应了一个不断变化的上下文环境。
程序是永久的,进程是暂时存在的。程序的永久性是相对于进程而言的,只要不去删除它,它可以永久的存储在介质当中。
进程与程序的联系:
进程是程序的一次执行,而进程总是对应至少一个特定的程序。一个程序可以对应多个进程,同一个程序可以在不同的数据集合上运行,因而构成若干个不同的进程。几个进程能并发地执行相同的程序代码,而同一个进程能顺序地执行几个程序。
# 第 4 章 线程
1. 线程概念,与进程关系
2. 线程的实现方法
3.ult 与 klt 优缺点
# 【2022】1. 什么是线程,线程产⽣的背景,和进程的异同
线程是进程中的⼀个更⼩的单位, ⼀个进程可以包含多个线程,每个线程都可以独⽴地执⾏不同的任务。 其产⽣的背景是计算机系统的多任务处理需求。
进程和线程的区别如下:
资源分配⽅式不同:进程是操作系统进⾏资源分配和调度的基本单位,每个进程都有⾃⼰的内存空间和系统资源;⽽线程则是在进程内部的⼀种执⾏单元,多个线程共享同⼀进程的内存空间和系统资源。
执⾏⽅式不同:进程是独⽴的执⾏流,每个进程有⾃⼰的程序计数器和执⾏栈,能够独⽴地执⾏⼀段代码;⽽线程是进程中的⼀个执⾏单元,多个线程共享同⼀程序计数器和执⾏栈,能够并发地执⾏多个任务。
创建和销毁的开销不同:由于进程是操作系统进⾏资源分配和调度的基本单位,所以创建和销毁进程的开销相对较⼤;⽽线程是进程内部的⼀种执⾏单元,创建和销毁线程的开销相对较⼩。
# 2. 线程的实现⽅法(三种: ULT、 KLT、⼆者结合)
线程的实现⽅法主要有三种:** ⽤户级线程(ULT)、内核级线程(KLT)** 和⽤户级线程和内核级线程的混合实现。
⽤户级线程(ULT):⽤户级线程是完全由⽤户程序实现和管理的线程,操作系统并不知道其存在。⽤户程序通过使⽤线程库来实现线程的创建、销毁、调度和同步等操作。
内核级线程(KLT):内核级线程是由操作系统内核实现和管理的线程,内核可以直接将多个线程映射到多个 CPU 上执⾏,可以充分利⽤多处理器的优势。
⽤户级线程和内核级线程的混合实现:这种实现⽅法结合了⽤户级线程和内核级线程的优点,使⽤⽤户级线程实现线程的创建、销毁、调度和同步等操作,但是在需要进⾏阻塞和等待时,将线程切换到内核级线程执⾏。
# 3.ULT、 KLT 优缺点对⽐
ULT 的优点:
节省了用户态到内核态的两次转换;根据应用程序需求定制调度算法,不扰乱底层的操作系统调度程序;可以在任何操作系统中运行
缺点:
执行系统调用的时候会阻塞进程中的所有线程;不能利用多处理技术,内核一次只给一个进程分配一个处理器
KLT 的优点:
稳定性:内核级线程由操作系统内核实现和管理,具有较⾼的稳定性和可靠性。
可以充分利⽤多处理器:内核可以直接将多个线程映射到多个 CPU 上执⾏,可以充分利⽤多处理器的优势。
可以进⾏阻塞等待:内核可以直接管理线程的同步和通信,可以进⾏阻塞等待,不会影响程序的性能。
KLT 的缺点:
开销较⼤:线程的创建、销毁、调度和同步等操作需要经过内核的介⼊,会增加系统调⽤和上下⽂切换的开销。
可移植性不强:不同的操作系统实现内核级线程的⽅式不同,因此内核级线程的可移植性较差。
补充:派生、阻塞、解除阻塞、结束
# 第 5 章 并发
# 1. 并发需要解决的四个问题(同步互斥饥饿死锁)
同步:是指散步在不同任务之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。只有当一个进程发送消息后,接受者才能收到消息,需要确定 send 和 receive 原语之后会发生什么,同步是互斥的前提。
(三种分类①阻塞 s,阻塞 r,要求双方紧密同步②不阻塞 s,阻塞 r,最自然,s 出错可能会不断发送消息消耗系统资源,s 重发可能导致消息丢失③无阻塞 s,无阻塞 r)
需要同步来解决并发带来的异步问题,进程之前的先后顺序
互斥:当一个进程在临界区访问资源时,其他进程不能进入该临界区。
互斥的要求:忙则等待,有限等待,有空让进,让权等待
死锁:每个进程都在等待其他进程完成事件,大家都不能继续执行。
①产生的必要条件:互斥条件,占有和等待条件,不剥夺条件,循环等待条件。
②产生因素:系统拥有的资源数量有限,分配策略有缺陷,进程需要多个资源,并发进程对不同资源的优先顺序不同。
③死锁防止:通过破坏条件来实现
④死锁避免:在进程提出资源申请时,实现分析是否会发生死锁,不会发生则分配,否则拒绝分配(银行家算法)
⑤死锁预防
饥饿:进程被调度程序无限忽视,等价于不能调度执行。没有必要的产生条件。活锁:忙时等待时发生的饥饿
# 2. 操作系统为什么引⼊同步互斥的机制
操作系统引⼊同步互斥机制的主要⽬的是为了避免多个进程或线程同时访问共享资源⽽导致的数据竞争和错误,⽤于协调多个进程或线程之间的访问共享资源。同步互斥机制的主要⽬标是:
确保共享资源的原⼦性:同步互斥机制可以保证多个进程或线程访问共享资源时的原⼦性,避免数据的不⼀致性。
避免竞争条件问题:同步互斥机制可以协调多个进程或线程之间的访问顺序,避免竞争条件问题。
避免死锁问题:同步互斥机制可以协调多个进程或线程之间的资源访问顺序,避免死锁问题的发⽣。
# 3. 竞争条件的含义和举例
(期末考试给代码描述,考研⾃⼰写代码)
竞争条件是指在多线程或多进程环境中,多个线程同时访问共享资源,并且至少有一个进程在写入该资源时,系统的最终结果取决于进程执行的顺序,这种顺序是不可预测的。
例如,两个进程 A 和 B 同时对⼀个变量进⾏操作,由于操作的顺序不确定,可能会出现以下两种情况:
A 先执⾏ + 1 操作,然后 B 执⾏ ×2 操作。
B 先执⾏ ×2 操作,然后 A 执⾏ + 1 操作。
这种情况下,最终的结果是不确定的,取决于进程执⾏的顺序,这就是条件竞争。
# 4. 为解决同步和互斥的⼿段(三⼤类,软件,硬件,管程)
操作系统(8)进程 -- 同步互斥介绍;同步问题的三种解决方案:禁用硬件中断、基于软件、更高级抽象_进程互斥 禁止中断 - CSDN 博客
软件:通过共享一些共有变量来实现线程的同步。该方法的特征一是复杂(需要两个进程间的共享数据项),二是需要忙等待,浪费 CPU 时间。
硬件:常⻅的硬件⼿段包括原⼦操作、测试与设置指令、中断禁用等。
1)原⼦操作:原⼦操作是指可以在⼀条指令周期内完成的操作,不会被其他进程或线程中断。常⻅的原⼦操作有⽐较和交换操作(CAS)
2)测试与设置指令:测试与设置指令是⼀种⽤于保护共享资源的硬件指令,可以在⼀个操作中进⾏测试和设置。
3)中断禁用:中断是指由硬件或操作系统触发的⼀种特殊事件,保证一个进程不被中断实现互斥。
操作系统或编译器方法:由操作系统或编译器提供工具或方法实现,主要有三种:信号量,管程和消息。
1)管程:将共享资源及其操作封装在一起,通过条件变量来控制对资源的访问,从而确保线程安全。
2)信号量:如下
3)消息传递:进程交互式,必须满足两个基本要求:同步和通信。为实施互斥,进程间需要同步;为了合作,进程间需要交换信息。之前介绍的两种机制(信号量以及管程)可以在单处理器系统以及多处理器系统中实现,但是对于分布式系统而言,没有办法提供支持。此外,管程对编译器有依赖,而很多编程语言的编译器并没有提供对管程的支持(比如 gcc)。
# 5. 使⽤硬件解决互斥的优缺点(两类硬件:关中断,特殊指令)
使⽤硬件解决互斥问题的主要优点是速度快、效率⾼、可靠性⾼。硬件解决互斥问题的⽅式主要包括两类:关中断和特殊指令。
1. 关中断:使⽤关中断的⽅式来解决互斥问题,即在访问共享数据之前,禁⽌中断,以确保当前进程或线程能够独占 CPU,保证数据的⼀致性。
这种⽅式的优点是实现简单,原理清晰,适⽤于单 CPU 系统。
缺点:会导致系统的其它硬件设备⽆法正常⼯作,可能会导致系统出现⼀些不可预期的问题,例如⽹络通信中断等。关中断的时间过⻓可能会导致系统响应变慢,因为在关中断期间,系统⽆法处理任何中断请求。
2. 特殊指令:使⽤特殊指令来解决互斥问题,即通过硬件提供的原⼦操作指令完成对共享资源的原⼦操作。
这种⽅式的优点是实现简单,效率⾼,适⽤于多 CPU 系统和需要实时响应的系统。
缺点:实现复杂,需要额外的硬件⽀持。可能会影响系统的性能,因为加锁和解锁操作可能会涉及到处理器缓存的同步操作,这可能会降低缓存的效率。
# 6. 信号量的本质概念及其应⽤(基本不考,因为⼤题有)
信号量是⼀种⽤于进程间同步和互斥的机制,它是由操作系统提供的⼀种原语,通常由⼀个整型变量和⼀组操作组成。信号量的主要作⽤是控制进程对共享资源的访问,从⽽避免出现互斥和死锁等问题。
# 7. 什么是管程,引⼊管程的原因
管程是⼀种同步机制,是⼀个包含了⼀组共享数据以及对这些数据进⾏操作的程序集合,同时还有⼀些⽤于同步的⼯具,如条件变量和互斥锁。
引⼊管程的原因是为了解决多进程或多线程之间的同步和互斥问题。
在传统的同步和互斥机制(如信号量和互斥锁)中,程序员需要⼿动控制互斥锁和条件变量的使⽤,容易出现错误,导致程序出现死锁和竞争条件等问题。
⽽管程将共享数据和操作这些数据的程序封装在⼀个单元中,提供了⼀组简单⽽有效的同步和互斥机制。
# 【New】
# 1. 进程间的关系,引发原因与举例
对上述表格中不同关系存在的控制问题做一个详细补充:
- 进程之间相互不知道对方的存在:
- 互斥:虽然进程互不知道,但是由于在同一个计算机系统中,对于临界资源需要互斥访问;
- 死锁:互斥的进程相互竞争资源,导致所需的资源无法有效释放;
- 饥饿:进程具备执行条件,但是由于得不到资源无法执行(低优先级的进程在执行时,前面老有高优先级的进程。)
- 进程间接知道对方的存在:
- 因为进程间存在共享资源的关系,所以 “互不知道关系” 的三个问题它都具有;
- 同时它还多了一个数据的不一致性问题(条件竞争)
- 进程直接知道对方的存在:
- 死锁:错误的同步,导致两个进程同时等待对方发消息;
- 饥饿:多个并发执行的进程,某一个进程始终没有得到让他启动的消息。
# 2. 信号量和管程变量的异同
信号量(Semaphore)的特点:
- 简单性:信号量是一种相对简单的同步机制,通常用于控制对共享资源的访问。
- 两种类型:信号量分为二值信号量(Binary Semaphore)和计数信号量(Counting Semaphore)。二值信号量只有 0 和 1 两个值,用于互斥;计数信号量可以有多个许可,用于控制多个线程访问资源。
- P/V 操作:信号量通过 P(Proberen,荷兰语,意为 “测试”)和 V(Verhogen,荷兰语,意为 “增加”)操作来控制线程的等待和唤醒。P 操作在信号量的值减 1 时可能使线程等待,V 操作则增加信号量的值并可能唤醒等待的线程。
- 独立性:信号量本身不包含执行代码,它仅用于同步。
管程(Monitor)的特点:
- 封装性:管程是一种高级的同步机制,它将共享资源和对这些资源的操作封装在一起,以实现互斥访问。
- 条件变量:管程通常包含条件变量,允许线程在某些条件不满足时挂起,并在条件满足时被唤醒。
- 互斥锁:管程内部通常有一个互斥锁,确保在任何时刻只有一个线程可以执行管程中的代码。
- 方法和条件:管程可以包含多个方法和条件,这些方法和条件可以用于实现更复杂的同步逻辑。
异同点:
- 封装性:管程提供了更好的封装性,将数据和操作封装在一起,而信号量通常不包含操作代码。
- 复杂性:管程通常比信号量更复杂,但提供了更丰富的同步机制,如条件变量。
- 使用场景:信号量适用于简单的同步问题,如限制对资源的访问数量;管程适用于需要复杂同步逻辑的场景。
- 编程语言支持:某些编程语言可能原生支持管程,而信号量可能需要程序员手动实现。
# 3.My 补充 同步问题
临界区访问规则空闲则入
:没有进程在临界区,则任何进程可以进入忙则等待
:有进程在临界区,其他进程均不能进入临界区有限等待
:等待进入临界区的进程不能无限制等待让权等待
(可选):不能进入临界区的进程,应释放 CPU (比如转换到阻塞状态)
# 第 6 章 死锁和饥饿
# 1. 什么是死锁,其产⽣背景(考研,⼗字路⼝堵⻋问题)
死锁是指多个进程或线程由于相互竞争系统资源⽽陷⼊⼀种⽆法继续执⾏的状态。在死锁状态下,每个进程或线程都在等待其他进程或线程释放资源,⽽⽆法继续执⾏。死锁产⽣的背景主要是由于多个进程或线程同时使⽤系统资源,这些资源可能是共享资源或独占资源。当多个进程或线程同时请求同⼀组资源时,如果这些资源被占⽤,就会产⽣竞争,可能导致死锁。
# 2. 死锁的条件(充分、充要)
1. 互斥:⼀次只有⼀个进程可以使⽤⼀个资源,其他进程不能访问(必要条件)
2. 占有且等待:当⼀个进程等待其他进程时继续占有已分配的资源(必要条件)
3,不可抢占:不能抢占进程已占有的资源(必要条件)
4,循环等待(充要条件, 1.2.3 可以导致 4, 1+2+3 也是死锁的充要条件)
# 3. 死锁的解决⽅法(预防避免、检测解除,⼀共四种,算上综合⽅法有 5 个)
针对死锁的解决⽅法主要有四种:预防、避免、检测和解除。其中预防和避免是在系统设计和资源分配时就采取措施,⽽检测和解除是在死锁发⽣后进⾏处理。
死锁预防:间接预防前三个,或者直接预防循环等待
死锁避免:允许前三个条件,但避免到达死锁点
①进程启动拒绝:若一个进程的请求会导致死锁,则不启动该进程
②资源分配拒绝:若一个进程增加的资源请求会导致死锁,则不允许这一资源的分配
死锁检测:不限制资源访问或约束进程的行为,操作系统周期性地执行一个算法来检测前面的条件。死锁检测算法→恢复
一种综合的死锁策略:把资源分类,在每个类中使用最适合这类资源的算法,类之间使用现行排序算法。可交换空间→一次性分配所有请求的资源;进程资源→死锁避免;内存→基于抢占的预防;内部资源→基于资源排序的预防
【其他补充】
# 4. 资源分类
可重用资源:一次仅供给一个进程安全使用,且不会因为使用而耗尽的资源(处理器,io 通道,内存和外存)
可消耗资源:可被创建和销毁的资源,数量通常没有限制(中断、信号、消息、缓冲区)
# 第 7 章 内存管理
# 1. 7 种存储管理方法
# 2. 固定分区、分页,动态分区、分段之间的异同
固定分区 vs 分页
不同:固定分区中内存被划分为许多静态分区;简单分页中内存被划分为许多大小相等的页框
相同:分区大小相等;都会产生内部碎片;实现简单
动态分区 vs 分段
不同:动态分区是进程间的,是连续分配;简单分段是进程内的,是不连续分配
相同:分区不相等;都会产生外部碎片;实现复杂
- 固定 vs 动态
# 【非标】3. 内存管理的需求
对内存管理提出了五点需求:
1. 重定位(Relocation)
- 处理器硬件和操作系统软件必须能够通过某种方式把程序代码中的内存访问转换成实际的物理内存地址,并反映程序在内存中的当前位置。
2. 保护(Protection)
- 进程不应该在未经允许的情况下引用另一进程中的内存位置(进行读操作或写操作)
3. 共享(Sharing)
- 允许多个进程访问内存的同一部分。
4. 逻辑组织(Logical Organization)
可以引入某种机制,使得模块可以被多个进程共享。
模块级提供共享的优点是:它符合用户看待问题的方式,因此用户可很容易地指定需要的共享。
5. 物理组织(Physical Organization)
计算机存储器至少要组织成两级,即内存和外存。
# 第 8 章 虚拟内存
# 1. 什么是虚拟存储器?虚拟存储器需要考虑的 3 个问题
虚拟存储器是⼀种将较大的逻辑地址空间映射到较小的物理地址空间的技术,它可以增加系统的可用内存空间,提高内存的利用率。
内存管理的问题:是否使用虚存技术;是使用分页还是使用分段,或同时使用二者;为各种存储管理特征选择的算法
虚拟存储器需要考虑的三个问题:
- 内存空间不足问题:虚拟存储器可以将未被使用的数据和程序存放在磁盘上,从而释放内存空间,以满足正在运行的程序的内存需求。
- 地址映射问题:虚拟存储器需要解决虚拟地址到物理地址的映射问题。当程序需要访问某个虚拟地址时,虚拟存储器需要将该虚拟地址映射到物理地址上。
- 页面置换问题:当物理内存空间不足时,虚拟存储器需要将⼀部分暂时不需要的页面置换到磁盘上,以便为新的页面腾出空间。虚拟存储器需要设计合理的页面置换算法,以提高系统性能和效率。
# 2. 虚拟存储器处理 Page Fault 的流程
Page Fault 是指当 cpu 执行进程的某个页面时,发现他要访问的页 (虚拟地址的页) 没有在物理内存中,而导致的中断(页错误)。
处理 Page Fault 异常的⼀般流程如下:
中断处理程序:处理器自动保存当前进程的上下文信息,跳转到操作系统内核中的中断处理程序。
异常处理程序:操作系统内核中的异常处理程序会检查 Page Fault 的原因,并尝试解决这个问题。⼀般情况下,Page Fault 的解决方案包括:
1. 判断是否是访问了非法地址,如果是,则杀死进程。
2. 判断是否是访问了合法但未被分配的地址,如果是,则分配⼀个新的物理页面,并将磁盘中对应的页面读入到该物理页面中。
3. 判断是否是访问了已经被分配但未在内存中的地址,如果是,则将磁盘中对应的页面读入到空闲的物理页面中,并更新页表中的映射关系。
4. 判断是否是访问了已经被分配且在内存中的地址,但该页面被标记为 **“脏页”**,即该页面被修改过但还没有写回到磁盘中。如果是,则需要先将该页面写回到磁盘中,然后再将磁盘中对应的页面读入到空闲的物理页面中,并更新页表中的映射关系。恢复现场:当 Page Fault 异常处理程序完成后,将 cpu 控制权返还给进程,处理器会恢复之前保存的上下文信息,并重新执行之前的指令。
# 3. 置换策略
- 最佳(OPT)
OPT 策略选择置换下次访问距当前时间最长的那些页。
这种算法导致的缺页中断最少。
但是要求操作系统需要预测未来访问
- 最近最少使用(LRU)
LRU 策略选择置换内存中最长时间未被引用的页。
如何理解 “最近最少使用”:即在短时间的未来最少被进程访问的页。
同样根据局部性原理,在内存中最长时间未被引用的页,也是短时间内未来最不可能访问到的页。
实现方法是:
- 给每页添加一个最后一次访问的时间戳,并在每次访问内存时更新这个时间戳。
- 这种方案需要硬件的支持,会造成大量的开销
- 维护一个关于访问页的栈
- 依然会造成大量的开销
- 先进先出(FIFO)
将分配给进程的一个页框视为一个循环缓冲区,以顺次循环的方式替换页。
- 只需要一个指针,该指针在进程的页框中循环
- 这是最简单的一种算法
- 该方法会将驻留在内存中最久的页替换出去,但是有可能该页会在未来的不久被访问到
时钟(Clock)
给每一个页框关联一个称为
使用位
的附加位,整个缓冲区(也是循环的)有一个指针。当一个页首次加入时,使用位置为 1,访问后也置为 1;当一个页面被置换时,指针指向缓冲区下一个页框,当发生置换时,指针扫描,遇到 1 则置为 0,遇到第一个 0 就置换这个块,并指向下一个。
# 4. 缺页率与页尺寸和页框数的关系!!
- 页尺寸:如图 (a) 所示,若页尺寸非常小,则每个进程在内存中就有较多数量的页。⼀段时间后,内存中的页都包含有最近访问的部分,因此缺页率较低。当页尺寸增加时,每页包含的单元和任何⼀个最近访问过的单元越来越远。因此局部性原理的影响被削弱,缺页率开始增长。但是,当页尺寸接近整个进程的大小时 (图中的 P 点),缺页率开始下降。当一页包含整个进程时,不会发生缺页中断。
- 页框数:如图 (b) 所示,对固定的页尺寸,当内存中的页数量增加时,缺页率会下降,直到页框数增加到极值点 N 时,缺页率为 0。
【补充】
# 5. 图 8.4 的两级地址转换
对于 32 位系统,前 10 位查大目录,中间 10 位查小目录,最后作为偏移。
# 第 9 章 单处理器调度
# 1. 3 种调度的概念、特点及功能
调度用于管理和分配计算机资源,以便有效地执行各种任务和进程,有三种分类:
- 长程调度:也称为作业调度,是指将新进⼊系统的作业(进程)从外存中调入待执行进程池,并为之分配资源,以便进程可以运行。
- 中程调度:也称为内存调度,是指在内存中调度正在运行的进程,将⼀些进程加入就绪队列,并将其交换到外存中,以释放内存空间。
- 短程调度:也称为 CPU 调度(分派器),是指在内存中调度可运行的进程,将 CPU 分配给就绪队列中的某个进程,以便该进程可以运行。
长进程调度和中进程调度都是在进程进入系统时进行的,而短进程调度则是进程在内存中运行时进行的。长进程调度的目标是提高系统的吞吐量,中进程调度的目标是平衡系统的吞吐量和响应时间,而短进程调度的目标是缩短进程响应时间,提高系统的交互性和实时性。
# 2. 短程调度的准则
【用户:用时短,响应快】【系统:吞吐快,效率高】
目标:按照优化系统一个或多个方面行为的方式,来分配处理器时间。
面向用户的规则(User-oriented)
交互式系统中的响应时间
响应时间:指从提交一条请求到输出响应所经历的时间间隔。(对用户可见)
面向系统的规则(System-oriented)
处理器使用的效果和效率
吞吐量:即进程完成的速度
吞吐量是系统性能的一个重要测度,我们总是希望系统的吞吐量能达到最大。
# 2. CPU 调度需要考虑的因素
决策模式
抢占:可能被操作系统中断
非抢占:进程运行直到中止
- 非抢占模式会导致处理器效率降低
- 抢占模式可能违反公平
调度规则
周转时间 = 完成时间 - 到达时间
响应时间 = 开始接收响应时间 - 请求时间
最后期限
可预测性:响应时间和周转时间变化大
吞吐量:单位时间内完成的进程
处理器利用率:处理器处于忙状态的时间百分比
公平性:进程应被平等对待,没有进程处于饥饿状态
强制优先级:指定进程的优先级后,调度策略应优先选择高优先级的进程
平衡资源:优先调度较少使用紧缺资源的进程
# 3. 调度算法
# 第 10 章 多处理器、多核和实时调度
10.2.3-10.2.5
# 1. 实时调度算法的特点和调度过程分析
概念:计算机实时调度算法是指在实时操作系统中,为满足各种实时任务的时间要求,按一定的策略和算法,对任务进行调度和分配资源的过程。
各种调度方法取决于:
一个系统是否可执行可调度性分析
若执行,则它是动态的还是静态的
分析结果自身是否根据在运行时分派的任务产生一个调度或计划
调度过程分析
1. 静态表调度法:执行关于可行调度的静态分析。分析的结果是一个调度,他确定在运行时一个任务何时须 开始执行。该方法适用于周期性的任务,该分析的输入为周期性的到达时间、执行时间、周期性的最后结束期 限和每个任务的相对优先级。调度程序试图开发一种能满足所有周期性任务要求的调度。
2. 静态优先级抢占调度法:执行一个静态分析,但未制定调度,而是通过给任务指定优先级,使得可以使用传统的基于优先级的抢占式调度程序。
3. 基于动态规划的调度法:在运行时动态地确定可行性,而不是在开始运行前离线地确定。到达的任务仅能在满足其他时间约束时,才可被接受并执行。可行性分析的结果是一个调度或规划,可用于确定何时分派这个任务。在一个任务已到达但未执行时,试图创建一个包含前面被调度任务和新到达任务的调度。若新到达任务能按如下方式调度:满足她的最后期限,且之前被调度的任务不会错过他的最后期限,则修改这个调度以适应新任务。
4. 动态尽力调度法:不执行可行性分析。系统试图满足所有的最后期限,并终止任何已经开始运行但错过最后期限的进程。
# 2. 限期调度
# 3. 速率单调调度
# 第 11 章
# 1. I/O 缓冲的作用和组织形式 11.4
概念:I/O 缓冲(buffer):内存当中预留的一个区域,用来暂存 I/O 通讯的数据。
作用:解决 I/O 设备和主存之间的速度差异所引起的数据传输效率问题。I/O 缓冲可以提供数据的临时存储,以便在数据传输过程中进行处理和调度,从而提高系统的性能和效率。
组织形式
1. 单缓冲:当用户进程发送 I/O 请求时,操作系统为该操作分配一个位于内存中的系统部分的缓冲区。输入传送的数据被放入系统缓冲区中,当传送完成时,进程把该块移到用户空间,并立即请求另一块。
2. 双缓冲:单缓冲方案的改进版可为操作分配两个系统缓冲区。在一个进程向一个缓冲区中传送数据的同时,操作系统正在清空(或填充)另一个缓冲区。
3. 循环缓冲:多个缓冲区进行等于双缓冲的操作
# 2. 磁盘调度的算法及其过程分析
- 优先级:选择优先级最高的 I/O 请求,交互式或短时批处理任务优先级较高
- 先进先出(FIFO):按顺序处理队列中的项目
- 后进先出(LIFO):选择并执行最近的 I/O 请求,可能导致进程饿死
- 最短服务时间优先(SSTF):选择寻道时间最短的 I/O 请求,不能保证最优平均寻道时间,但是通常优于 FIFO。进程可能通过发出大量位置较近的请求抢占 I/O。
- SCAN:磁臂向一个方向移动,选择当前方向上距离当前磁道最近的请求,到达一端后调转方向扫描。
【补充】
在设计 I/O 机制时,最重要的两个目标就是:效率(Efficiency)、通用性(Generality)。
# 第 12 章
# 1. 逻辑上的文件组织的名称、概念和形式(5 种)
- 堆:按照数据到来顺序进行组织,文件中的记录和记录中的域都是变长的,不同记录中的域可能不同
- 顺序文件:文件由定长的记录构成,每个记录由确定顺序的、定长的域构成
- 索引顺序文件:为顺序文件添加索引,索引包含关键域的值以及对应记录在主文件中的位置
- 索引文件:索引顺序文件只为一个关键域建立索引,索引文件可以为多个关键域建立索引
- 直接或散列文件:文件由定长记录构成,每个记录由确定顺序的、定长的域构成,具有一个关键域用以唯一标识每个记录。采用散列表索引,不按照关键域排序。
# 2. 文件定位和访问权限 12.4 12.5
- 定位:系统中的任何文件都可以按照从根目录或主目录向下到各个分支,最后直到该文件的路径来定位。
- 访问:文件系统应提供一些选项,使的访问某个特定文件的方式能被控制。有代表性的访问权限如下:
1. 无
2. 知道
3. 执行
4. 读
5. 追加
6. 更新
7. 改变保护
8. 删除
- 这些权限构成一个层次结构,层次结构的每个权限都隐含了前面的那些权限。
# 3. 物理层关于文件分配的方法及其特点和分配过程 (3 种)
- 连续分配:在创建文件时,给文件分配一组连续的块,这是一种使用大小可变分区的预分配策略。在文件分配表中,每个文件只需要一个表项,用于说明起始块和文件的长度。
缺点:随着使用时长的增加,会出现外部碎片
- 链式分配:链中的每块都包含指向下一块的指针,在文件分配表中,每个文件同样只需要一个表项,用于声明起始块和文件的长度。
优势:无外部碎片。最适合顺序处理的顺序文件
缺点:局部性原理失效
- 索引分配:每个文件在文件分配表中都有一个一级索引。分配给该文件的每个分区在索引中都有一个表项。分配可以基于固定大小的块,也可以基于大小可变的分区。
优点:基于块来分配可以消除外部碎片,而按大小可变的分区分配可以提高局部性。
# 【补充】
12.7.1 文件分配
1. 维护文件分配表
2. 预分配、动态分配
3. 具体方法 - 见上面
12.7.2 空闲区管理
1. 还要维护磁盘分配表
2. 链接空闲区,维护空闲块列表
# 文件系统的层次结构
用户接口:文件系统需要向上层的用户提供一些简单易用的功能接口。这层就是用于处理用户发出的系统调用请求(Read、Write、Open、Close 等系统调用)。
文件目录系统:用户是通过文件路径来访问文件的,因此这一层需要根据用户给出的文件路径找到相应的 FCB 或索引结点。所有和目录、目录项相关的管理工作都在本层完成,如:管理活跃的文件目录表、管理打开文件表等。
存取控制模块:为了保证文件数据的安全,还需要验证用户是否有访问权限。这一层主要完成了文件保护相关功能。
逻辑文件系统与文件信息缓冲区:用户指明想要访问文件记录号,这一层需要将记录号转换为对应的逻辑地址。
物理文件系统:这一层需要把上一层提供的文件逻辑地址转换为实际的物理地址。
辅助分配模块:负责文件存储空间的管理,即负责分配和回收存储空间。
设备管理模块:直接与硬件交互,负责和硬件直接相关的一些管理工作。如:分配设备、分配设备缓冲区、磁盘调度、启动设备、释放设备等。
# OS 计算题
【操作系统原理期末速成不挂科主攻大题】 https://www.bilibili.com/video/BV1qd4y177eA/?p=6&share_source=copy_web&vd_source=cc07585fed7d5cb9aae6b319f65d0991
# 1. 信号量
操作系统学习笔记 - 信号量相关问题 | 花猪の Blog (cnhuazhu.top)
1 | /*producer*/ |
# 2. 银行家问题【死锁避免】
# 数据结构
# 算法描述【资源分配拒绝策略】
在说明银行家算法之前先明确以下三种状态:
- 系统状态:当前给进程分配的资源情况
- 安全状态:至少有一个资源分配序列不会导致死锁(即所有进程都能运行直到结束)
- 不安全状态:顾名思义,就是指不安全的状态
# 3. 分页访问序列 / 缺页
1 |
# 4. 可变分区分配算法
1 | 最佳适应:每次分配最小的内存,这种方法能使碎片尽量小; |
# OS 选择题汇总
# Chapter2-OS 概述
阶段 | 描述 | 特点 | 主要问题 | 硬件依赖 |
---|---|---|---|---|
第一阶段:串行阶段 | 1940s-1950s,没有操作系统 | - 直接与硬件交互 - 使用机器代码 - 输入设备载入程序 | - 调度问题(人机矛盾)- 准备时间长 | - 显示灯 - 触发器 - 输入设备 - 打印机 |
第二阶段:简单批处理系统 | 使用监控程序(monitor) | - 用户作业分批处理 - 作业控制语言(JCL) | - 准备时间 - CPU 资源浪费 | - 内存保护 - 定时器 - 特权指令 - 中断 |
第三阶段:多道批处理系统 | 内存中同时保存多个作业 | - 多任务处理 - 改善 CPU 利用率 | - 内存管理 - 调度问题 - 状态保存 / 恢复 - 资源竞争 | - 中断机制 - DMA 模块 |
第四阶段:分时系统 | 多个用户共享处理器时间 | - 减少用户响应时间 - 交互性好 | - 内存管理 - 调度问题 - 状态保存 / 恢复 - 资源竞争 | - 中断机制 - 高级硬件支持 |
- (单选题,5 分) 以下关于操作系统的描述,不正确的是():
- A. 可以有效的管理硬件
- B. 所有的计算机系统必备的系统软件
- C. 是系统软件
- D. 可以为用户提供服务(如系统调用)
- (单选题,5 分) 推动了‘进程’概念的发展的三个计算机系统的三条主线包括():
I. 简单批处理系统 /simple batch systems II. 多道批处理系统 /multi-programming batch systems III. 分时系统 /time-sharing systems IV. 实时系统 /real time systems
- A. I,II 和 IV
- B. II,III 和 IV
- C. I,II 和 III
- D. I,III 和 IV
- (单选题,5 分) 关于串行系统 /serial processing systems,以下说法不正确的是():
- A. 存在的时间年代是 1940 后期 - 50 年代中期
- B. 程序员需要直接和硬件打交道
- C. 它提供了软件层面的调度功能
- D. 操作系统是不存在的
- (单选题,5 分) 关于多道批处理系统 /multi-programming batch systems,以下说法不正确的是():
- A. 在物理内存中,除了操作系统,还存在多个(两个以上)用户程序
- B. 其指令源包括了作业控制语言命令和作业提供的命令
- C. 其产生的目标包括:让用户可以通过终端和程序进行交互
- D. 其产生的目标包括:对 CPU 的充分利用
- (单选题,5 分) 从 OS 历史和发展的角度,以下属于最早的分时系统 /time-sharing systems 的是 ():
- A. MIT CTSS
- B. IBM 704
- C. IBM 7094
- D. IBM 701
- (单选题,5 分) 引入多道程序的目的在于
- A. 充分利用 CPU,减少 CPU 等待时间
- B. 有利于代码共享,减少主、辅存信息交换量
- C. 提高实时响应速度
- D. 充分利用存储器
- (单选题,5 分) 现代操作系统的两个基本特征是( )和资源共享
- A. 实现分时与实时处理
- B. 程序的并发执行
- C. 多道程序设计
- D. 中断处理
- (单选题,5 分) 分时操作系统的主要特点是
- A. 多个用户共享计算机资源
- B. 个人独占计算机资源
- C. 自动控制作业运行
- D. 可靠性和安全性
- (单选题,5 分)( )不是操作系统关心的主要问题。
- A. 管理计算机系统资源
- B. 管理计算机裸机
- C. 高级程序设计语言的编译器
- D. 设计、提供用户程序与计算机硬件系统的界面
- (单选题,5 分) 计算机操作系统的功能是
- A. 实现计算机用户之间的相互交流
- B. 完成计算机硬件与软件之间的转换
- C. 控制、管理计算机系统的资源和程序的执行
- D. 把源程序代码转换为目标代码
- (单选题,5 分) 操作系统的系统调用,是基于 CPU 的哪种异常实现的
- A. 陷入 / Trap
- B. 故障 / Fault
- C. 终止 / Abort
- D. 中断 / Interrupt
- (单选题,5 分) 在中断发生后,进入的中断处理程序属于
- A. 既不是应用程序,也不是操作系统程序
- B. 操作系统程序
- C. 可能是应用程序,也可能是操作系统程序
- D. 用户程序
Ans.
1.B
5.B
6.C
7.C
8.A
12.A
13.B
14.A
16.C
17.C
18.A
20.B
# Chapter3 - 进程
- (单选题,5 分) 多道环境下,处理器 / CPU 的行为,可由以下的()来进行描述:
- A. 单个进程的轨迹 /trace
- B. 多个进程的轨迹 /trace
- C. 多个进程轨迹 /trace 的交替执行
- D. 以上说法均正确
- (单选题,5 分) 多道环境下,单个进程的行为,可由以下的()来进行描述:
- A. 单个进程的轨迹 /trace
- B. 多个进程的轨迹 /trace
- C. 多个进程轨迹 /trace 的交替执行
- D. 以上说法均正确
- (单选题,5 分) 关于进程的两状态模型,其包括的两个状态是():
- A. 运行态和执行态
- B. 运行态和非运行态
- C. 运行态和阻塞态
- D. 运行态和就绪态
- (单选题,5 分) 关于进程的五状态模型,以下哪个情况可能会导致新建 / New 态的进程的产生():
- A. 新的批处理作业提交
- B. 新的用户从终端登录
- C. 现有的进程创建了子进程
- D. 以上说法均正确
- (单选题,5 分) 关于进程的五状态模型,以下哪个情况可能会导致退出态 / Exit 态的进程的产生():
- A. 执行了无效指令
- B. 父进程终止
- C. 系统管理员终止了它
- D. 以上说法均正确
- (单选题,5 分) 关于进程的五状态模型,不包括的状态转换情况是():
- A. 从就绪态要运行态
- B. 从运行态到就绪态
- C. 从阻塞态到运行态
- D. 从运行态到阻塞态
- (单选题,5 分) 一个新进程的创建,包括了以下的哪个步骤():
- A. 为新进程分配新的内存地址空间
- B. 为新进程分配一个唯一的进程标识符 / ID
- C. 初始化新进程的进程控制块 / PCB
- D. 以上说法均正确
- (单选题,5 分) 关于进程切换 / Process Switch 的时机,可能发生在是():
- A. 时钟中断
- B. 系统调用
- C. 缺页故障
- D. 以上说法均正确
- (单选题,5 分) 当应用程序执行的时候,处理器 / CPU 的态 /mode 处于():
- A. 用户态 / User mode
- B. 系统态 / System mode
- C. 内核态 / Kernel mode
- D. 以上均有可能
# &10. (单选题,5 分) 关于进程切换 / Process Switch 和处理器态的切换 / CPU mode Switch,以下正确的是
- A. 有进程切换,则一定伴随着处理器态的切换
- B. 有处理器态的切换,则一定伴随着进程切换
- C. 两种切换 / Switch 是等价的
- D. 两种切换 / Switch 并无关系
- (单选题,5 分) 在 Linux 操作系统中运行如下 C 语言程序:
1 | int main(){ |
假设编译链接过程正确且程序正确执行,那么运行结果是?
- A. This is the child process, a=4 This is the parent process, a=6
- B. This is the child process, a=4
- C. This is the parent process, a=6
- D. This is the parent process, a=6 This is the child process, a=5
- (单选题,5 分) 教材的图 3.2 中,有一个叫分派器 / Dispatcher 的功能子模块,其属于 OS 的哪个模块:
- A. 进程
- B. 内存管理
- C. I/O 管理
- D. 文件系统
# &13. (单选题,5 分) 下列关于进程的叙述中,哪一个是正确的 ( )
- A. 优先级是进行进程调度的重要依据,一旦确定不能改变
- B. 进程获得处理器而运行是通过调度而得到的
- C. 进程申请处理器得不到满足时,其状态变为阻塞态
- D. 在单处理器系统中,任一时刻有 2 个进程处于运行状态
- (单选题,5 分) 在单处理机系统中,处于运行状态的进程( )
- A. 只有一个
- B. 有多个
- C. 不能被挂起
- D. 必须在执行完成后才能被撤下
- (单选题,5 分) 一个阻塞进程所等待的事件发生后( )
- A. 该进程重新占有 CPU
- B. 进程状态变为就绪
- C. 它的优先级变为最高
- D. 其 PCB 移至就绪队列的队首
- (单选题,5 分) 多道系统环境下,操作系统分配资源是以 ( ) 为基本单位。
- A. 作业
- B. 指令
- C. 程序
- D. 进程
- (单选题,5 分) 下面对进程的描述中,错误的是( )
- A. 进程是动态的概念
- B. 进程执行需要处理机
- C. 进程是有生命期的
- D. 进程是指令的集合
- (单选题,5 分) 下列几种关于进程的叙述,( )是最不符合操作系统的进程模块的。
- A. 进程即是程序,程序即是进程
- B. 进程可以由程序、数据和进程控制块描述
- C. 线程是一种特殊的进程
- D. 进程是程序在一个数据集合上运行的过程,是系统进行并资源分配和调度的一个独立单位
- (单选题,5 分) 下列关于进程控制块 / PCB 的描述,哪一个是错误的?
- A. 操作系统利用 PCB 描述进程的基本特征
- B. 一个 PCB 对应一个进程
- C. PCB 可用于描述进程的一些变化,如其状态的变化
- D. PCB 通常保存在二级存储的磁盘上
- (单选题,5 分) 下列哪一项工作不是创建进程时所做的?
- A. 给新进程分配一个唯一标识
- B. 给新进程分配虚拟地址空间
- C. 将处理器控制权交给新进程
- D. 初始化新进程的进程控制块
ans.
CABDD
CDDAa
AAbAB
DDADC
# Chapter4 - 线程
- (单选题,5 分) 一种将执行应用程序的进程划分为可并发运行的线程的技术称为 ():
- A. 多线程
- B. 同步
- C. 多进程
- D. 以上都不是
- (单选题,5 分) 操作系统能够独立处理以下两个特点 (characteristics):“资源所有权” 和 “调度 / 执行”。对于支持线程的操作系统,以上两个特点的第一个,被给与了以下哪个实体 /unit ():
- A. 程序
- B. 进程
- C. 线程
- D. 系统调用
- (单选题,5 分) 操作系统能够独立处理以下两个特点 (characteristics):“资源所有权” 和 “调度 / 执行”。对于支持线程的操作系统,以上两个特点的第二个 (也可以被称为分派 / Dispatching), 被给与了以下哪个实体 /unit ():
- A. 程序
- B. 进程
- C. 线程
- D. 系统调用
- (单选题,5 分) 关于进程和线程之间的关系,下列哪一项是正确的 ():
- A. 在两个不同的进程之间切换所需的时间比在同一个进程中的两个线程之间切换所需的时间要少
- B. 在现有进程中创建新线程所花费的时间要比创建新进程少得多
- C. 终止一个进程所需的时间比终止一个线程要少
- D. 以上都是
- (单选题,5 分) 下列关于线程的叙述中,正确的是 ():
- A. 线程包含 CPU 现场,可以独立执行程序
- B. 每个线程有自己独立的地址空间
- C. 进程只能包含一个线程
- D. 线程之间的通信必须使用系统调用函数
- (单选题,51 分) 下列哪个系统应用了多线程 ():
- A. Solaris
- B. Linux
- C. Win10
- D. 以上都是
- (单选题,5 分) 在 Linux 系统中,可以在一个进程中创建和执行多个线程。则其线程:进程的关系是 ():
- A. 1:1
- B. M:N
- C. M:1
- D. 以上都不是
- (单选题,5 分) 当一个线程需要等待一个事件时,与线程状态变化相关的基本线程操作称为 ():
- A. 阻塞操作
- B. 解除阻塞操作
- C. 生成操作
- D. 以上都不是
- (单选题,5 分) 在纯 ULT 策略中,当一个多线程进程中的某个线程被阻塞后 ():
- A. 该进程的其他线程仍可继续运行
- B. 整个进程都将阻塞
- C. 该阻塞进程将被撤销
- D. 该阻塞线程将永远不可能再执行
- (单选题,5 分) 与内核级线程 (KLT) 相比,用户级线程 (ULT) 的缺点之一是 ():
- A. 线程切换不需要切换到内核模式
- B. 调度是基于应用的
- C. 当用户级线程执行系统调用时,进程中的所有线程都被阻塞
- D. 以上都是
# &11. (单选题,5 分) 若系统中只有用户级线程,则处理器的调度单位是 ( )。
- A. 线程
- B. 进程
- C. 程序
- D. 作业
- (单选题,5 分) 下面关于线程的叙述中,正确的是 ( )。
- A. 不论是系统级线程还是用户级线程,其切换都需要内核的支持
- B. 线程是资源的分配单位,进程是调度和分配的单位
- C. 不管系统中是否有线程,进程都是拥有资源的独立单位
- D. 在引入线程的系统中,进程仍是资源分配和调度分派的基本单位
# &13. (单选题,5 分) 在以下描述中,( )并不是多线程系统的特长
- A. 利用线程并行的执行矩阵乘法运算
- B. Web 服务器利用线程响应 HTTP 请求
- C. 键盘驱动程序为每个正在运行的应用配备一个线程,用以响应该应用的键盘输入
- D. 基于 GUI 的调试程序用不同的线程分别处理用户输入、计算和跟踪等操作
# &14. (单选题,5 分) Windows 操作系统中动态 DLL 库里的系统线程,被不同的进程所调用,它们是( )的线程
- A. 不同
- B. 相同
- C. 可能不同,也可能相同
- D. 不能被调用
- (单选题,5 分) 关于线程,在下面的叙述中正确的是 ( )。
- A. 线程是比进程更小的能独立运行的基本单位
- B. 引入线程可提高程序并发执行的程度,可进一步提高系统效率
- C. 线程的引入增加了程序执行时时空开销
- D. 一个进程一定包含多个线程
- (单选题,5 分) 某操作系统在进程中引入了多个执行序列 —— 线程,那么下列叙述中,哪些描述了进程与线程的联系和区别正确的是?
- A. 进程是处理器调度的基本单位
- B. 线程是资源分配的基本单位
- C. 用户级线程执行时,同一进程不同线程的切换不需要内核支持
- D. 线程可以独立于进程而存在
- (单选题,5 分) 使用 Linux 的 pthread 库创建的线程属于
- A. 用户级线程 / ULT
- B. 内核级线程 / KLT
- C. 都有可能
- D. 都不是
- (单选题,5 分) 下列关于线程的说法,正确的是( )。
- A. 两个线程可以共享各类资源
- B. 一个线程可以包含多个进程
- C. 单处理器的计算机上,2 个线程不能同时处于运行态
- D. 一个进程可以包含多个线程
# &19. (单选题,5 分) 下列关于线程的描述中,错误的是___。
- A. 内核级线程的调度由操作系统完成
- B. 操作系统为每个用户级线程建立一个线程控制块
- C. 用户级线程间的切换比内核级线程间的切换效率高
- D. 用户级线程可以在不支持内核级线程的操作系统上实现
- (单选题,5 分) 在一个进程中,可能有一个或者多个线程,每个线程有
- A. 线程执行状态
- B. 在未运行时保存的线程上下文
- C. 用于每个线程局部变量的静态存储空间
- D. 以上都有
ans.
ABCBA
DCABC
bCcbB
CBDbD
11. 用户级线程是在用户空间实现的,它们对操作系统来说是透明的,操作系统无法直接感知和调度这些线程。因此,操作系统只能将进程作为调度的基本单位。
13. 选项 C "键盘驱动程序为每个正在运行的应用配备一个线程,用以响应该应用的键盘输入" 并不是多线程系统的特长。
多线程系统的特长通常在于能够同时处理多个任务或操作,提高程序的响应性和效率。
每个应用都配备一个线程来处理键盘输入,这并不是多线程的优势所在。实际上,这种做法可能会导致资源浪费,因为每个线程都需要消耗系统资源。对于键盘输入,通常只需要一个线程来处理所有应用的输入事件,而不是为每个应用分配一个线程。
14. 在 Windows 操作系统中,动态链接库(DLL)可以被多个进程共享。当一个 DLL 被加载到内存中时,它会被映射到所有需要它的进程的地址空间中。这意味着,如果一个 DLL 中包含系统线程,那么这些线程实际上是在内存中的同一份代码和数据结构。因此,不同的进程调用同一个 DLL 中的系统线程时,它们实际上是在操作相同的线程实例。
17.pthread 库是 POSIX 线程的实现,它在 Linux 上创建的是内核级线程。这些线程由操作系统内核直接支持和管理,每个线程都有自己的内核栈和调度实体。用户级线程(ULT)是完全在用户空间实现的,不直接由内核管理,而 Linux 的 pthread 库并不提供用户级线程的实现。
19. 实际上,用户级线程(User-Level Threads,ULT)是在用户空间实现的,操作系统的内核并不直接管理这些线程,因此不会为每个用户级线程建立线程控制块。线程控制块(Thread Control Block,TCB)是内核级线程(Kernel-Level Threads,KLT)的一部分,由操作系统内核管理。
# Chapter5 - 并发
- (单选题,5 分) 以下哪个术语不属于 “并发 / Concurrency” 的 “核心的四个要解决的问题” 的范畴:( )
- A. 同步 / Synchronization
- B. 互斥 / Mutual Exclusion
- C. 死锁 / Deadlock
- D. 条件竞争 / Race Condition
- (单选题,5 分) 多个进程或线程在读写一个共享数据时,如果最终的运行结果依赖于它们执行的相对时间,这个现象被称为:( )
- A. 同步
- B. 互斥
- C. 死锁
- D. 条件竞争 / Race Condition
- (单选题,5 分) 当一个进程在临界区访问某个共享资源时,其他进程不能进入该临界区访问此共享资源的情形,它被称为:( )
- A. 同步
- B. 互斥
- C. 死锁
- D. 条件竞争 / Race Condition
- (单选题,5 分) 为了在进程所竞争的关键资源上实现互斥,同一时间只允许一个程序:( )
- A. 展示合作
- B. 进入程序的临界区
- C. 进行消息传递
- D. 以上都不是
# &5. (单选题,5 分) 临界区指的是:并发进程中访问共享变量的:( )
- A. 堆栈 / Stack 段
- B. 堆 / Heap 段
- C. 数据 / Data 段
- D. 代码 / Code 段
- (单选题,5 分) 实现互斥需要满足下列哪些要求:( )
- A. 一次只允许一个进程进入临界区
- B. 一个进程驻留在临界区中的时间必须是有限的
- C. 对相关进程的执行速度没有任何要求和限制
- D. 以上都是
- (单选题,5 分) 为了实现互斥,可以采用哪些方法 / 技术:( )
- A. 关中断
- B. 通过特殊的硬件指令
- C. 信号量
- D. 以上均可
- (单选题,5 分) 没有指定进程从队列中移除的顺序的信号量称为:( )
- A. 弱信号量
- B. 强信号量
- C. 二元信号量
- D. 以上都不是
- (单选题,5 分) 生产者 / 消费者问题不能视为一个的特殊读者 / 写者问题的原因是:( )
- A. 生产者 / 消费者各自一个,而读者 / 写者各自可以有多个
- B. 生产者和消费者其实同时是读者和写者
- C. 当写者执行写入的时候,读者也可以执行读取;而生产者 / 消费者不同
- D. 以上都不是
- (单选题,5 分) 读者 / 写者问题需要要求满足的条件有:( )
- A. 多个写者可同时写某个共享文件
- B. 多个读者可同时读某个共享文件
- C. 当写者在写某个共享文件时,读者也可以读取这个共享文件
- D. 以上都不是
&11. (单选题,5 分) 若有 4 个进程共享同一程序段,而且每次最多允许 3 个进程进入该程序段,则信号量的变化范围是( )。
- A. 3,2,1,0
- B. 3,2,1,0,-1
- C. 4,3,2,1,0
- D. 2,1,0,-1,-2
- (单选题,5 分) 下列对临界区的论述中,正确的是()
- A. 临界区是指进程中用于实现进程互斥的那段代码
- B. 临界区是指进程中用于实现进程同步的那段代码
- C. 临界区是指进程中用于实现进程通信的那段代码
- D. 临界区是指进程中用于访问临界资源的那段代码
&13. (单选题,5 分) 一个正在访问临界资源的进程由于申请等待 I/O 操作而被中断时,它( )
- A. 允许其他进程进入与该进程相关的临界区
- B. 不允许其他进程进入任何临界区
- C. 允许其他进程抢占处理器,但不得进入该进程的临界区
- D. 不允许任何进程抢占处理器
# &14. (单选题,5 分) 以下关于管程的叙述中,错误的是( )
- A. 管程是进程同步工具,解决信号量机制大量同步操作分散的问题。
- B. 管程每次只允许一个进程进入管程
- C. 管程中 signal 操作的作用和信号量机制中的 semSignal 操作相同
- D. 管程是被进程调用的,管程是语法范围,无法创建和撤销
# &15. (单选题,5 分) 当一进程因在记录型信号量 S 上执行 semSignal (S) 操作而导致唤醒另一进程后,S 的值为( )。
- A. > 0
- B. < 0
- C. >= 0
- D. <= 0
# &16. (单选题,5 分) 若信号 S 的初值为 2,当前值为 - 1,则表示有( )个等待进程。
- A. 0
- B. 1
- C. 2
- D. 3
- (单选题,5 分) 在下面关于并发性的叙述正确的是( )。
- A. 并发性是指若干事件在同一时刻发生
- B. 并发性是指若干事件在不同时刻发生
- C. 并发性是指若干事件在同一时间间隔发生
- D. 并发性是指若干事件在不同时间间隔发生
- (单选题,5 分)( )操作不是 semWait 信号量原语可完成的。
- A. 为进程分配处理机
- B. 使信号量的值变小
- C. 可用于进程的同步
- D. 使进程进入阻塞状态
- (单选题,5 分) 下列关于临界资源的描述中正确的是( )
- A. 临界资源是非共享资源
- B. 临界资源是任意共享资源
- C. 临界资源是互斥共享资源
- D. 临界资源是同时共享资源
- (单选题,5 分) 设两个进程共用一个临界资源的互斥信号量 mutex,当 mutex=-1 时表示( )
- A. 一个进程进入了临界区,另一个进程等待
- B. 没有一个进程进入临界区
- C. 两个进程都进入临界区
- D. 两个进程都在等待
ans.
DDBBd
DDABB
bDccd
BCACA
5. 临界区(Critical Section)通常指的是代码段中的一段区域,这段区域中的代码访问了共享资源或数据。
临界区是程序中的一段代码,多个线程或进程可能同时执行到这一区域,因此需要通过同步机制来确保数据的一致性和线程的安全。堆栈(Stack)、堆(Heap)和数据段(Data Segment)通常指的是程序的存储区域,它们并不直接与临界区的概念相关。
8. 信号量
特性 / 信号量类型 | 弱信号量 | 强信号量 | 二元信号量 | 计数信号量 |
---|---|---|---|---|
定义 | 没有指定进程唤醒顺序的信号量 | 按照 FIFO 顺序唤醒进程的信号量 | 只有两种状态(0 或 1)的信号量 | 可以有多个权限的信号量 |
唤醒顺序 | 任意顺序 | 先进先出(FIFO) | 不适用 | 不适用 |
用途 | 用于不需要特定唤醒顺序的同步 | 用于需要保持严格唤醒顺序的同步 | 控制对资源的访问,如互斥锁 | 控制对多个资源实例的访问 |
资源访问 | 不保证公平性 | 保证公平性 | 通常用于互斥 | 可以控制多个资源实例的访问 |
实现方式 | 操作系统内核或用户空间实现 | 通常由操作系统内核实现 | 通常由操作系统内核实现 | 可以由操作系统内核或用户空间实现 |
11. 计算
当一个进程进入临界区时,信号量减 1;当进程离开临界区时,信号量加 1。
如果信号量为 0,意味着程序段已经被 3 个进程占用,此时如果有其他进程尝试进入程序段,它将无法进入,并且信号量的值将保持为 0。然而,如果操作系统允许进程等待(即阻塞),并且有进程在信号量为 0 时尝试进入程序段,那么这个进程将被放入等待队列,信号量的值可以变为负数,表示有进程在等待进入程序段。
B. 3,2,1,0,-1
这个范围表示信号量可以减少到 - 1,因为有进程可能在信号量为 0 时被阻塞等待进入程序段。
14. 选项 C "管程中 signal 操作的作用和信号量机制中的 semSignal 操作相同" 是错误的。
- 信号量机制中的
semSignal
操作:在信号量机制中,semSignal
操作通常用来增加信号量的值,从而可能唤醒一个等待该信号量的进程。semSignal
是一种解除阻塞的操作,它通常与semWait
(或P
操作)配对使用,后者会阻塞进程直到信号量的值大于 0。 - 管程中的
signal
操作:在管程中,signal
操作用于唤醒一个等待特定条件的进程。管程中的条件变量允许进程等待某个条件变为真,而signal
操作则是通知管程中的一个或多个等待条件变量的进程,条件已经满足。这与信号量的semSignal
操作不完全相同,因为信号量本身并不涉及条件变量的概念。
因此,管程中的 signal
操作更接近于信号量机制中的 semBroadcast
操作,后者用于唤醒所有等待同一信号量的进程,而 semSignal
只唤醒一个等待的进程(如果有的话)。
对于 D 选项:管程是由一组数据及定义在这组数据之上的对这组数据的操作组成的软件模块。
上面这段定义来自王道书,可以看出,管程=软件模块。
什么是软件模块?类比地看,相当于 java 中的抽象类,比如 streamreader 类等等。这些抽象模块定义了数据该怎么用,数据的名字叫什么,但是没有把数据直接放进去,因此说管程是语法范围。你可以把管程当工具去使用,但是不能创建和撤销管程。再通俗点讲,管程相当于一个函数。你传入参数 (给管程设置打印机初值),然后你就可以使用它提供的功能 (read,write 操作)。这种调用过程是由进程实现的,但是调用≠创建或撤销。在 java 中,你可以 new 一个实例,但总不能 new 一个抽象类吧?这是一个道理
15. 暂时不会
记录型信号量(Record Semaphore),也称为有界计数信号量(Counting Semaphore),是一种同步机制,用于控制对一定数量资源的访问。它与二元信号量(Binary Semaphore,或互斥锁 Mutex)不同,后者只允许两种状态:资源被占用或未被占用。
记录型信号量的特点是:
- 有界性:记录型信号量的值不能无限增加,它有一个上限,通常在创建信号量时被初始化和设定。这个上限通常对应于系统中某种资源的总数。
- 计数功能:记录型信号量具有一个整数值,表示可用资源的数量。当一个进程需要访问资源时,它会尝试减少信号量的值;当进程释放资源时,它会尝试增加信号量的值。
- 等待队列:如果信号量的值小于或等于 0,试图进一步减少其值的进程将被阻塞,直到信号量的值变为正数。这些等待的进程形成了一个等待队列。
- 唤醒机制:当一个进程通过执行
semSignal(S)
操作增加信号量的值时,如果有进程因为信号量的值为负而被阻塞,至少有一个等待的进程将被唤醒,允许它继续执行。
# Chapter6 - 死锁和饥饿
- (单选题) 一组竞争系统资源或相互通信的进程的永久阻塞被称为:( )
- A. 优先级
- B. 死锁
- C. 饥饿
- D. 以上都是
- (单选题) 所有死锁涉及的资源需求冲突有关:( )
- A. 一个或更多进程
- B. 两个或更多进程
- C. 三个或更多进程
- D. 以上都不是
# &3. (单选题) 可以创建和销毁的资源被称为:( )
- A. 可重用资源
- B. 可生成资源
- C. 可消耗资源
- D. 以上都是
C
# &4. (单选题) 下列是可消耗资源的有:( )
- A. 主存
- B. 打印机
- C. 消息
- D. 以上都是
- (单选题) 造成死锁的条件可能是:( )
- A. 不可抢占
- B. 互斥
- C. 占有且等待
- D. 以上都是
# &6. (单选题) 死锁预防的一种直接方法是防止以下哪些情况的发生:( )
- A. 占有且等待
- B. 互斥
- C. 循环等待
- D. 以上都是
- (单选题) 是否允许当前的资源分配请求是通过判断该请求是否可能导致死锁来决定的,这种策略被称作:( )
- A. 死锁检测
- B. 死锁预防
- C. 死锁避免
- D. 以上都不是
- (单选题) 在死锁避免的资源分配拒绝方法中,安全定义为:( )
- A. 至少有一个潜在的进程序列不会导致死锁
- B. 所有潜在的进程序列不会导致死锁
- C. 数个潜在的进程序列不会导致死锁
- D. 以上都不是
- (单选题) 下列关于银行家算法的叙述中,正确的是:( )
- A. 银行家算法属于死锁的预防策略
- B. 当系统处于安全状态时,系统中至少有一个资源分配序列可以避免死锁
- C. 当系统处于不安全状态时,系统中一定有死锁
- D. 银行家算法破坏了死锁必要条件中的 “占有且等待 “条件
- (单选题) 在死锁进程恢复中,选择一个特定进程中止或回滚的选择标准包括:( )
- A. 到目前为止分配的总资源最少
- B. 最低优先级
- C. 预计剩余时间最长
- D. 以上都是
- (单选题) 下面关于安全状态和非安全状态说法正确的是 ( )
- A. 安全状态是没有死锁的状态,非安全状态是有死锁的状态
- B. 安全状态是可能有死锁的状态,非安全状态也可能有死锁状态
- C. 安全状态是可能没有死锁的状态,非安装状态有死锁的状态
- D. 安全状态没有死锁的状态,非安全状态可能有死锁的状态
# &12. (单选题) 进程 P1 使用资源情况:申请资源 S1,... 申请资源 S2,… 释放资源 S1;进程 P2 使用资源情况:申请资源 S2,… 申请资源 S1,… 释放资源 S2;系统并发执行进程 P1,P2,系统将 ( )
- A. 必定产生死锁
- B. 可能产生死锁
- C. 不会产生死锁
- D. 无法确定是否会产生死锁
- (单选题) 某计算机系统中有 14 个设备,有 n 个进程竞争使用,每个进程最多需要 5 个设备。该系统可能会发生死锁的 n 的最小值是( )。
- A. 2
- B. 3
- C. 4
- D. 5
- (单选题) 某系统有 n 台互斥使用的同类设备,3 个并发进程需要 3, 6, 8 台设备,可确保系统不发生死锁的设备数 n 最小为( )。
- A. 11
- B. 14
- C. 15
- D. 17
# &15. (单选题) 下列描述的各种现象中,属于活锁现象的是
- A. 相关进程进入阻塞状态,且无法唤醒
- B. 相关进程进入阻塞状态,且可以唤醒
- C. 相关进程没有阻塞,但是调度时刻被延迟推后
- D. 相关进程没有被阻塞,可被调度,但是不做有用的工作
# &16. (单选题) 假设 5 个进程 P0、P1、P2、P3、P4 共享 3 类资源 R1、R2、R3,这些资源总数分别为 18、6、22。T0 时刻的资源分配情况如下表所示,此时存在的一个安全序列是?![img]()
- A. P0, P2, P4, P1, P3
- B. P1, P0, P3, P4, P2
- C. P2, P1, P0, P3, P4
- D. P3, P4, P2, P1, P0
- (单选题) 解除死锁通常不采用的方法是( )
- A. 终止一个死锁进程
- B. 终止所有死锁进程
- C. 从死锁进程处抢夺资源
- D. 从非死锁进程处抢夺资源
- (单选题) 在系统运行过程中,通过检查系统是否处于安全状态而不让死锁发生的策略是
- A. 死锁预防
- B. 死锁避免
- C. 死锁检测
- D. 死锁解除
# &19. (单选题) 对资源采用按序分配策略能达到下列哪一个目的?
- A. 死锁预防
- B. 死锁避免
- C. 死锁检测
- D. 死锁解除
- (单选题) 在进程资源图中 ( ) 是发生死锁的必要条件。
- A. 互斥
- B. 可剥夺条件
- C. 环路
- D. 同步
ans.
BBccD
cCABD
DbCCd
DDBaA
6. 直接方法,避免循环等待
12. 如果足够快,1 已经释放了。可能产生
15. 活锁是一种状态,其中涉及的进程或线程没有被阻塞,它们仍然响应并能够执行操作,但由于某些条件,它们无法取得进展。活锁与死锁不同,死锁时进程被永久阻塞且无法执行任何操作。活锁通常发生在有多个进程或线程尝试以一种方式避免冲突,但最终导致没有一个进程或线程能够取得实质性进展。
D. 相关进程没有被阻塞,可被调度,但是不做有用的工作
另外:几种区分
特性 / 策略 | 死锁预防 | 死锁避免 | 死锁检测 | 死锁解除 |
---|---|---|---|---|
基本概念 | 通过破坏死锁必要条件来预防死锁发生 | 动态地评估资源分配请求以避免死锁 | 检测系统运行时是否出现死锁状态 | 死锁发生后采取措施解除死锁 |
实现方法 | 例如银行家算法、按序分配策略 | 例如动态资源分配策略,资源分配请求 | 定期检查资源分配图等 | 资源回收、进程回退等 |
预防措施 | 设计时预防,如资源排序 | 动态评估避免,如避免循环等待 | 检测死锁条件,如循环等待和资源占有 | 没有预防措施,事后处理 |
目的 | 预防死锁发生 | 动态地避免死锁 | 检测并报告死锁 | 解除已发生的死锁状态 |
时机 | 系统设计阶段 | 资源请求时 | 系统运行时 | 死锁发生后 |
优点 | 可以完全避免死锁 | 允许更灵活的资源分配 | 可以在多种情况下检测死锁 | 解除死锁后系统可继续运行 |
缺点 | 可能限制系统资源的利用效率 | 需要复杂的算法来评估请求 | 可能无法检测到所有类型的死锁 | 解除死锁可能需要牺牲某些进程或资源 |
常见策略 | 银行家算法、按序分配 | 单一资源分配、安全序列 | 资源分配图、等待图 | 杀死进程、回退事务 |
特性 / 资源类型 | 可重用资源 | 可生成资源 | 可消耗资源 | |
-------------- | --------------------------------------------------- | ---------------------------------- | --------------------------------------------------- | |
定义 | 可以被多个进程重复使用且使用后可以释放的资源。 | 能够根据需要动态创建和销毁的资源。 | 在使用过程中会被逐渐消耗或消失的资源。 | |
例子 | 内存块、数据库连接、文件句柄、处理器时间、I/O 通道。 | 动态内存分配、线程、进程。 | 中断、信号、消息、I/O 缓冲区中的信息、打印纸、能源。 | |
使用后状态 | 可以被系统回收并重新分配给其他进程。 | 可以被销毁并释放占用的系统资源。 | 消耗后通常不再存在或需要重新生成。 | |
共享性 | 一次仅供一个进程安全使用,但可以被多个进程共享。 | 根据实现可能允许共享或独占。 | 通常不具备共享性,使用后即消失。 | |
持久性 | 高,资源使用后仍然存在。 | 中等,创建后可持久存在直至销毁。 | 低,使用后可能不再存在。 | |
管理方式 | 需要有效的资源回收和分配策略。 | 需要创建和销毁的动态管理。 | 需要持续的资源生成或补充。 | |
可以创建和销毁 | 消息 |
# Chapter7 - 内存管理
- (单选题) 在 OS 和进程之间划分内存的任务是由 OS 的某个模块完成的,它被称为:( )
- A. 内存管理模块
- B. 进程模块
- C. 文件系统
- D. 以上都不是
- (单选题) 对内存位置的引用,可以独立于当前数据在内存的实际位置,它被称为:( )
- A. 相对地址
- B. 逻辑地址
- C. 绝对地址
- D. 以上都不是
- (单选题) 数据或者代码在内存中的实际位置被称为:( )
- A. 相对地址
- B. 物理地址
- C. 逻辑地址
- D. 以上都不是
# &4.(单选题) 将程序和数据组织起来,使不同的模块分配到同一内存区域的做法称为:( )
- A. 共享 / Sharing
- B. 重定位 / Location
- C. 覆盖 / Overlay
- D. 以上都不是
# &5.(单选题) 在采用固定分区内存管理方案的系统中,内部碎片的问题可以通过以下哪种方法得到缓解:( )
- A. 随机大小的分区
- B. 大小不等的分区
- C. 大小相等的分区
- D. 以上都不是
- (单选题) 在内存管理的动态分区技术中,选择大小最接近请求的块的放置算法被称为:( )
- A. 最佳适配
- B. 首次适配
- C. 下次适配
- D. 以上都是
- (单选题) 进程的页表内所维护的地址是:( )
- A. 进程中每一页 /page 的页框 /frame 地址
- B. 进程中每个页框 /frame 的页 /page 地址
- C. 每个进程的虚拟内存地址
- D. 以上都不是
- (单选题) 在采用分页方案进行内存管理的系统中,浪费的空间来源于:( )
- A. 外部碎片
- B. 大小不同的页和页框
- C. 内部碎片
- D. 以上都不是
- (单选题) 在采用分段方案进行内存管理的系统中,浪费的空间来源于:( )
- A. 不同大小的段
- B. 内部碎片
- C. 外部碎片
- D. 以上都不是
- (单选题) 在采用分段方案进行内存管理的系统中,一个进程被分为:( )
- A. 大小不同的一些分区
- B. 大小相同的一些段
- C. 大小不同的一些段
- D. 以上都不是
# &11.(单选题) 在页式管理中,页表的始址存放在( )
- A. 内存中
- B. 存储页面表中
- C. 联想存储器中
- D. 寄存器中
- (单选题) 操作系统采用分页式存储管理 (Paging) 方法,要求 ( )
- A. 每个进程拥有一张页表,且所有进程的页表必须驻留在内存中
- B. 每个进程拥有一张页表,但只有执行进程的页表驻留在内存中,其他进程的页表不必驻留在内存中
- C. 所有进程共享一张页表,以节约有限的内存空间,但页表必须驻留在内存中
- D. 所有进程共享一张页表,只有页表中当前使用的页面必须驻留在内存中,以最大限度地节约有限的内存空间
- (单选题) 在计算机系统拥有的各种软硬件资源中,内存是属于
- A. 可重用资源
- B. 不可重用资源
- C. 临界资源
- D. 独占资源
- (单选题) 为了实现多道程序设计,计算机需要比单道更 ( )
- A. 大的内存
- B. 快的外部设备
- C. 快的 CPU
- D. 先进的终端
# &15.(单选题) 虚拟页式管理中的 ( ) 是:当内存中没有空闲帧时,如何将已占据的帧释放。
- A. 调入策略
- B. 地址变换
- C. 替换策略
- D. 调度算法
# &16.(单选题) 当内存碎片容量大于某一作业所申请的内存容量时,( )
- A. 可以为这一作业分配内存
- B. 不可以为这一作业分配内存
- C. 拼接后,可以为这一作业分配内存
- D. 一定能够为这一作业分配内存
- (单选题)( ) 是指让作业不同时调用的子模块共同使用同一个内存区。
- A. 交换技术
- B. 覆盖技术
- C. 物理扩充
- D. 虚拟扩充技术
- (单选题) 在分段存储管理方式中,( )
- A. 以段为单位,每段是一个连续存储区
- B. 段与段之间必定不连续
- C. 段与段之间必定连续
- D. 每段是等长的
- (单选题) 在一页式存储管理系统中,页表内容见下表。若页的大小为 4KB,则地址转换机构将逻辑地址 0 转换成物理地址为(页框号从 0 开始计算)( )
- A. 8192
- B. 4096
- C. 2048
- D. 1024
# &20.(单选题) 某计算机采用二级页表的分页存储管理方式,按字节编址,页大小为 2^10 B,页表项大小为 2B,逻辑地址结构为
逻辑地址空间大小为 2^16 页,则表示整个逻辑地址空间的页目录表中包含表项的个数至少是( )
- A. 64
- B. 128
- C. 256
- D. 512
ans.
ABBCb
AACCC
dBAAc
dBAAb
操作系统练习 - 物理内存管理_字节 编址 ,页大小为 2 10 字节,页表项大小为 2 字节,逻辑地址结构为 xsdn-CSDN 博客
11. 在页式管理中,页表的始址存放在寄存器中。这个寄存器通常被称为页表基址寄存器(Page Table Base Register, PTBR)。
注意二级,就相当于,大目录套小目录。
# Chapter8 - 虚拟内存
简单分页 | 虚存分页 | 简单分段 | 虚存分段 |
---|---|---|---|
内存划分为大小固定的小块,称为页框 | 内存划分为大小固定的小块,称为页框 | 内存未划分 | 内存未划分 |
程序被编译器或内存管理系统划分为页 | 程序被编译器或内存管理系统划分为页 | 由程序员给编译器指定程序段(即由程序员决定) | 由程序员给编译器指定程序段(即由程序员决定) |
页框中有内部碎片 | 页框中有内部碎片 | 无内部碎片 | 无内部碎片 |
无外部碎片 | 无外部碎片 | 有外部碎片 | 有外部碎片 |
操作系统须为每个进程维护一个页表,以说明每页对应的页框 | 操作系统须为每个进程维护一个页表,以说明每页对应的页框 | 操作系统须为每个进程维护一个段表,以说明每段中的加载地址和长度 | 操作系统须为每个进程维护一个段表,以说明每段中的加载地址和长度 |
操作系统须维护一个空闲页框列表 | 操作系统须维护一个空闲页框列表 | 操作系统须维护一个内存中的空闲空洞列表 | 操作系统须维护一个内存中的空闲空洞列表 |
处理器使用页号和偏移量来计算绝对地址 | 处理器使用页号和偏移量来计算绝对地址 | 处理器使用段号和偏移量来计算绝对地址 | 处理器使用段号和偏移量来计算绝对地址 |
进程运行时,它的所有页必须都在内存中,除非使用了覆盖技术 | 进程运行时,并非所有页都须在内存页框中。仅在需要时才读入页 | 进程运行时,其所有段都须在内存中,除非使用了覆盖技术 | 进程运行时,并非其所有段都须在内存中。仅在需要时才读入段 |
把一页读入内存可能需要把另一页写出到磁盘 | 把一段读入内存可能需要把另外一段或几段写出到磁盘 |
- (单选题) 有一种存储技术,它突破了计算机实际的内存容量限制,使逻辑上可以使用的内存地址空间受计算机系统寻址机制和可用的二级存储容量的限制。这种技术被称为:( )
- A. 虚拟内存
- B. 物理内存
- C. 内存
- D. 以上都不是
- (单选题) 操作系统的内存管理 (MM) 设计取决于三个基本的选择,它们有以下的:( )
- A. 是否使用虚拟内存技术
- B. 是使用分段还是分页,亦或均使用
- C. 为各种存储管理特征采用的策略 / 算法
- D. 以上都是
- (单选题) 处理器花费大量时间换入 / 换出进程 (的页或者段), 而不是执行指令的情况被称为:( )
- A. 局部性原理
- B. 换页
- C. 抖动
- D. 以上都不是
- (单选题) 与决定驻留在主存中的进程数相关的概念被称为:( )
- A. 页面错误频率
- B. 加载控制
- C. 清除策略
- D. 以上都不是
- (单选题) 以下和虚拟存储相关的中断 / 异常类型是:( )
- A. 系统调用 / System call
- B. 陷阱 / Trap
- C. 故障 / Falt
- D. 以上都不是
- (单选题) 在分页系统中,将逻辑地址的构成是:( )
- A. 页号和页内偏移量
- B. 页框号和页框内偏移量
- C. 页号和页框号
- D. 以上都不是
# &7. (单选题) 在分段系统中,共享通过什么实现的:( )
- A. 一个所有进程共享的公共数据存储区
- B. 每个进程的段表都有一个对主存区域调度程序的引用
- C. 在两个及两个以上的进程中引用段表中的同一个段
- D. 以上都是
- (单选题) 在混合段 / 页式系统中,用户的地址空间被分成:( )
- A. 先是固定大小的页,这些页又分为若干可变大小的段
- B. 先是可变大小的段,这些段又被分为若干固定大小的页
- C. 具体先是段或页,由程序员自行决定
- D. 以上都是
- (单选题) 有一种替换算法,这种算法在页面错误时仅在进程驻留的页面中选择页去替换,这种算法被称为:( )
- A. 局部替换策略
- B. 可变替换策略
- C. 全局替换策略
- D. 以上都不是
- (单选题) 有种替换算法是不可能实现的。这种算法要求 OS 足够了解未来发生的事件,其被称为:( )
- A. 最优算法
- B. 时钟算法
- C. 最近最少使用算法
- D. 以上都不是
# &11. (单选题) 段页式管理每取一数据,要访问 ( ) 次内存。
- A. 1
- B. 2
- C. 3
- D. 4
- (单选题) 设主存容量为 1MB,外存容量为 400MB,计算机系统的地址寄存器有 32 位,那么虚拟存储器的最大容量是()
- A. 1 MB
- B. 401 MB
- C. 1 MB + 2^32 MB
- D. 2^32 B
- (单选题) 在缺页处理过程中,操作系统执行的操作可能是( )Ⅰ、修改页表 Ⅱ、磁盘 I/OⅢ、分配页框
- A. 仅 I, II
- B. 仅 II
- C. 仅 Ⅲ
- D. 仅 I, II, III
# &14. (单选题) 对于虚拟存储器的分页系统,对于驻留集(Resident Set)管理,有两个维度:其一是固定或者可变分配;其二是局部或者全局分配。综合(即组合)起来,理论上,有 2*2 = 四种可能性,但实际上,有一种实际上是不存在的,它是:
- A. 固定分配 & 局部分配
- B. 固定分配 & 全局分配
- C. 可变分配 & 局部分配
- D. 可变分配 & 全局分配
# &15. (单选题) 某请求分页存储系统的页大小为 4KB,按字节编址。系统给进程 P 分配 2 个固定的页框,并采用改进型 Clock 置换算法,进程 P 页表的部分内容见下表。若 P 访问虚拟地址为 02A01H 的存储单元,则经过地址变换后得到的物理地址是?
- A. 00A01H
- B. 20A01H
- C. 60A01H
- D. 80A01H
# &16. (单选题) 下列选项中,通过不需要系统调用就能完成的操作是()
- A. 释放内存
- B. 页置换
- C. 创建新进程
- D. 进程间信号传递
- (单选题) 虚拟存储技术与 ( ) 不能配合使用
- A. 分区管理
- B. 分页管理
- C. 段式管理
- D. 段页式管理
# &18. (单选题) 段式虚拟存储器的最大容量是 ( )
- A. 由计算机地址结构长度决定的
- B. 由段表的长度决定的
- C. 由内存地址寄存器的长度决定的
- D. 无穷大的
# &19. (单选题) 有一虚拟存储系统,若进程在内存中占 3 页 (开始时内存为空),若采用先进先出 (FIFO) 页面淘汰算法,当执行如下访页页号序列后 1,2,3,4,1,2,5,1,2,3,4,5,会产生 ( ) 次缺页。
- A. 7
- B. 8
- C. 9
- D. 10
# &20. (单选题) 内存和外存容量之和与虚拟存储器容量相比其大小关系是 ( )
- A. 前者比后者大
- B. 前者比后者小
- C. 二者相等
- D. 不一定
ans.
ADCBC
AcBAA
cDDbc
bAacd
参考:
《操作系统》期末最全复习题及解析_操作系统期末题库及答案 - CSDN 博客
11. 一般需要访问三次以上的内存:
第一次是由段表地址寄存器得段表始址后访问段表,由此取出对应段的页表在内存中的地址。 第二次则是访问页表得到所要访问的物理地址。 第三次才能访问真正需要访问的物理单元。
16.B. 页置换 - 页置换是操作系统内部进行的内存管理操作,通常不需要用户程序的直接干预,因此不需要系统调用。
19. 一定要画图,脑子想容易遗漏谁先进来
# Chapter9 - 单处理器调度
调度的类型 | 解释 |
---|---|
长程调度(Long-term scheduling) | 决定加入待执行进程池 |
中程调度(Medium-term scheduling) | 决定加入部分或全部位于内存中的进程集合 |
短程调度(Short-term scheduling) | 决定处理器执行哪个可运行进程 |
I/O 调度(I/O scheduling) | 决定可用 I/O 设备处理哪个进程挂起的 I/O 请求 |
- (单选题) 将一个进程的至少一部分添加到主存中,使其执行的调度策略被称为 ( ):
- A. I/O 调度
- B. 中程调度
- C. 长程调度
- D. 以上都不是
- (单选题) 下次允许哪个作业进入的决策可基于以下哪些准则 ( ):
- A. I/O 需求
- B. 优先级
- C. 简单的 FIFO
- D. 以上都是
- (单选题) 进程的换入是基于哪个需求提出的 ( ):
- A. 进程优先级
- B. 系统并发度 (the degree of multiprogramming)
- C. 抖动
- D. 以上都不是
- (单选题) 在执行频率方面,短程调度通常 ( ):
- A. 与其他调度策略一样
- B. 以上都不是
- C. 最多使用的
- D. 最少使用的
- (单选题) 在交互系统中,响应时间的要求是属于 ( ):
- A. 面向用户,与性能相关
- B. 面向用户,其他
- C. 面向系统,与性能相关
- D. 面向系统,其他
- (单选题) 以下哪个调度策略允许 O/S 中断当前正在运行的进程并将其改变为就绪状态 ( ):
- A. 抢占式
- B. 非抢占式
- C. 先来先服务
- D. 以上都不是
- (单选题) 在排队模型中,进程在系统中花费的总时间 (等待时间加上服务时间) 被称为 ( ):
- A. 平均周转时间
- B. 周转或驻留时间
- C. 完成时间
- D. 以上都不是
- (单选题) 在轮转法中,最主要的设计问题是 ( ):
- A. 确定在一组给定的进程中轮转的方式
- B. 确定时间片对单个进程的公平分配
- C. 决定时间片的长度
- D. 以上都不是
- (单选题) 最短进程优先调度技术的一个难点是 ( ):
- A. 需要了解或估计每个进程所需的处理时间
- B. 缺乏抢占
- C. 长进程会发生饥饿
- D. 以上都是
- (单选题) 最短剩余时间优先调度技术的一个难点是 ( ):
- A. 需要了解或估计每个进程所需或剩余的处理时间
- B. 缺乏抢占
- C. 短进程会发生饥饿
- D. 以上都是
- (单选题) 某一进程的任务是某紧急事务处理,应选择 ( ) 算法较为合适。
- A. FCFS
- B. SJF
- C. HRRN
- D. 优先级调度
- (单选题)( ) 的进程调度算法,对于执行时间相对较短且等待时间较长的进程较为有利。
- A. FCFS
- B. SJF
- C. HRRN
- D. 优先级调度
- (单选题) 在处理器的三级调度模型中,一般来讲,哪种调度进行得最频繁?( )
- A. 长程调度
- B. 中程调度
- C. 短程调度
- D. 对换
- (单选题) 下列关于 FCFS 调度算法,错误的是( )
- A. 是最简单的调度算法,易于实现
- B. 既可用于作业调度,也可用于进程调度
- C. 严格按照先来后到次序进行调度,是所有调度算法中最公平和高效的算法
- D. 缺点是没有考虑短进程和进程紧迫程度
- (单选题) 进程调度方式可分为抢占式和非抢占式,下列关于非抢占式调度算法的描述错误的是( )
- A. 当前进程运行完毕时,可触发进程调度
- B. 当前进程阻塞时,可触发进程调度
- C. 当前进程执行原语操作时,可触发进程调度
- D. 当前进程主动放弃处理机
- E. 实现简单,系统开销小,广泛实用于各种类型操作系统
# 16. (单选题) 关于响应比和 HRRN 算法,下列说法错误的是( )
- A. 响应比 =(进程执行时间 + 进程等待时间)/ 进程执行时间
- B. 响应比 = 进程周转时间 / 进程执行时间
- C. HRRN 是介于 FCFS(先来先服务算法)与 SJF(短作业优先算法)之间的折中算法
- D. HRRN 算法中,计算出响应比最低的进程先执行
# &17. (单选题) 在批处理系统中,周转时间的定义是 ( )
- A. 进程的实际运行时间
- B. 进程的等待时间和运行时间之和
- C. 进程的等待时间
- D. 进程被调度进入内存到运行完毕的时间
# &18. (单选题) 下列不是处理器调度算法的目标的是( )
- A. 提高系统资源利用率
- B. 处理器时间分配的公平性
- C. 系统资源分配的平衡性
- D. 保证平均周转时间短
- (单选题) 假设三个进程 P1、P2 和 P3 同时到达,它们的执行时间分别是 T1、T2 和 T3,且 T1<T2<T3。若采用短作业优先 (SJF) 调度算法执行这三个进程,则平均周转时间是( )
- A. T1+T2+T3
- B. (T1+T2+T3)/3
- C. 1/T1+1/T2+1/T3
- D. (3T1+2T2+T3)/3
# &20. (单选题) 有三个进程 P1、P2 和 P3,运行时间均为 50ms。假设时间片大小为 10ms,且不考虑上下文切换的开销。采用时间片轮转(RR)算法执行完这三个进程,其平均完成时间是多少?
- A. 100ms
- B. 50ms
- C. 140ms
- D. 150ms
ans.
BDBCA
ABCAA
DCCCE
DddDc
- (130+140+150)/3
# Chapter10
# Chapter11-I/O 管理
- (单选题) 各类(甚至在同一类中)的 I/O 设备的主要差别包括( )
- A. 错误条件
- B. 数据传送速率
- C. 数据表示
- D. 以上都是
- (单选题) 处理器代表一个进程给 I/O 模块发送一个 I/O 命令;该进程进入忙等待,直到操作完成才能继续执行。这种 I/O 技术被称作( )
- A. 中断驱动 I/O
- B. 程序控制 I/O
- C. DMA
- D. 以上都不是
# &3. (单选题) 下列是面向块的设备是( )
- A. CD-ROM
- B. 打印机
- C. 通信端口
- D. 以上都是
# &4. (单选题) 下列是面向流的设备是( )
- A. 磁盘
- B. USB 智能卡
- C. CD-ROM
- D. 打印机
- (单选题) 人们希望用一种统一的方式处理所有的 I/O 设备,这种设计的重要目标被称为( )
- A. 效率
- B. 目录管理
- C. 通用性
- D. 以上都不是
# 6. (单选题) 在一个支持文件系统的辅助存储设备上管理 I / O 的层次结构中,最接近硬件的层是( )
- A. 设备 I/O 层
- B. 调度和控制层
- C. 目录管理层
- D. 物理组织层
- (单选题) 使用多于两个缓冲区的方案来处理进程需要执行大量 I/O 操作的场景,这种方案被称为( )
- A. 双缓冲
- B. 单缓冲
- C. 循环缓冲
- D. 以上都不是
# 8. (单选题) 磁盘传输的一般时序(即所消耗的时间)包括( )
- A. 等待磁盘设备
- B. 寻道
- C. 旋转延迟
- D. 以上都是
# &9. (单选题) 下列哪种磁盘调度策略提供了最坏的情况,所以可以作为评估其他磁盘调度策略的基准( )
- A. 优先级调度
- B. 随机调度
- C. 先进先出调度
- D. 以上都不是
# &10. (单选题) 为了避免 "磁头臂的黏性",磁盘请求队列被分成多段,一次只有一段被完全处理,这种调度策略为( )
- A. C-SCAN
- B. N-step-SCAN
- C. FIFO
- D. 以上都不是
- (单选题) 如果 I/O 所花费的时间比 CPU 处理时间短得多,则缓冲区 ( ) I. 最有效 Ⅱ. 几乎无效 Ⅲ.均衡
- A. 只有 I
- B. 只有 II
- C. 只有 III
- D. 都不是
# &12. (单选题) 下列 I/O 设备数据传送速率最低的是?
- A. 千兆位以太网
- B. 光盘
- C. 打印机
- D. 鼠标
# 13. (单选题) 操作系统采用缓冲技术,能够减少对 CPU 的( )次数,从而提高资源的利用率
- A. 中断
- B. 访问
- C. 控制
- D. 依赖
# 14. (单选题) 如果一个进程在统计从终端输入的字符 a 的数量,它最适合使用( )
- A. 面向流的单缓冲
- B. 面向块的双缓冲
- C. 面向流的循环缓冲
- D. 面向块的循环缓冲
# &15. (单选题) I/O 通道是一种
- A. I/O 端口
- B. 数据通道
- C. I/O 专用处理器
- D. 软件工具
# &16. (单选题) 某一磁盘请求序列 (磁盘号) 如下:0 23 5 7 11 21 2,按照最短寻道时间优先磁盘调度算法对磁盘请求进行服务,设当前磁头在 4 道上,则磁道臂总移动道数为 ( )
- A. 68
- B. 41
- C. 32
- D. 22
# 17. (单选题) 磁盘进行读写操作时的基本数据单元是 ( )
- A. 块
- B. 扇区
- C. 簇
- D. 字节
- (单选题) 磁盘与主机之间最佳的数据传输方式是 ( )
- A. 无条件
- B. 程序查询
- C. 中断方式
- D. DMA 方式
# 19. (单选题) 活动头磁头对磁盘的存取访问过程中,( ) 所花费的时间最长。
- A. 寻道时间
- B. 随具体情况而定
- C. 旋转定位时间
- D. 数据传输时间
- (单选题)( ) 是直接存取设备
- A. 磁盘
- B. 磁带
- C. 打印机
- D. 键盘显示终端
ans.
DBADC
BCDBB
ADAAC
BBDAA
- 看谁离得近就先过去 1+2+4+9+2+21+2 = 41
# Chapter12 - 文件系统
文件来不及去细细品味了,只能全贴了。加油啦
操作系统学习笔记 - 文件管理 | 花猪の Blog (cnhuazhu.top)
# 1. (单选题) 从记录型的文件角度分析,文件可以被定义为 ( ):
- A. 一个数据的基本元素
- B. 一组相关域的集合
- C. 一组相似记录的集合
- D. 以上都是
# 2. (单选题) 根据本章的文件系统软件架构图,记录型的文件组织包括 ( ):
- A. 堆
- B. 顺序文件
- C. 索引文件
- D. 以上都是
# 3. (单选题) 访问堆文件中的记录可以通过以下哪种方式 ( ):
- A. 穷举查找
- B. 部分索引
- C. 关键字域
- D. 以上都是
# 4. (单选题) 顺序文件在以下哪种场景是最好的 ( ):
- A. 文件中所有记录都需要被处理
- B. 文件记录不需要频繁更新
- C. 文件记录会被频繁查找
- D. 以上都是
# 5. (单选题) 索引顺序文件与顺序文件相似,它增加了两个额外的特性 ( ):
- A. 散列函数和文件索引
- B. 文件索引和溢出文件
- C. 散列函数和溢出文件
- D. 以上都是
# 6. (单选题) 直接或散列文件通常 ( ):
- A. 一次只访问一条记录
- B. 记录长度是固定的
- C. 要求快速访问时使用
- D. 以上都是
# 7. (单选题) 文件目录哪个信息单元,包含了文件创建者的身份等信息 ( ):
- A. 使用信息
- B. 地址信息
- C. 访问控制信息
- D. 以上都是
# 8. (单选题) 固定文件块可能存在以下哪些问题 ( ):
- A. 外部碎片
- B. 内部碎片
- C. 硬件设计造成的差距
- D. 以上都不是
# 9. (单选题) 维护可用磁盘空间信息的数据结构称为 ( ):
- A. 文件分配表
- B. 位表
- C. 磁盘分配表
- D. 以上都不是
# 10. (单选题) 以下哪种磁盘空闲空间管理技术,使用指向每个空闲区的指针和它们的长度值 ( ):
- A. 索引
- B. 链接空闲区
- C. 位表
- D. 空闲块列表
# 11. (单选题) 目录文件存放的信息是( )
- A. 某一文件存放的数据信息
- B. 某一文件的文件目录项
- C. 该目录中所有数据文件目录项
- D. 该目录中所有子目录文件和数据文件的目录项
# 12. (单选题) 下列关于索引表的叙述中,()是正确的
- A. 索引表中每条记录的索引项可以有多个
- B. 对索引文件存取时,必须先查找索引表
- C. 索引表中含有索引文件的数据及其物理地址
- D. 建立索引的目的之一是减少存储空间
# 13. (单选题) 下列文件操作中,哪个文件操作的权限最高?
- A. 执行文件
- B. 读文件
- C. 感知文件
- D. 无法确定
# 14. (单选题) 若一个用户进程通过 read 系统调用读取一个磁盘文件中的数据,则下列关于此过程的叙述中,正确的是( )a. 若该文件的数据不在内存,则该进程进入睡眠等待状态 b. 请求 read 系统调用会导致 CPU 从用户态切换到核心态 c.read 系统调用的参数应包含文件的名称
- A. a, b
- B. a, c
- C. b, c
- D. a, b, c
# 15. (单选题) 关于连续分配,下列说法错误的是?
- A. 连续分配方法是给每个文件分配一段连续的变长分区
- B. 每个文件只需要一个 FAT 表项
- C. 连续分配方式的局部性好,且利用率和分配灵活度高
- D. 可以使用压缩 (compaction) 以减少外部碎片
# 16. (单选题) 存放在磁盘上的文件 ( )
- A. 既可随机访问,又可顺序访问
- B. 只能随机访问
- C. 只能顺序访问
- D. 必须通过操作系统访问
# 17. (单选题) 某文件用作主文件,要求对此文件既能顺序访问,又能随机访问,下列各种形式中最适合的文件形式是 ( )
- A. 顺序文件
- B. 索引顺序文件
- C. 直接文件
- D. Hash 文件
# 18. (单选题) 在类 Unix 操作系统中,某文件的访问模式编码是 744,下列说法正确的是?
- A. 文件所有者可以读、写并执行该文件
- B. 具有访问许可的用户组中的用户可以读、写该文件
- C. 所有用户都可以执行该文件
- D. 若文件所有者将该文件的访问模式编码改为 775,那么所有用户都可以写该文件
# 19. (单选题) 关于堆文件,下列说法错误的是?
- A. 堆文件按照数据到来顺序进行组织
- B. 堆文件中的记录和记录中的域都是可变长的
- C. 堆文件中不同记录中的域一定是相同的
- D. 堆文件插入新记录很简单,但是查找记录需要穷尽式搜索
# 20. (单选题) 将连续分配、链式分配、基于块的索引分配和基于可变长度分区的索引分配 4 者进行比较,下列说法错误的是?
- A. 连续分配方式需要预分配
- B. 链式分配的分区大小是固定的
- C. 基于块的索引分配所需要的分配时间相对较短
- D. 基于可变长度分区的索引分配的局部性较差
CDAAB
DaBCb
DbBac
aBACd