并发相关

操作系统中并发设计的问题:

1.进程间通信
2.资源共享与竞争(内存,文件,I/O等)
3.多个进程活动的同步
4.给进程分配处理器时间
多道程序设计技术:管理单处理器系统中的多个进程
多处理器技术:管理多处理器系统中的多个进程
分布式处理器技术:管理多台分布式计算机系统中多个线程的执行。

并发相关术语
原子操作一个函数或动作由一个或多个指令的序列实现,指令序列要么都执行,要么都不执行,没有其他进程能看到中间状态或中断此操作。原子性保证了并发进程的隔离
临界区一段代码,在这段代码中进程将访问共享资源,当另外一个进程已在这段代码中运行时,这个进程就不能再这段代码中执行
死锁两个或两个以上的进程因每个进程都在等待其他进程做完某些事情而不能继续执行的情形
活锁两个或两个以上的进程为响应其他进程的变化而持续改变自己的状态但不做有用的工作的情形
互斥当一个进程在临界区访问共享资源时,其他进程不能进入该临界区访问任何共享资源的情形
竞争条件多个线程或进程在读写一个共享数据时,结果依赖于他们执行的相对时间的情形
饥饿一个可运行进程尽管能继续执行,但被调度程序无限期地忽视,而不能被调度执行的情形
常用的并发机制
信号量用于进程间传递信号的一个整数值。在信号量上只可以进行三种操作,即初始化,递减,递增,这三种操作都是原子操作。递减操作用于阻塞一个进程,递增操作用于解除一个进程的阻塞。信号量也称为计数信号量或一般信号量
二元信号量只取0值和1值的信号量
互斥量类似于二元信号量,关键区别在于为其加锁的进程(设定值为0)和为其解锁的进程(设定值为1)必须为同一个进程
条件变量一种条件变量,用于阻塞进程或线程,直到特定的条件为真
管程一种编程语言结构,它在一个抽象数据类型中封装了变量,访问过程和初始化代码。管程的变量只能由管程自身的访问过程访问,每次只能有一个进程在管程中执行。访问过程即临界区。管程可以有一个等待进程队列
事件标志用作同步机制的一个内存字
信箱/消息两个进程交换消息的一种方法,也可用于同步
自旋锁一种互斥机制,进程在一个无条件循环中执行,等待锁变量的值可用

管程及其特点:

管程是由一个或多个过程、一个初始化序列和局部数据组成的软件模块。
特点:
1.局部数据变量只能被管程的过程访问,任何外部过程都不能访问
2.一个进程通过调用管程的一个过程进入管程
3.在任何时候,只能有一个进程进入管程执行,调用管程的任何其他进程都被阻塞,以等待管程可用

进程交互时,必须满足两个基本要求:同步和通信。为实施互斥,进程间需要同步;为实现合作,进程间需要通信。

进程间传递数据的方法:信号量、管程、消息队列

信号量:信号量为实施互斥和进程间的合作,提供了一种原始但功能强大且灵活的工具。但是使用信号量设计一个正确的程序是很困难的,难点在与semWait和semSignal操作可能分布在整个程序中,而很难看出信号量上的这些操作所产生的整体效果
管程:管程是一种程序设计语言结构,它提供的功能与信号量相同,但更容易控制。
消息队列:消息队列也可以实现上述功能,它可在分布式系统、共享内存的多处理器系统和单处理器系统中实现

互斥

互斥:对一组并发进程,一次只有一个进程能够访问给定的资源或执行给定的功能。
支持互斥的方法:
1.中断禁用
2.专用机器指令
3.信号量和消息队列

经典问题:

1.生产者/消费者问题
2.读者/写者问题(读者优先或者写者优先)

死锁

死锁产生的条件:

1.互斥。
一次只有一个进程可以使用一个资源,其他进程不能访问已分配给其他进程的资源
2.占有且等待
当一个进程等待其他进程时,继续占有已分配的资源
3.不可抢占
不能强行抢占系统已占有的资源
4.循环等待
存在一个闭合的进程链,每个进程中至少占有此链中下一个进程所需的一个资源

死锁的可能性死锁的存在性
1.互斥1.互斥
2.不可抢占2.不可抢占
3.占有且等待3.占有且等待
4.循环等待
处理死锁的方法:

1.预防死锁
采取某种策略消除条件1~4中的某个条件的出现
2.避免死锁
基于资源分配的当前状态做动态选择来避免死锁
3.检测死锁
试图检测死锁的存在并从死锁中恢复

进程间通信和同步的机制:管道、信号、信号量、共享内存、消息队列

管道,消息队列和共享内存提供了进程间传递数据的方法,而信号和信号量用于触发其他进程的行为
消息队列:消息是有类型的一段文本。消息发送者指定每个发送的消息的类型,类型可被接收者用作选择的依据。接收者可按先进先出的顺序接收消息
共享内存:在虚存中多个进程共享一个公共内存块。(共享内存是进程间通信手段中最快的一种)
信号:信号是用于向一个进程通知发生异步事件的机制。

更多内容见:进程间通信及锁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值