操作系统-5【并发性:互斥和同步】

本文探讨了并发编程的基本原理,包括临界区、死锁、活锁和竞争条件等概念。重点讲解了互斥的实现,如硬件的中断禁止和专属指令,以及软件层面的信号量、管程和消息传递机制。同时,通过生产者/消费者问题和读者/写者问题展示了同步在实际问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5.1 并发的原理principles of concurrency

在这里插入图片描述

0. 一些术语

  1. 临界区:
    critical section

一段代码,在这段代码中 进程将共享资源,当另外一个进程已在这段代码中运行时,这个进程就不可在这段代码中执行。同时只允许一个进程访问临界区

  1. 死锁:
    deadlock
    两个或以上的进程 因每个进程都在等待其他进程做完某事而不能继续执行。
    竞争、协作导致的都不能向后执行,若无外力干预,则都面临饿死。

  2. 活锁
    livelock

两个或两个以上的进程为响应其他进程中的变化持续改变自己的状态但不做有用的工作情形

  1. 互斥:
    mutual exclusion

当一个进程在临界区访问共享资源时,其他进程不能进入临界区访问共享资源的情形

  1. 竞争条件:
    race condition

多个线程或进程在读写一个共享数据时,结果依赖于他们执行的相对时间情形

  1. 饥饿
    starvation

一个可运行的进程尽管能继续执行,但被调度程序无限期的忽视,而不能被调度执行的情形。

1. 例子

在这里插入图片描述
echo 共享过程

  1. 全局共享资源危险
  2. 难以对资源做到全局优化分配
  3. 难以定位程序错误,错误的产生可能是由于代码出错,也可能是由于进程与其余进程 协作出错,资源分配出错

2. 竞争条件

race condition
竞争条件发生在多个进程 或 线程对共享数据进行读写操作,因此数据的最终值取决于 进程指令 对共享数据的操作顺序

3. 操作系统关心的

在这里插入图片描述

4.进程的交互

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值