例题1

1、题目解析
A. 固定分区支持多道程序设计,算法简单,但存储碎片多
这个说法是正确的。
-
固定分区: 系统启动时将内存划分为若干个大小固定的区域。
-
支持多道程序: 每个分区可以装入一个独立的程序(作业),从而实现多道程序并发执行。
-
算法简单: 分配算法非常简单,只需查找一个足够大的空闲分区即可。
-
存储碎片多 : 会产生内部碎片。如果一个程序大小为 50KB,但被装入了一个 100KB 的分区,那么剩下的 50KB 空间就被浪费了,且不能被其他程序使用,这就是内部碎片。
B. 可重定位分区能消除碎片,但用于存储器紧缩处理的时间长
这个说法是正确的。
-
可重定位分区 : 也称为动态分区。内存不预先划分,而是根据进程的需要,动态地从可用内存中划出一块连续的空间。
-
产生外部碎片 : 当进程运行结束释放内存后,会产生许多不连续的、小的空闲块,这些就是外部碎片
-
存储器紧缩: 为了解决外部碎片,操作系统可以执行"紧缩"操作,即移动所有正在运行的进程,使它们在内存中连续,从而将所有小的空闲块合并成一个大的连续空闲区。
-
能消除碎片: 紧缩操作确实可以消除外部碎片。
-
时间长: 紧缩需要移动大量内存中的数据,这是一个非常耗时的 I/O 操作,期间所有程序都必须暂停,因此系统开销很大。
C. 分页式存储允许动态链接和装入,能消除碎片,支持虚拟存储
这个说法是不正确的。
-
分页式存储: 将进程的逻辑地址空间和物理内存都划分为大小固定的"页"和"页框",以页为单位进行分配。
-
能消除外部碎片 : 是的,因为它以页为单位分配,不要求连续内存,所以没有外部碎片。
-
会产生内部碎片 : 是的,一个进程的最后一页通常不会被完全占满,剩余的部分就构成了内部碎片。所以说它"能消除碎片"是不准确的,它只能消除外部碎片。
-
支持虚拟存储: 是的,分页是实现虚拟存储技术的基础。
-
允许动态链接和装入 : 这是分段式存储的优点。 分页的基本单位是大小固定的"页",这是一个物理概念,与程序的逻辑结构(如函数、模块)无关。而动态链接和装入 是基于程序的逻辑模块 进行的,它要求内存管理方案能够支持按逻辑单位进行映射和保护,这正是分段式存储的核心优势。分页式存储不便于实现动态链接。
D. 分页式存储支持虚拟存储,但不能以自然的方式提供存储器的共享和存取保护机制
这个说法是正确的。
-
支持虚拟存储: 正确,分页是虚拟存储的基础。
-
不能以自然的方式提供共享和保护 : 正确。因为"页"是物理划分,它的大小和边界与程序的逻辑结构(如一个函数、一个数据块)完全无关。我们通常希望按"逻辑单位"来进行共享和保护(例如,共享一个代码段,保护一个数据段)。分段式存储的"段"就是按逻辑单位划分的,因此能非常自然地实现共享和保护。而分页要实现共享,需要多个进程的页表都指向同一个物理页框,操作相对不那么直观和"自然"。
2、最终答案:C
例题2

1、题目解析
这道题考察的是对进程 生命周期的基本理解。题目先给出了进程的静态组成(程序段、PCB、数据空间),然后询问一个用户进程被建立 (创建) 后,它的命运是什么。
A. 便一直存在于系统中,直到被操作人员撤销
- 这个说法是错误的。 进程的生命周期远比这复杂。虽然操作人员(或用户)可以通过命令(如 kill)来终止一个进程,但这只是进程结束的一种 方式。绝大多数进程是随着其任务的完成而自行正常结束的,并不需要人工干预。例如,你运行一个计算器程序,当你关闭计算器窗口时,它对应的进程就结束了。
B. 随着作业运行正常或不正常结束而撤销
-
这个说法是正确的。 这准确地描述了进程生命周期的终点。一个"作业"(Job,可以理解为一个用户任务,它可能包含一个或多个进程)的运行最终必然会有一个结果:
-
正常结束: 程序完成了它所有的任务(例如,一个文件复制程序成功复制完文件),然后调用退出指令,对应的进程被正常撤销。
-
不正常结束 (异常终止): 程序在运行中遇到了无法处理的错误(如除以零、非法内存访问),或者被操作系统或其他进程强行终止。在这种情况下,进程也会被撤销。
C. 随着时间片轮转而撤销与建立
-
这个说法是错误的。 这混淆了进程调度 和进程生命周期。
-
时间片轮转 是操作系统进行进程调度 的一种策略,用于在多个就绪状态的进程之间公平地分配 CPU 时间。
-
当一个进程的时间片用完后,它只是从运行 状态切换回就绪 状态,让出 CPU 给下一个进程。它的 PCB、内存等所有资源都依然存在,并没有被"撤销"。它只是在"排队"等待下一次轮到它运行。
-
进程的创建和撤销是比状态切换"重"得多的操作
D. 随着进程的阻塞或唤醒而撤销与建立
-
这个说法是错误的。 这混淆了进程状态转换 和进程生命周期。
-
阻塞 / 睡眠: 当一个进程需要等待某个事件(如等待用户输入、等待文件读写完成)时,它会进入阻塞状态,暂时放弃 CPU。
-
唤醒: 当它等待的事件发生后,操作系统会将它从阻塞状态切换回就绪状态,让它可以重新参与 CPU 的竞争。
-
在整个"阻塞 -> 唤醒"的过程中,进程始终存在于系统中,其资源被保留,远未到"撤销"的程度。这只是进程在其生命周期中正常的状态转换。
2、最终答案:B
例题3

