当前位置: 首页 > news >正文

福建城乡建设网站台州网站制作 外贸

福建城乡建设网站,台州网站制作 外贸,淘宝网站建设步骤,河北住房建设厅官方网站目录 一、剖析一个块设备 二、缓冲区和缓冲区头 三、bio 结构体 四、请求队列 五、I/O 调度程序 系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的硬件设备称作块设备,这些固定大小的数据片就称作块。最…

目录

一、剖析一个块设备

二、缓冲区和缓冲区头

三、bio 结构体

四、请求队列

五、I/O 调度程序


系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的硬件设备称作块设备,这些固定大小的数据片就称作。最常见的块设备为硬盘,其他的还有软盘驱动器、闪存等,它们都是以安装文件系统的方式使用的。

另一种基本的设备类型是字符设备。字符设备按照字符流的方式被有序访问,像串口和键盘就属于字符设备。

对于这两种类型的设备,它们的区别在于是否可以随机访问数据。内核对块设备的管理需要有一个专门提供服务的子系统,对字符设备的管理则不需要。

一、剖析一个块设备

块设备中最小的可寻址单位扇区。扇区大小一般是 2 的整数倍,最常见的是 512 字节。扇区的大小是设备的物理属性。

在软件层面上,最小逻辑可寻址单元为。块是文件系统的一种抽象,只能基于块来访问文件系统。虽然物理磁盘寻址是按照扇区进行的,但是内核执行的所有操作都是按照块进行的。所以块不能比扇区还小,只能倍数于扇区大小

总之,扇区是设备的最小寻址单元,也被称为 “硬扇区” 或 “设备块”;同样地,块是文件系统的最小寻址单元,也被称为 “文件块” 或 “I/O 块”。

二、缓冲区和缓冲区头

当一个块被调入内存时(在读入后或等待写出时),它要存储在一个缓冲区中。每个缓冲区与一个块对应,它相当于是磁盘块在内存中的表示。一个页可以容纳一个或多个内存中的块。由于内核在处理数据时需要一些相关的控制信息(比如一个块属于哪个块设备,块对应于哪个缓冲区等),所以每一个缓冲区都有一个对应的描述符 buffer_head 结构体,称为缓冲区头,定义在 <linux/buffer_head.h>,它包含了内核操作缓冲区所需要的全部信息:

但是,将缓冲区头作为 I/O 操作单元带来了两个弊端:

  • 缓冲区头是一个很大且不容易控制的数据结构体,而且缓冲区头对数据的操作既不方便也不清晰。
  • 它仅能描述单个缓冲区,缓冲区头会促使内核八大块数据的 I/O 操作分解为多个 buffer_head 结构体进行操作。 

所以后面为块 I/O 操作引入了一种新型、灵活并轻量级的容器——bio 结构体。

三、bio 结构体

目前内核中块 I/O 操作的基本容器由 bio 结构体表示,定义在 <linux/bio.h>。该结构体代表了正在活动的以片段(segment)链表形式组织的块 I/O 操作。一个片段是一小块连续的内存缓冲区,而片段链表可以使一个缓冲区分散在内存的多个位置上,bio 结构体能对内核保证 I/O 操作的执行,像这样的向量 I/O 就是所谓的聚散 I/O。

bio 结构体定义于 <linux/bio.h> 中:

使用 bio 结构体的目的主要是代表正在现场执行的 I/O 操作,所以该结构体中的主要域都是用来管理相关信息的:

bi_io_vec 域指向一个 bio_vec 结构体数组,该结构体链表包含了一个特定 I/O 操作所需要使用到的所有片段。每个 bio_vec 结构都是一个形式为 <page, offset, len> 的向量,它描述的是一个特定的片段:片段所在的物理页、块在物理页中的偏移位置、块长度。

总之,每一个块 I/O 请求都通过一个 bio 结构体表示,每个请求包含一个或多个块,这些块存储在 bio_vec 结构体数组中,bio_vec 结构体描述了每个片段在物理页中的实际位置,并且像向量一样被组织在一起。

bio 结构体代表的是 I/O 操作,它包含内存中的一个或多个页;而 buffer_head 结构体代表的是一个缓冲区,它描述的仅仅是磁盘中的一个块。

四、请求队列

块设备将它们挂起的块 I/O 请求保存在请求队列中,该队列由 request_queue 结构体表示,定义在文件 <linux/blkdev.h> 中,包含一个双向请求链表以及相关控制信息。

队列中的请求由结构体 request 表示,一个请求可能要操作多个连续的磁盘块,所以每个请求可以由多个 bio 结构体组成。

五、I/O 调度程序

磁盘寻址是整个计算机中最慢的操作之一,为了缩短寻址时间,Linux 引入了 I/O 调度程序。

I/O 调度程序将磁盘 I/O 资源分配给系统中所有挂起的块 I/O 请求。I/O 调度程序通过两种方法减少磁盘寻址时间:合并与排序。

  • 合并指将两个或多个请求结合成一个新请求,即如果两个请求访问的磁盘扇区相邻,那么可以把两个请求合并为一个请求,这样可以将 I/O 多次请求的开销压缩成一次请求的开销。
  • 排序指将整个请求队列按扇区增长方向有序排列,通过保持磁盘头以直线方向移动,从而缩短所有请求的磁盘寻址时间。这种 I/O 调度程序也被称为电梯调度。

Linux 实际使用的 I/O 调度程序有如下几种:

  • Linux 电梯
  • 最终期限 I/O 调度程序
  • 预测 I/O 调度程序
  • 完全公正的排队 I/O 调度程序
  • 空操作的 I/O 调度程序
http://www.yayakq.cn/news/700280/

相关文章:

  • 智能建站程序软装设计公司名称
  • iis搭建网站教程win7海口建站费用
  • 您在工信部门备案网站获取的icp备案号腾讯云服务器上传网站
  • 推荐上海网站建设正邦设计作品
  • 网站设计制造建设工程造价管理总站网站
  • 网站域名查主机企业网站备案容易吗
  • 万户网站制作传奇合成版2合1雷霆版手游
  • 网站建设之前必须 域名备案谷歌推广怎么做
  • dw网站模板免费如何在阿里巴巴上做网站
  • 万网租空间 网站建设网站的意义知乎
  • 苏州专业做网站的公司哪家好东莞系统app开发
  • 单位建设网站申请湘潭电大网站
  • 网站开发的报告书石家庄网站模板建站
  • 江苏省建设厅网站证件查询沙田镇网站仿做
  • 国内如何做国外网站的兼职项目怎样优化自己的网站
  • 自己做网站用什么软件广西南宁网络营销网站
  • 爱空间网站模板php做大型网站
  • 网站开发公司市场做网站找那些公司
  • 整站优化网站报价seo服务套餐
  • 申请网站免费枫林seo
  • 怎么做网站信息自己做第一个网站
  • 深圳网站建设力荐上榜网络免费电子公章印章在线制作
  • 携程电子商务网站建设美创网站建设优势
  • 做网站整理信息的表格网页设计与制作课程实施报告
  • 公众号制作模板网站建筑网络学院
  • 北京市网站维护公司首页风格
  • 网站开发语言php视频号运营基础课程
  • 社交网站 源码昆山建设信息网站
  • 房产中介网站建设技巧海口新闻最新消息
  • 福州软件网站开发培训班66郑州网站建设