os_exercises

死锁与IPC(lec 20) spoc 思考题

  • 有"spoc"标记的题是要求拿清华学分的同学要在实体课上完成,并按时提交到学生对应的ucore_code和os_exercises的git repo上。

个人思考题

死锁概念

  • 尝试举一个生活中死锁实例。
  • 可重用资源和消耗资源有什么区别?

可重用和不可撤销;

  • 资源分配图中的顶点和有向边代表什么含义?
  • 出现死锁的4个必要条件是什么?

死锁处理方法

  • 死锁处理的方法有哪几种?它们的区别在什么地方?
  • 安全序列的定义是什么?

进程的最大资源需要量小于可用资源与前面进程占用资源的总合;

  • 安全、不安全和死锁有什么区别和联系?

银行家算法

  • 什么是银行家算法?
  • 安全状态判断和安全序列是一回事吗?

死锁检测

  • 死锁检测与安全状态判断有什么区别和联系?

死锁检测、安全状态判断和安全序列判断的本质就是资源分配图中的循环等待判断。

进程通信概念

  • 直接通信和间接通信的区别是什么? 本质上来说,间接通信可以理解为两个直接通信,间接通信中假定有一个永远有效的直接通信方。
  • 同步和异步通信有什么区别?

    信号和管道

  • 尝试视频中的信号通信例子。
  • 写一个检查本机网络服务工作状态并自动重启相关服务的程序。
  • 什么是管道?

消息队列和共享内存

  • 写测试用例,测试管道、消息队列和共享内存三种通信机制进行不同通信间隔和通信量情况下的通信带宽、通信延时、带宽抖动和延时抖动方面的性能差异。

小组思考题

  • (spoc) 每人用python实现银行家算法。大致输出可参考参考输出。除了YOUR CODE部分需要填写代码外,在算法的具体实现上,效率也不高,可进一步改进执行效率。

  • (spoc) 以小组为单位,请思考在lab1~lab5的基础上,是否能够实现IPC机制,请写出如何实现信号,管道或共享内存(三选一)的设计方案。

  • (spoc) 扩展:用C语言实现某daemon程序,可检测某网络服务失效或崩溃,并用信号量机制通知重启网络服务。信号机制的例子

  • (spoc) 扩展:用C语言写测试用例,测试管道、消息队列和共享内存三种通信机制进行不同通信间隔和通信量情况下的通信带宽、通信延时、带宽抖动和延时抖动方面的性能差异。管道的例子