首页 > 系统相关 >Linux第12章学习笔记

Linux第12章学习笔记

时间:2023-11-13 19:33:23浏览次数:36  
标签:缓存 PV 笔记 算法 12 Linux 缓冲区 磁盘 设备

第十二章学习笔记

块设备I/O和缓冲区管理

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

块设备I/O缓冲区

I/O缓冲的基本原理非常简单。文件系统使用一系列I/O缓冲区作为块设备的缓存内存。当进程试图读取(dev,blk)标识的磁盘块时,它首先在缓冲区缓存中搜索分配给磁盘块的缓冲区。如果该缓冲区存在并且包含有效数据,那么它只需从缓冲区中读取数据,而无须再次从磁盘中读取数据块。如果该缓冲区不存在,它会为磁盘块分配一个缓冲区,将数据从磁盘读入缓冲区,然后从缓冲区读取数据。当某个块被读入时,该缓冲区将被保存在缓冲区缓存中。以供任意进程对同一个块的下一次读/写请求使用。同样,当进程写入磁盘块时,它首先会获取一个分配给该块的缓冲区。然后,它将数据写人缓冲区,将缓冲区标记为脏,以延迟写入,并将其释放到缓冲区缓存中。由于脏缓冲区包含有效的数据,因此可以使用它来满足对同一块的后续读/写请求,而不会引起实际磁盘1O。脏缓冲区只有在被重新分配到不同的块时才会写人磁盘
物理块设备I/O:每个设备都有一个I/O队列,其中包含等待I/O操作的缓冲区。

Unix I/O缓冲区管理算法

I/O缓冲区:内核中的一系列NBUF缓冲区用作缓冲区缓存。每个缓冲区用一个结构体表示

缓冲区结构体由两部分组成:用于缓冲区管理的缓冲头部分和用于数据块的数据部分。
为了保护内核内存,状态字段可以定义为一个位向量,其中每个位表示一个唯一的状态条
件。

设备表:每个块设备用一个设备表结构表示。

缓冲区初始化:当系统启动时,所有I/O缓冲区都在空闲列表中,所有设备列表和T/O队列均为空。

缓冲区列表:当缓冲区分配给(dev,blk)时,它会被插入设备表的dev_list中。如果缓冲区当前正在使用,则会将其标记为BUSY(繁忙)并从空闲列表中删除。

Unix算法的缺点

  • 效率低下
  • 缓存效果不可预知
  • 可能会出现饥饿
  • 该算法使用只适用于单处理器系统的休眠/医腿操作。

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

信号量的主要优点是:
(1) 计数信号量可用来表示可用资源的数量。例如:空阅冲区的数量。
(2) 当多个进程等待一个资源时,信号量上的V操作只会释放一个等待进程,改进程不必重试,因为它保证拥有资源。

使用信号量的缓冲区管理算法

(1)保证数据一致性
(2)良好的缓冲效果
(3)高效率:没有重试循环,没有不必要的进程“唤醒”
(4)无死锁和饥饿

PV算法

证明PV算法是正确的,并且满足要求
(1) 缓冲区唯一性
(2)无重试循环
(3) 无不必要唤醒
(4) 缓存效果
(5) 无死锁和饥饿

苏格拉底挑战

块设备I/O缓冲区



PV算法


chatgpt

在Linux中,缓冲区缓存的管理是如何进行的?

在Linux中,PV算法是指什么?它的作用是什么

代码

标签:缓存,PV,笔记,算法,12,Linux,缓冲区,磁盘,设备
From: https://www.cnblogs.com/nql2/p/17829929.html

相关文章

  • linux xfce 在文件管理器里点击运行shell脚本文件
    1.打开SettingsEditor2.点击左边的thunar3.点击右边的添加,在属性中输入/misc-exec-shell-scripts-by-default在类型中选择布尔类型在值中选择真保存4.给shell脚本文件添加运行权限命令行chmod+xyour_filename或者gui界面在右键脚本文件,点击属性,在权限里允许......
  • Markdown语法学习笔记
    MyFirstMarkdownFile(Markdown常用语法总结)文章标题文字前以#数量为一级、二级、三级、四级标题,例如本文标题,我使用了:#MyFirstMarkdownFile(Markdown常用语法总结)同样的,SecondTitle(##二级标题)ThirdTitle(###三级标题)FourthTitle(####四级标题)正文文字直......
  • Linux第二次博客
     这一次作业主要讲了第三章用户管理的内容。 主要就是去了解用户和组的意义,掌握创建、修改与删除用户/组的方法,还有熟悉用户相关配置文件和用户身份切换。 用户/组概览学习了用户标识,UID(用户的id)、GID(用户所属组的id),还有一个groups为用户属于的所有组的id。在了解过程中我......
  • linux自动更新代码并打包
     #为了解决本地打包上传到服务器时耗时过久,直接用服务器自动更新代码并打包  linux-dabao-1-git-pull.sh#更新代码/home/app/szzy/yjdaxt/git/git-2.42.1/gitpulloriginmaster linux-dabao-2-clean-install.sh#打包-离线模式sh/home/app/szzy/yjdaxt/mysoft/a......
  • linux进程通信的六种方法
    一、管道​ 一个进程:​ ​ 所谓的管道,就是内核里面的一串缓存。从管道的一段写入的数据,实际上是缓存在内核中的,另一端读取,也就是从内核中读取这段数据。另外,管道传输的数据是无格式的流且大小受限。​ 父子进程:​ ​ 创建的子进程会复制父进程的文件描述符,这样就做到了两个......
  • Linux多路径IO流量负载和单链路负载压测
     LinuxMultipath的IO流量多链路负载和单链路负载压测 再linux下,对于udev和multipath均能做到自定义并持久化设备名,其中udev还能做到更改设备权限。而multipath也能做到持久化设备名,但无法更改设备权限,但是multipath能够实现更多的功能,比如IO流量负载功能。 测试情况1......
  • 《黑客攻防技术宝典》阅读笔记
    1.密码破解与加密探讨了不同类型的密码攻击,包括字典攻击和暴力攻击。重点介绍了密码哈希和加盐的概念,以及如何防止RainbowTable攻击。2.Web应用程序安全强调了常见的Web漏洞,如SQL注入和跨站脚本攻击(XSS)。提供了一些建议,帮助开发者编写更安全的代码,以防范常见的Web攻击......
  • 虚拟机中配置大数据节点--个人备份笔记
    新建master节点,注意:新建虚拟机时一切按默认走,随后安装系统;centos安装过程中要注意选择带开发工具的GNOME桌面版本;分区/boot500M,swap2048M,/剩下所有即可;在虚拟机NAT模式下,重新配置master的ip,ip设置应在虚拟机配置的范围内,重启网络;cd/etc/sysconfig/network-scripts vimifcfg-......
  • 具有易失性存储器,MCP47CVD12-E/MF、MCP47CVD12T-E/MF双通道、10位数模转换器(DAC)
    MCP47CVD12是一款双通道、10位、缓冲电压输出数模转换器(DAC),具有易失性存储器和I²C兼容串行接口。该器件提供四种不同的基准电压选项:器件VDD、外部VREF(缓冲或无缓冲)和内部带隙。它提供0.25LSB积分非线性(INL)、低功耗和4µs的快速建立时间。它适合消费和工业应用,如设定点或失调调整......
  • linux 命令3
    查看Linux发行版名称和版本号的8种方法viahttps://zhuanlan.zhihu.com/p/36253769via:https://www.2daygeek.com/check-find-linux-distribution-name-and-version/作者:MageshMaruthamuthu译者:HankChow校对:wxy方法总览lsb_release命令/etc/*-release文件uname......