操作系统学习(三)(B站视频)

1. 关于死锁,有四种预防等级,从高到低是,死锁预防,死锁避免,死锁检测和死锁恢复,所以银行家算法属于哪一类?
怎么实现寻找安全序列进程的算法和银行家算法?

1. 银行家算法属于死锁避免的算法,
银行家算法其实不难,在设计了寻找安全进程序列的算法的基础上,对于每一个发出资源申请的进程,在剩余资源满足要求资源的情况下,假定给他资源,若剩下的资源和剩下的进程能组成安全序列,则给它资源(给予贷款),若给了之后,其他进程不能组成安全序列,则不给予贷款。
详情见:
https://www.bilibili.com/video/av6538245/?p=79

2. 银行家算法有何弊端?

2. 银行家算法有一个前提,就是对于一个进程,要知道它所需要的最大资源数(也就是要知道你要贷多少钱),但是实际操作过程中,进程的最大资源数往往不能轻易得出来,所以这个算法实际上的用处现在不多。

3. 什么是死锁检测算法,其弊端在哪?

3. 死锁检测算法是每隔一段时间,对资源进行检测,来查一查是否出现了死锁。
弊端:对资源进行检测的时间复杂度是O(m*n^2),m是进程所需要的资源种类数,n是进程数。
这样的检测开销太大了,所以这种算法一般只是用于设计操作系统的调试阶段,实际的操作系统应用过程并不会用到这个东西。
在这里插入图片描述

4. 死锁恢复的操作

4.
正常操作系统中出现死锁毕竟是少数情况,如果正常操作经常出现死锁,是操作系统设计的有问题
但正常的操作系统,对于死锁问题,都是表现的鸵鸟状态,也就是不进行处理,如果出现了问题,再去进行死锁恢复等操作。
出现死锁有两种常规解决办法:
在这里插入图片描述

5. 什么是IPC?实现进程间通信有哪几种方式?

5. Inter-process Communication 进程间通信

  • 管道
    间接通信的方式,管道是父进程为子进程建立的一个通道,一个进程的输出,可以通过管道进行程序重定位,作为另外一个进程的输入,管道实际上是内存里的一块buffer,而且管道之间传输的数据是一以字节流的方式。在这里插入图片描述- 信号
    类似于软件的中断,产生一个通知,走的是系统调用的接口,一个异步打断的方式,开销很小,不能传输数据。
    在这里插入图片描述 - 共享内存
    直接通信的方式,不需要像管道和消息队列那样,做进程的send发送操作和receive接受操作,但是信息同步的部分需要程序员来完成。
    在这里插入图片描述
  • 消息队列
    间接通信的方式,消息队列比管道更好,第一,它所通信的进程不需要有父子关系,第二,它的传递方式可以是数据结构,不一定是字节流。
  • socket套接字
    不完全属于操作系统内容,remain。

6. 具体进程的地址空间如何实现共享内存呢?

6. 可以通过对每一个进程的地址空间内设置一块虚地址空间,利用地址映射机制,将该块地址映射到实际的同一块地址空间上,这样的操作需要页表等机制的配合。
在这里插入图片描述

posted @ 2019-12-03 10:38  弹吉他的小刘鸭  阅读(84)  评论(0编辑  收藏  举报