1、题目解析



A. 唤醒:就绪 → 运行
-
这个说法是错误的。
-
唤醒 操作的对象是处于阻塞 状态的进程。当一个进程等待的事件发生时,操作系统会将其唤醒,使其状态从阻塞 变为就绪。
-
从就绪 状态变为运行 状态的过程是由调度程序 完成的,这个操作称为调度 或分派。
- 因此,正确的状态转换应该是:唤醒:阻塞 → 就绪 ,以及 调度:就绪 → 运行。
D. 进程具有引用局部性时,可降低页面出错的频率
-
这个说法是正确的。
-
引用局部性原理 : 指的是程序在运行时,对存储器的访问倾向于聚集在一定的时空范围内。它包括:
-
时间局部性: 最近被访问过的内存位置,很可能在不久的将来再次被访问(例如,循环中的指令和变量)。
-
空间局部性: 如果一个内存位置被访问,那么它附近的内存位置也很可能在不久的将来被访问(例如,顺序执行的指令、数组元素)。
-
页面出错 : 在虚拟存储系统中,当程序试图访问一个不在物理内存中的页面时,会发生页面出错(缺页中断)。此时,操作系统需要从磁盘将该页面调入内存。
-
关系 : 正是因为程序具有引用局部性,虚拟存储系统才能高效工作。当一个页面被调入内存后,由于局部性原理,程序很可能会在接下来的一段时间内集中访问这个页面内 的数据和指令,而不会频繁地去访问其他不在内存中的页面 。这就大大降低了发生页面出错的频率。如果程序访问内存是完全随机、没有局部性的,那么虚拟存储将会因为频繁的磁盘I/O而变得效率极低。
2、最终答案:D
例题4

1、题目解析
|---------------|-------------------|-------------------------------|
| 特性 | 程序 | 进程 |
| 本质 | 静态的指令和数据的集合。 | 动态的一次程序执行过程。 |
| 存在形式 | 存储在磁盘等外存上的文件。 | 存在于内存中,有生命周期。 |
| 生命周期 | 永久的(只要不被删除)。 | 暂时的(从创建到终止)。 |
| 资源占用 | 不占用系统动态资源。 | 资源分配的基本单位(占用CPU、内存、I/O等)。 |
| 与操作系统的关系 | 只是操作系统管理的文件。 | 是操作系统调度和管理的基本实体。 |
| 与进程/程序的关系 | 一个程序可以对应多个进程。 | 一个进程在生命周期中可以执行不同的程序。 |
A. 进程是一个程序关于某个数据集的一次运行
-
这个说法是正确的。 这是对进程非常经典和准确的定义之一。
-
程序: 是静态的指令集合,就像一份菜谱。
-
数据集: 是程序运行时需要处理的数据,就像做菜用的食材。
-
一次运行: 是动态的执行过程,就像厨师按照菜谱、使用食材、正在厨房里做菜的这个活动。
-
进程: 就是这个包含了菜谱、食材并且正在进行中的"做菜活动"。同一个菜谱(程序)可以用不同的食材(数据集)做很多次菜(多次运行,多个进程)。
-
B. 进程是系统分配资源的基本单位,而程序不是
- 这个说法是正确的。 这是进程在操作系统中的核心角色之一。当一个程序被执行时,操作系统会为其创建一个进程,并为这个进程分配一系列资源,如内存空间、CPU时间片、文件句柄、I/O设备等。程序本身只是一个静态文件,它不占用这些动态资源。
C. 进程和程序是一种一一对应的关系
-
这个说法是不正确的。 进程和程序之间是多对多 或一对多 的关系,但不是一一对应。
-
一个程序可以对应多个进程: 这是最常见的情况。例如,你可以同时打开多个 Word 文档窗口,每一个窗口都对应一个独立的 Word 进程,但它们都源自同一个 Word 程序文件。你也可以在命令行多次运行同一个程序,每次都会创建一个新的进程。
-
一个进程可以执行多个程序: 在某些操作系统(如 Unix/Linux)中,一个进程可以通过 exec() 系列的系统调用,将其当前执行的程序替换成一个新的程序,而进程的ID(PID)保持不变。
D. 一个程序可以包含多个进程
- 这个说法是正确的。 这里的"包含"可以理解为"派生"或"创建"。一个正在运行的程序(即一个主进程)可以通过系统调用(如 fork())来创建新的子进程,以实现并发或并行处理。例如,Chrome 浏览器就是一个典型的多进程程序,它的主进程会为每个标签页、每个扩展程序创建独立的子进程,以提高稳定性和安全性。
2、最终答案:C
例题5

