29.操作系统对磁盘的4层抽象小结

【README】

本文总结了操作系统 对磁盘的4层抽象,并给出了详细介绍的post 链接;


【1】对磁盘的4层抽象

【1.1】对磁盘的第1层抽象

通过盘块号读写磁盘(读写多个扇区)

  • 因为磁盘底层操作的单位是扇区(512字节),若以扇区为读写单位,读写速度太慢;
  • 参见: 24.原生磁盘的使用_PacosonSWJTU的博客-CSDN博客

【1.2】对磁盘的第2层抽象

队列缓存多个进程读写的盘块号

  • 因为操作系统是多进程图像,管理多个进程,走走停停,同步向前推进;
  • 参见:24.原生磁盘的使用_PacosonSWJTU的博客-CSDN博客

【1.3】对磁盘的第3层抽象

通过 文件 操作磁盘

  • 因为用户程序操作通过盘块号读写磁盘太底层,不太方便;所以引入文件来操作磁盘;
  • 参见:25.从生磁盘到文件_PacosonSWJTU的博客-CSDN博客

【1.4】对磁盘的第4层抽象

整个磁盘抽象为文件系统

  • 整个磁盘就包括了 目录,子目录列表,文件列表,或目录树;
  • 参见: 27.目录与文件系统_PacosonSWJTU的博客-CSDN博客

【2】磁盘格式化

0)磁盘格式化

1.4节 我们讲到操作系统 把整个磁盘抽象为 文件系统;

磁盘格式化后的结构如下:

1)整个磁盘格式化以后,就会形成目录树结构,包括

  • 引导块;
  • 超级块;
  • i节点位图(inode位图);
  • 盘块位图;
  • i节点(inode数组);第1项就是根目录inode;
  • 数据区;

2)整个磁盘格式化后各个部分的内容构成:

  • 引导块:操作系统引导扇区 ;
  • 超级块:记录了 i节点位图,盘块位图的盘块大小;超级块起始盘块号加上i节点位图盘块大小,再加上盘块位图盘块大小就可以得到i节点的起始盘块,而i节点的第1块存储的就是根目录信息,根目录存储了 FCB数组指针,子目录项列表;
  • i节点位图(Inode位图):新建一个文件,即新建一个inode,把该文件对应的inode设置为1;相反,删除一个文件(或inode),则该inode设置为0;
  • 盘块位图: 各个盘块使用情况(0-空闲,1-占用);

补充: superblock 超级块非常重要;

  • 要想使用一个磁盘或u盘,需要先把u盘 挂载 mount到系统;mount的作用就是读取磁盘或u盘的超级块到内存,解析出 i节点位图,盘块位图;
  • 根据 i节点位图和盘块位图可以计算出i节点的起始盘块号;
  • 读取i节点的第1个盘块的内容,即根目录FCB的信息;根目录FCB存储了子目录项列表;

【小结】

  • 以上内容介绍了一个目录树(逻辑)如何实现在磁盘(物理)上的;
  • 参见: 27.目录与文件系统_PacosonSWJTU的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle入门(十四C)之转换函数

一、数据转换类型 为数据库创建表时,SQL 程序员必须定义在表的各个字段中存储何种数据。在 SQL 中,有几种不同的数据类型。这些数据类型用于定义每个列中可以包含的值的范围。 (1)在本文中将使用以下数据类型VARCHAR2 CHAR NUMBER…

发布在即!.NET Core 1.0 RC2已准备就绪

先说点废话,从去年夏天就开始关注学习ASP.NET Core,那时候的版本还是beta5,断断续续不停踩坑、一路研究到11月份RC1发布。 在这个乐此不疲的过程里,学习了很多新的东西,对ASP.NET Core也是越来越喜爱。然而到现在&…

1.java IO模型(BIO,NIO,AIO)

【README】 本文介绍了 3种 java io模型,包括 BIO,NIO, AIO; IO模型名称 描述 工作原理 BIO-Blocking IO 同步并阻塞式IO 一个服务器线程处理一个客户端连接 NIO-Non-blocking IO 同步非阻塞式IO 一个服务器线程处理多个…

Oracle入门(十四D)之常规函数

一、NULL处理 (1)函数的计算过程 到目前为止,您已经学会了在简单语句中应用单行函数。不过,函数可以嵌套任意层。所以,了解嵌套函数的计算过程非常重要。下例就是一个嵌套函数。其计算过程是从最里层开始计算&#xff…

python定义函数prime判断是否是素数_用自定义函数判断素数 用C语言编写自定义函数prime(int x),判断x是否为素数?...

用C语言编写自定义函数prime(int x),判断x是否为素数?int prime(int x){int i,kk(int)sqrt( (double)x )for(i2i&ltki )if(x%i0)break// 如果完成所有循环,那么x为素数if(i&gtk)retrun 1elsereturn 0}C语言,编…

构建高性能.NET应用之配置高可用IIS服务器-第一篇:IIS必须掌握的知识

正确而合理的配置IIS是构建一个高性能和高可扩展应用的基础。虽然很多的时候采用默认的配置就已经可以处理一般的情况,但是随着站点应用的发展,特别是当访问量稍微大一点的时候,就会暴露出很多我们认为的“奇奇怪怪”的问题。 所以&#xff0…

3.NIO选择器(基于NIO的服务器与客户端通讯)

【README】 本文总结自B站《尚硅谷netty》,很不错; 【1】选择器Selector(多路复用器) 【1.1】基本介绍 1)Java 的 NIO,用非阻塞的 IO 方式。可以用一个线程,处理多个客户端连接,就…

