2023-2024-1 20211306 密码系统设计与实现课程学习笔记10

20211306 密码系统设计与实现课程学习笔记10

任务详情

自学教材第12章,提交学习笔记

  • 知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容

“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”
核心是要求GPT:“请你以苏格拉底的方式对我进行提问”
然后GPT就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?”
如果你觉得差不多了,可以先问问GPT:“针对我XXX知识点,我理解了吗?”
GPT会给出它的判断,如果你也觉得自己想清楚了,可以最后问GPT:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。

  • 问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图
  • 实践过程截图,代码链接
  • 其他(知识的结构化,知识的完整性等,提交markdown文档,使用openeuler系统等)

一、第十二章学习总结

摘要

本章讨论了块设备 I/0 和缓冲区管理;解释了块设备 I/0 的原理和 I/0 缓冲的优点;论述了Unix 的缓冲区管理算法,并指出了其不足之处;还利用信号量设计了新的缓冲区管理算法,以提高I/0 缓冲区的缓存效率和性能;表明了简单的 PV 算法易于实现,缓存效果好不存在死锁和饥饿问题:还提出了一个比较 Unix 缓冲区管理算法和PV算法性能的编程方案。编程项目还可以帮助读者更好地理解文件系统中的I/O操作。

块设备I/O缓冲区

大多数文件系统使用I/0缓冲来减少进出存储设备的物理I/0数量。合理设计的I/0缓冲方案可显著提高文件I/0效率并增加系统吞吐量。



Unix I/O缓冲区管理算法

  • I/O缓冲区:NBUF缓冲区,每个缓冲区用一个结构体表示

    结构体由两部分组成:缓冲头部分、数据部分
  • 设备表:每个块设备用一个设备表结构表示

    每个设备表都有一个dev_list,包含设备的I/O缓冲区,有一个io_queque,包含等待I/O操作的缓冲区。
  • 缓冲区初始化:系统启动时,所有的I/O缓冲区都在空闲列表里,所有设备列表和I/O队列均为空。
  • 缓冲区列表:当缓冲区分配(dev,blk)时,被插入dev_list中。如果缓冲区正在使用,记为繁忙,并从空袭那列表删除。
  • Unix getblk/breles 算法

Unix算法具体说明
  • 数据一致性:getblk不能给同一个(dev,blk)分配多个缓冲区。
  • 缓存效果:缓存效果可以通过以下方法实现。释放的缓冲区保留在设备列表中,以便可能重用。标记为延迟写人的缓冲区不会立即产生I/0,并且可以重用。缓冲区会被释放到空闲列表的末尾,但分配是从空闲列表的前面开始的。这是基于LRU(最近最少使用)原则它有助于延长所分配缓冲区的使用期,从而提高它们的缓存效果
  • 临界区:设备中断处理程序可操作缓冲区列表例如从设备表的I/0 队列中除bp,更改其状态并调用brelse(bp)。
Unix算法的缺点
  • 效率低下:依赖重试循环
  • 缓存效果不可预知:每个释放的缓存区都可被获取。
  • 可能出现饥饿:“自由经济”原则
  • 只适用于单处理器系统的休眠/唤醒操作

新的I/O缓冲区管理算法

在信号量上使用P/V来实现进程同步,而不是使用休眠/唤醒。

优点
  • 技术信号可用来表示可用资源的数量。
  • 当多个进程等待一个资源时,信号量上的V操作只会释放一个等待进程。
使用信号量的缓冲区管理算法
  • 保证数据一致性
  • 良好的缓存效果
  • 高效率:没有重试循环,没有不必要的进程“唤醒”
  • 无死锁和饥饿

二、苏格拉底挑战GPT













三、问题与解决方案






四、实践过程


posted @ 2023-11-14 21:15  20211306丁文博  阅读(5)  评论(0编辑  收藏  举报