1、题目分析
这道题考察的是在单处理机(单核CPU)系统中,多个进程可能处于的状态分布。我们需要找出在某个瞬间,处于就绪状态 的进程最多 和最少可能有多少个。
已知信息:
-
系统类型 : 单处理机系统 (意味着在任意时刻 ,最多只能有一个进程在CPU上执行)。
-
进程总数: 8 个用户进程。
-
时间点 : 在非管态(用户态)的某一时刻 (这意味着有一个用户进程正在CPU上运行)。
-
目标状态: 就绪状态。
CPU 的工作状态:
在一个现代操作系统中,CPU 在任何时候都不会是空闲的 (除非整个系统处于"空闲"或"休眠"状态)。它总是在执行指令。这些指令要么属于用户进程 ,要么属于操作系统内核。
-
当 CPU 执行用户进程的指令时 ,CPU 处于用户态 ,也叫非管态 。此时,有一个用户进程处于运行状态。
-
当 CPU 执行操作系统内核的指令时 , CPU 处于内核态 ,也叫管态。这种情况发生在:
-
用户进程发起了系统调用(比如读文件)。
-
发生了中断(比如硬盘完成了读写)。
-
发生了异常(比如除以零)
-
分析最多有多少个就绪进程:
为了让就绪进程数量最大化,我们需要假设其他状态的进程数量尽可能少。
最理想的情况是:除了那个正在运行的进程外,所有其他进程都没有在等待I/O等事件,它们都已经准备好,只等着CPU空闲下来就可以运行。
因此,这 8 个进程的分布是:
- 1 个处于运行状态。
- 剩下的 8 - 1 = 7 个都处于就绪状态。
- 0 个处于阻塞状态。
所以,处于就绪状态的用户进程最多 有 7 个。
分析最少有多少个就绪进程:
最极端的情况是:除了那个正在运行的进程外,所有其他进程都在等待某个事件(例如,都在等待用户输入,或者都在等待文件读写)。
因此,这 8 个进程的分布是:
- 1 个处于运行状态。
- 剩下的 8 - 1 = 7 个都处于阻塞状态。
这样,就绪队列就是空的。
2、最终答案:B
例题6

1、题目分析

2、最终答案:B
例题7

1、题目分析

2、最终答案:D
例题8

1、题目分析
在时间片固定的情况下,响应时间 T 大致可以估算为 T ≈ N * q,其中 N 是用户数,q 是时间片长度。因此,N (用户数) 越大,T (响应时间) 就越长。可以用一个简单的比喻来理解:一个医生(CPU)给一群病人(用户进程)看病,每个病人每次最多看2分钟(时间片)。
内存大小主要影响的是系统能够同时容纳的进程数量 以及进程的换入换出。 内存大小是影响性能的重要因素 ,但它不是最直接的、决定轮转一周所需时间的核心变量。题目的核心模型是"固定时间片的轮转调度 "。在这个模型中,用户数 是直接决定响应时间(等待轮次)的首要因素 。内存大小是影响这个模型能否高效运行的底层条件。因此,相比于 A,C 和 D 不是最直接的答案。
2、最终答案:A
例题9

1、题目分析
A. 共享资源
-
定义 : 指可以同时被多个进程访问的资源。
-
分析 : 这个定义与题干的"只允许一个进程访问"正好相反。共享资源的例子包括可重入的代码 (纯代码段)、只读的数据文件等。多个进程可以同时读取这些资源而不会产生冲突。因此 A 错误。
B. 独占资源
-
定义 : 指一个资源在整个生命周期 或很长一段时间内 被分配给某一个固定的进程,不能被其他进程使用。
-
分析 : 这个概念强调的是资源的长期归属 ,而不是短时间内的访问方式。例如,一台打印机在打印一个长文档的过程中,可以被认为是该打印进程的"独占资源"。但题干描述的是"在一段时间内 ",强调的是访问时的互斥性,而不是归属性。临界资源是独占资源的一种,但"临界资源"这个术语更精确地描述了题干中的访问规则。
C. 临界资源
-
定义 : 指一次仅允许一个进程使用的资源。这种资源因为其特性,如果被多个进程同时访问,可能会导致数据不一致或其他错误。
-
分析 : 这完美地匹配 了题干的描述:"在一段时间内,只允许一个进程访问的资源"。为了保护临界资源,进程在访问它之前,必须先进入一个叫做临界区 的代码段,并在这个区域内实现互斥。典型的临界资源包括打印机、共享的变量、共享的数据缓冲区、共享文件等。
D. 共享区
- 定义 : 指一块可以被多个进程共同访问的内存区域。
- 分析 : 共享区是一种具体的资源 ,而不是对一类资源的定性描述 。共享区本身可以是一个临界资源 (如果多个进程需要对它进行读写操作,就需要互斥保护),也可以是一个共享资源(如果所有进程都只读取它)。因此,D 是一个具体的例子,而不是题干所问的通用名称。
2、最终答案:C
例题10

1、题目分析
