一、今日学了啥?
进程管理核心内容包括:同步与互斥,其中互斥通过信号量(初值1)实现临界资源独占访问,同步通过信号量(初值为资源数)协调任务执行顺序;PV操作是实现同步互斥的原语,P操作申请资源,V操作释放资源;前驱图描述任务间的先后依赖关系,进程资源图反映进程与资源的分配/请求状态。
二、重点/要记住的!
用🔺标关键概念,❌标易混淆点(1-3条):
🔺 结构化方法的核心是“自顶向下、逐步分解”(易考选择题)
❌ 注意:UML是建模工具,不是开发方法本身(教材P50强调)
-
🔺 同步和互斥
-
临界资源:各进程间需要以互斥方式对其进行访问的资源
-
临界区:进程中对临界资源实施操作的那段程序(本质是程序代码)
-
互斥:某(临界)资源在同一时间内只能由一个任务单独使用,使用时需要加锁,使用后解锁才能被其它任务使用,如打印机
-
同步:多个任务可以并发执行,只在速度上存在差异,在一定情况下停下等待,不存在资源是否单独或共享问题,如A、B相约到电影院会合看电影
-
互斥信号量:对临界资源采用互斥访问,使用互斥信号量后对其它进程无法访问,初值为1
-
同步信号量:对共享资源的访问控制,初值一般为共享资源的数量
-
-
🔺 PV操作
-
P操作:申请资源,资源不足则等待。
-
V操作:释放资源,唤醒等待的进程。
-
关键:
-
原子性:P/V操作不能被中断,否则会出错(比如两个进程同时抢资源)。
-
成对使用:每个P必须对应一个V,否则资源无法释放(死锁)。
-
-
信号量类型:
-
二进制信号量(0/1):类似互斥锁(Mutex)。
-
计数型信号量:支持多个资源(如缓冲区大小)。
-
-
-
🔺 前驱图
-
定义:用来表示哪些任务可以并行执行,哪些任务之间有顺序关系
-
-
🔺 进程资源图
-
定义:用来表示进程和资源之间的分配和请求关系
-
三、今天的小收获/卡住的地方
PV操作的理解
PV操作是操作系统中用来管理多个进程共享资源**的工具,就像“红绿灯”一样,控制谁先用、谁后用。
-
P操作(Proberen,荷兰语“尝试”):
就像你去餐厅吃饭,先看有没有空位。- 如果有空位(信号量 > 0),你可以坐下,空位数减1。
- 如果没空位(信号量 = 0),你就得排队等,直到有人离开。
-
V操作(Verhogen,荷兰语“增加”):
就像你吃完饭离开,把空位还给系统。- 空位数加1,如果有排队的人,就叫他们来坐下。
信号量(Semaphore):一个“计数器”,记录可用资源的数量。
比如:一个图书馆有3个座位,信号量初始为3。
- 进程A来:执行P操作,信号量从3→2,坐下。
- 进程B来:P操作,信号量2→1,坐下。
- 进程C来:P操作,信号量1→0,坐下。
- 进程D来:P操作,信号量0→-1,被阻塞,只能等别人离开。
- 进程A离开:执行V操作,信号量0→1,唤醒D,D坐下。
场景:生产者-消费者问题
- 生产者:生产商品,放入缓冲区。
- 消费者:从缓冲区取出商品消费。
- 信号量:
empty
:缓冲区空位数(初始为N)。full
:缓冲区已占位数(初始为0)。
流程:
- 生产者想放商品:
- 执行
P(empty)
(确保有空位),再V(full)
(通知消费者有商品)。
- 执行
- 消费者想取商品:
- 执行
P(full)
(确保有商品),再V(empty)
(释放空位)。
- 执行
效果:避免缓冲区溢出或空取,保证同步。
四、明天学啥?
明天学习进程管理死锁和银行家算法
像实干家一样思考问题,像思想家一样付诸行动。
愿你我共同进步!