学习笔记10

学习笔记10

十二章知识点归纳

本章主要讨论了块设备 I/O 和缓冲区管理,包括块设备 I/O 的原理、I/O 缓冲的优点、Unix 的缓冲区管理算法以及信号量设计的新缓冲区管理算法。以下是一些重要的知识点:

1. 块设备 I/O 缓冲区

  • 基本原理:文件系统使用一系列 I/O 缓冲区作为块设备的缓存内存。
  • 读取和写入过程:如果缓冲区存在并包含有效数据,则直接从缓冲区读取数据,否则会为磁盘块分配缓冲区并将数据读入缓冲区。

2. Unix/Linux 中的信号处理

  • 内核中的一系列 NBUF 缓冲区用作缓冲区缓存,每个缓冲区由一个结构体表示。
  • 缓冲区初始化、列表和算法:描述了缓冲区的初始化过程以及 getblk/brelse 算法的流程。

3. PV 算法

  • PV 算法特点:缓冲区唯一性、无重试循环、无不必要唤醒,提升了缓存效果。

4. I/O 缓冲区管理算法比较

该部分涉及了用户界面、CPU 端模拟、缓冲区管理器、磁盘驱动程序、磁盘控制器、磁盘中断以及虚拟磁盘等方面。

三、实践过程与截图

尝试 Unix I/O 缓冲区管理算法

  • 示例代码使用了 perror()、setvbuf()、以及进程同步的消费者问题,展示了文件操作、缓冲区设置和线程同步等方面的实践。

问题与解决思路

问题:setbuf()函数和setvbuf()函数的区别是什么?

  • setbuf() 用于将指定缓冲区与特定的文件流相关联,实现直接操作文件流缓冲区的功能。而 setvbuf() 则用于设置文件流的缓冲区类型和大小,具有更多的参数控制选项。

详细解释请参考

苏格拉底提问



posted @ 2023-11-19 21:58  卢泽  阅读(1)  评论(0编辑  收藏  举报