操作系统——进程同步与互斥

进程同步与互斥

简介

多线程并发会导致资源竞争。

同步即协调多线程对共享数据的访问,保证任何时刻都只能有一个线程执行临界区代码。

互斥是解决进程同步的方式。

进程间合作

独立进程是指一个进程在运行过程中不会与其他进程进行交互的进程。

但是,进程在运行的过程中不可避免的要进行进程间合作。

进程合作的优势:

  • 共享资源
    • 一台电脑,多个用户
    • 一个银行存储余额,多台ATM机
    • 嵌入式系统(机器人控制:手臂和手的协调)
  • 加速
    • I / O操作和计算可重叠
    • 多处理机——将程序分成多个部分执行
  • 模块快
    • 将大程序分解成小程序
      • 如编译系统。
    • 视系统易于扩展

进程间合作的问题

进程间合作要避免不确定性和不可重现性。由于进程调度的不确定性,因此进程的一个操作可能被打断。

进程间通信要解决三个问题:

  1. 一个进程如何将信息传递给另一个进程
  2. 确保多个进程在关键活动中不会交叉,即进程互斥问题。
  3. 保证正确的访问顺序,即进程同步问题。

竞争条件

竞争条件是说多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序。

案例:

  • 通过调用函数fork来创建一个进程。
    • new_pid = next_pid++;
    • 这一条语句翻译成汇编代码会是四句,因此要把他们当成一个原子操作去执行。
  • 两个程序并发执行访问并更改一个变量x。

原子操作

原子操作是指一次不存在任何中断或者失败的执行。

  • 该执行成功结束
  • 或者根本没有执行
  • 并且不应该出现任何部分执行的状态

但是实际上操作往往不是原子的

  • 有些看上去是原子操作,但是实际上不是,如x++,实际上此条语句由三条汇编语言组成。
  • 有时甚至连单条机器指令都不是原子的,如Pipiline、super-scalar、out-of-order、page fault等。

操作系统需要利用同步机制在进程并发执行的同时保证一些操作是原子操作。

临界区相关的几个概念

<
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值