操作系统——进程管理(2)

一、进程间通信

进程间通信(Inter-Process Communition,IPC)就是在进程之间的信息相互传递。现代操作系统一般都是多道程序技术,同时有多个进程运行,这些正在的进程有两种关系:一是相互独立,二是相互关联。

问题:

1、进程之间如何进行通信,也就是如何传递信息

2、当两个或者多个进程访问共享资源的时候怎么保证可以进程顺利运行。

3、当进程之间存在某种依赖关系的时候,如何确保进程的运行顺序,这个问题是进程间的同步问题。

1、进程间通信方式

低级通信:进程间只能传递很少量的控制信息,如信号量和信号
高级通信:进程间可以传送任意数量的数据,如共享内存,消息传递和管道
备注:
①共享内存:就是操作系统提供一些API函数,允许多个进程把自己地址空间中的某些部分共享出来,映射到相同的一块物理内存区域。通过这种方式可以实现进程之间的信息交流和共享。
②消息传递:进程之间通过发送和接收消息来交换信息。消息机制由操作系统来维护,如果两个进程需要通信,则现在两个进程之间建立一个通信链路,然后再调用发送和接收操作来交换信息。
③管道:管道就是连接两个进程之间的一个打开的共享文件,它专门用于进程之间的数据通信。发送进程从管道的一端写入数据,接收进程从管道的另一端读出数据。对管道的读写就是对普通文件的读写操作,而且数据流的长度和格式没有限制。


2、进程的互斥

现代操作系统一般都是多道程序,同时运行多个进程。在宏观上,这些进程是并发运行的;在微观上,由于CPU只有一个,任何时刻只能运行一个进程,其它进程只能等待被运行。另外一个原因是,多个进程竞争地访问同一个共享资源的时候,会引发互斥。

备注:

对共享内存的访问或共享文件的访问,可能会导致竞争状态的出现。我们把完成这类事情的的那段程序称为“临界区”,把需要互斥访问的共享资源称为“临界资源”。

问题:如何避免进程的互斥

1、基于关闭中断的方法:当一个进程进入它的临界区的时候,先把中断关闭,然后再去执行临界区的代码,关闭中断之后就不能实现进程之间的切换。这里所说的中断主要是指I/O中断,时钟中断。

缺点:这种方法可能会在临界区陷入死循环,也可能在临界区的时候做大量计算。所以影响系统的稳定性、可靠性和效率。

2、基于繁忙等待的方法

①加锁标志位:设置一个共享变量lock,该变量可以被各个进程访问。刚开始时lock = 0,当一个进程想进入临界区的时候,先查看lock是否为0,如果是0就进入临界区,否则等待。当进入临界区之后,就把lock设置为1。当退出临界区的时候再把lock设置为0。

②强制轮流法:每个进程按照轮流的顺序依次进入临界区,对于每一个进程只有轮到它的时候才进入临界区。设置一个共享变量turn,用来表明哪一个进程可以进入临界区。如果turn = 0,表明进程P0可以进入;如果turn = 1,表明P1可以进入。另外,当进程退出临界区的时候,再改变turn的值,把权利交给下一个进程。

③Peterson方法

二、进程间同步

进程同步,是指在多个进程中发生的事件之间存在某种时序关系,因此在各个进程之间必须协同合作、相互配合,使各个进程按一定的速度执行,以共同完成某项任务。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值