临界资源与共享资源

临界资源与共享资源

临界资源与共享资源

1. 概念层级与关系

共享资源 (Shared Resource): 这是总称,指系统中可供多个进程共同使用的资源。其核心目的是提高资源利用率。根据其共享方式的不同,可进一步细分为以下两种。

互斥共享资源 (Mutually Exclusive Shared Resource): 这就是我们通常所说的 临界资源 (Critical Resource)。

同时共享资源 (Simultaneous Shared Resource)

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

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

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

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

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

核心解读:

“任一时刻” (At any single moment): 严格限制只有一个进程能正在使用该资源。如果进程A正在使用打印机,那么在同一微秒,进程B绝对不能使用。这是物理或逻辑属性决定的,强行违背会导致数据错乱或设备损坏。

“某段时间内” (Over a period of time): 多个进程可以通过分时复用 (Time-Division Multiplexing) 的方式来“共享”该资源。它们在时间上是交替、串行地使用该资源,而不是真正地“同时”使用。

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

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

| P1使用 | | P2使用 | | P3使用 |

-----+--------+---------+--------+------+--------+-----> 时间轴

t1 t2 t3 t4 t5 t6

在 t1 到 t2 这段时间的任意时刻: 只有 P1 在向打印机发送数据,P2 和 P3 必须等待。

在 t3 到 t4 这段时间的任意时刻: 只有 P2 在使用,P1 已用完,P3 仍在等待。

在 t1 到 t6 这段较长的时间内: 我们看到 P1, P2, P3 都使用了打印机,完成了各自的任务。从宏观用户的角度看,打印机这个设备被“共享”了。

实现机制:

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

常考点:

临界资源是引发进程同步与互斥问题的根源。

所有关于P、V操作、死锁的讨论,都是围绕着如何管理对临界资源的访问。

常见的临界资源:物理设备(打印机、扫描仪)、共享内存中由多个进程共同读写的变量、共享文件、消息队列等。

2.2 同时共享资源

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

核心解读:

“任一时刻” (At any single moment): 允许有多个进程正在访问该资源。

“某段时间内” (Over a period of time): 自然也允许多个进程访问。这里的“共享”是真正的并行或并发访问,而非时间上的交替。

实例:以只读文件为例

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

P1读取 --> | |

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

P3读取 --> | |

在任意时刻 t: P1 可以读取文件的A部分,P2 可以读取文件的B部分,P3 可以读取文件的C部分。它们的访问行为因为不改变资源状态,所以互相之间没有冲突。它们是真正在“同时”访问。

为什么可以同时?

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

常见的可同时共享资源:

可重入代码 (Reentrant Code)。

只读的数据文件或内存区域。

3. 总结与辨析表格

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

特性

临界资源 (互斥共享)

同时共享资源

本质定义

一次仅允许一个进程访问的资源

允许一次有多个进程访问的资源

访问属性

互斥性 (Mutual Exclusion)

并行性 (Parallelism/Concurrency)

“任一时刻”的访问

仅一个进程

可多个进程

“某段时间内”的共享

通过分时复用实现,进程串行、交替地使用

进程并发或并行地使用

实现方式

需要同步互斥机制(如P/V操作、锁)来管理和调度

无需特殊的互斥控制(当访问性质为只读时)

典型实例

打印机、磁带机、被多个进程修改的共享变量、文件

可重入代码、只读文件、ROM

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

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

打印机: 是共享设备,但其管理方式是作为临界资源。

硬盘: 情况更复杂。从物理上讲,磁盘的磁头在“任一时刻”只能在一个位置读写,因此物理设备本身是临界资源。但从逻辑上看,操作系统通过文件系统可以将磁盘空间划分为不同的文件,只要进程 P1 和 P2 访问的是不同的文件,它们的访问请求就可以在宏观上并发进行(由磁盘调度算法进行优化),看起来像是“同时共享”。但如果 P1 和 P2 同时写同一个文件,那这个文件就成了临界资源。

相关推荐

我男朋友见到我那个就硬,有时候严重起来持续1.2个小时硬着,怎么办?
昔日“手机中的战斗机”:谁还记得波导手机?
365sport365中文版

昔日“手机中的战斗机”:谁还记得波导手机?

📅 07-06 👁️ 3188
大话西游2天杀星攻略,最简单杀法打冰块速拿奖励
365sport365中文版

大话西游2天杀星攻略,最简单杀法打冰块速拿奖励

📅 08-02 👁️ 9310