临界资源与共享资源

1. 概念层级与关系

因此,你问题的核心,就是辨析“互斥共享”和“同时共享”这两种模式。

2. 两种共享方式的深度辨析

这两种共享方式的根本区别在于:在“任一时刻”,资源是否允许被一个以上的进程访问。

2.1 临界资源 (互斥共享方式)

官方定义: 在一段时间内,只允许一个进程访问的资源。访问该资源的代码段称为临界区。

核心解读:

图示与实例:以打印机为例

假设有进程 P1, P2, P3 都需要打印文件。打印机本身是一个典型的临界资源。

     | P1使用 |         | P2使用 |      | P3使用 |
-----+--------+---------+--------+------+--------+-----> 时间轴
     t1       t2        t3       t4     t5       t6

实现机制:

这种“共享”是由操作系统通过同步互斥机制(如我们之前讨论的信号量和P、V操作)来管理的。对于打印机这类设备,通常还会采用 SPOOLing 技术 (假脱机技术),将所有进程的打印请求先放入一个缓冲区(磁盘上的一个队列),然后由打印机进程依次从队列中取出并打印。这本质上就是将并发请求串行化,以适应临界资源的互斥属性。

常考点:

2.2 同时共享资源

官方定义: 在一段时间内,允许多个进程“同时”访问的资源。

核心解读:

实例:以只读文件为例

假设一个可重入的代码文件(如库函数)或一个公共的只读数据文件(如配置文件)被加载到内存中。进程 P1, P2, P3 都需要执行这段代码或读取这份数据。

P1读取 --> |              |
P2读取 --> | 共享的只读文件 | <-- 在同一时刻 t
P3读取 --> |              |

为什么可以同时?

关键在于访问的性质。如果所有访问都是“只读”的,不改变资源内容和状态,那么并发访问就是安全的。一旦有任何一个进程需要“写入”,那么这个资源在该“写入”操作期间就退化为了一个临界资源,需要进行互斥处理。(这也是“读者-写者问题”的由来,该问题是考研高频考点)。

常见的可同时共享资源:

3. 总结与辨析表格

为了让你更清晰地掌握其区别,我为你整理了以下表格:

特性 临界资源 (互斥共享) 同时共享资源
本质定义 一次仅允许一个进程访问的资源 允许一次有多个进程访问的资源
访问属性 互斥性 (Mutual Exclusion) 并行性 (Parallelism/Concurrency)
“任一时刻”的访问 仅一个进程 可多个进程
“某段时间内”的共享 通过分时复用实现,进程串行、交替地使用 进程并发或并行地使用
实现方式 需要同步互斥机制(如P/V操作、锁)来管理和调度 无需特殊的互斥控制(当访问性质为只读时)
典型实例 打印机、磁带机、被多个进程修改的共享变量、文件 可重入代码、只读文件、ROM

4. 关于“共享设备”的补充说明

“共享设备”是一个广义的术语。一个设备是临界资源还是同时共享资源,取决于其物理特性和使用方式。