perplexity 衡量指标_求通俗解释NLP里的perplexity是什么?

高赞回答讲得已经非常通俗易懂,不过由于自然语言处理的发展,出现了许多不同类型的模型,对困惑度这个指标的计算方法颇有不同(包括前面的高赞回答也只是展开了一个子集),常常让人摸不着头脑。所以这个回答旨在尽量全面地梳理不同语…

C#在Linux上的开发指南

本人才疏学浅,在此记录自己用C#在Linux上开发的一点经验,写下这篇指南。(给想要在Linux上开发C#程序的朋友提供建议) 目前在Linux上跑的网站:http://douxiubar.com | http://douxiubar.com/AdminLogin/Index&#xff0…

Oracle入门(十四E)之条件表达式case和deocde函数

一、表达式(1)条件表达式 共有两种条件表达式,即 CASE 表达式和DECODE 表达式。就 CASE 比较两个表达式而言,该表达式在逻辑上等效于之前学习的NULLIF 函数。如果两个表达式相等,则返回null,如果不相等&…

4.基于NIO的群聊系统

【README】 1.本文总结自B站《netty-尚硅谷》,很不错; 2.文末有错误及解决方法; 【1】群聊需求 1)编写一个 NIO 群聊系统,实现服务器端和客户端之间的数据简单通讯(非 阻塞) 2)实…

构建高性能.NET应用之配置高可用IIS服务器-第二篇 IIS请求处理模型

在IIS 中,Http监听者(http.sys)和请求处理者由两个系统服务在控制着。一个是WWW 服务,另外一个就是Windows Process Activation。 对于WWW服务,它主要是监控IIS的配置文件,将新的配置信息用到HTTP.sys和WAS上。同时它也维持一些性…

Oracle入门(十四F)之PL/SQL定义变量

一、变量介绍 (1)变量的使用可以使用变量: 临时存储数据存储值的操作可重用性(2)PL/SQL中的变量处理变量是: 在声明部分中声明和初始化在可执行部分中使用和分配新值变量可以是:作为…

小米手环nfc门卡摸拟成功后不能开门_如何使用小米手环5 NFC版进行门卡模拟(如公司门禁卡、小区门禁卡、学校门禁卡等)?...

由于本人最近购入了小米手环5 NFC版,所以对小米手环模拟门禁卡比较清楚一点。说一下用该手环模拟门禁的方法吧,我本人模拟的是学校公寓的门禁卡,不过学校的门禁卡是加密卡,可能操作起来稍微比不加密的门禁卡麻烦一点,因…

5.NIO零拷贝与传统IO的文件传输性能比较

【README】 1.本文总结自B站《netty-尚硅谷》,很不错; 2.本文部分内容参考自 NIO效率高的原理之零拷贝与直接内存映射 - 腾讯云开发者社区-腾讯云 【1】零拷贝原理 【1.1】传统IO的文件拷贝 【图解】 step1)调用 sys_read系统调用&#…

二进制漏洞利用与挖掘_二进制各种漏洞原理实战分析总结

本部分将对常见的二进制漏洞做系统分析,方便在漏洞挖掘过程中定位识别是什么类型漏洞,工欲善其事,必先利其器。0x01栈溢出漏洞原理栈溢出漏洞属于缓冲区漏洞的一种,实例如下:编译后使用windbg运行直接运行到了地址0x41…

Oracle入门(十四H)之良好的编程实践

一、为什么要学习它 好的编程实践是技巧,可以按照创建最好的代码可能。 编程实践涵盖了一切从代码更多可以用更快的速度创建代码性能。 软件工程团队通常会遵循风格指导让团队中的每个人使用相同的技术。 这使它更容易阅读和修改编写的代码其他。二、编程实践已经学…

微软.NET 正式劈腿成功,横跨所有平台

.NET官方博客宣布了《Announcing .NET Core RC2 and .NET Core SDK Preview 1》,正式如期发布了.NET Core RC2, 现在可以放心的基于.NET Core 构建 ASP.NET Core, console apps 和 class libraries for Windows, OS X and Linux。这里贴张图表达下他们之间的关系: …

2.BIO与NIO区别

【README】 1.本文总结自B站《netty-尚硅谷》,很不错;2.本文介绍 BIO, NIO的知识;【1】BIO(传统java IO模型) 1)BIO-Blocking IO:同步阻塞,服务器实现模式为一个连接一…

k8s往secret里导入证书_K8S之Secret

简介secret顾名思义,用于存储一些敏感的需要加密的数据。这些数据可能是要保存在pod的定义文件或者docker的镜像中。把这些数据通过加密的方式存放到secrets对象中,可以降低信息泄露的风险。在secret中存储的数据都需要通过base64进行转换加密后存放。创…