操作系统学习--进程同步与死锁
一、进程同步1、进程同步概念的引入多进程或多线程并发执行时共享资源的访问可能导致数据不一致或竞态条件。进程同 步用于协调这些并发执行的实体确保有序访问共享资源避免冲突。2、临界区问题临界区是代码中访问共享资源的片段需满足以下条件互斥同一时间仅允许一个进程进入临界区。进步若无进程在临界区且存在请求需快速选择进程进入。有限等待进程等待进入临界区的时间必须有限二、进程同步机制1、信号量机制信号量是用于进程同步的整数变量支持两种原子操作P操作wait若信号量值 ≤ 0则阻塞否则减1。V操作signal将信号量值加1唤醒等待进程。示例代码伪代码semaphore mutex 1; // 初始化信号量 // 进程进入临界区前 P(mutex); // 临界区代码 V(mutex);三、死锁1、死锁概述死锁指多个进程因竞争资源而相互阻塞无法继续执行。必要条件包括互斥资源一次仅能被一个进程占用。占有并等待进程持有资源并等待其他资源。非抢占已分配资源不可被强制剥夺。循环等待存在进程资源的循环等待链。2、死锁预防通过破坏死锁必要条件实现破坏互斥允许资源共享如只读文件。破坏占有并等待进程必须一次性请求所有资源可能导致资源浪费。破坏非抢占允许强制释放资源需系统支持。破坏循环等待按固定顺序申请资源如资源编号递增。3、死锁避免--银行家算法银行家算法通过动态检测资源分配状态避免死锁。需维护以下数据结构Available当前可用资源数。Max各进程最大需求资源。Allocation已分配资源。Need各进程还需资源Need Max - Allocation。安全序列检查步骤查找进程 ( P_i ) 满足 ( \text{Need}_i \leq \text{Available} )。假设 ( P_i ) 完成释放其资源更新 ( \text{Available} )。重复上述步骤若所有进程可完成则系统安全。4、死锁的检测与解除检测方法资源分配图算法检测图中是否存在环。矩阵法类似银行家算法定期检查系统状态。解除方法终止进程强制终止部分或全部死锁进程。资源剥夺抢占资源并分配至其他进程。