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

专业网站建设公司排名宜兴做网站哪个好

专业网站建设公司排名,宜兴做网站哪个好,建设品牌网站,大同网站开发目录 文件系统 背景知识 磁盘结构 磁盘的存储结构 磁盘抽象(逻辑#xff0c;虚拟)结构 BootBlock#xff1a; Super block Data blocks inode Table BlcokBitmap inode Bitmap Group Descriptor Table 文件名和inode编号 硬链接和软链接 软链接 硬链接 取消…目录 文件系统 背景知识 磁盘结构 磁盘的存储结构 磁盘抽象(逻辑虚拟)结构 BootBlock Super block Data blocks inode Table BlcokBitmap inode Bitmap Group Descriptor Table  文件名和inode编号 硬链接和软链接 软链接 硬链接 取消软硬链接unlink stderr 文件系统 背景知识 我们讲解文件系统之前还需要说一些背景知识方便我们快速理解学习文件系统的目的是什么. 1.我们之前一直讲的是open已经打开的文件及其对应的操作。那没有被打开的文件在哪里呢 当然是在磁盘被称作磁盘级文件. 2.我们学习磁盘级文件侧重点在哪里呢 a.单个文件角度这个文件在哪里这个文件多大这个文件的其他属性是什么? b.在系统角度一共有多少个文件各自属性在哪里如何快速找到还可以存储多少个文件如何让快速找到指定的文件等等 对于b这一系列问题可以转化成 如何对磁盘文件进行分门别类的存储以便更好地进行存储。 3.我们想要了解磁盘文件必须先要了解磁盘. 内存   ---   掉电易失存储介质 磁盘   ---   永久性存储介质  (还有SSD,U盘光盘磁带等) 磁盘是一个外设 还是我们计算机中唯一一个机械设备。 相比于其它的这个速度是比较慢的所以OS一定会有一些提速的方式后面会说。 磁盘结构 可以先 参考下面的的图片 我们以光盘为例 我们知道盘面上会存储数据 但是计算机只认二进制有什么东西能表示两种状态呢 磁铁上的南北极所以向磁盘中写入 本质上就是改变磁盘上的正负性这个操作是由磁头来完成的. 所以我们的光盘表面上看起来很光滑实则是由非常多的磁铁组合而成的微观上来看非常粗糙。 磁盘的存储结构 磁盘上一个盘面那么多数据那么磁盘是如何知道我想要寻找的数据大致在哪个位置呢 我们先来了解一下磁盘的存储结构. 盘面上一个个同心圆便是磁道每个同心圆被划分的一小段区域叫做扇区。扇区是磁盘存储的基本单位。多个盘面半径相同(一个磁盘有多个盘面)的同心圆连起来叫做柱面。 那么在物理上如何把数据写入指定的扇区呢 这个问题本质上如何找到一个扇区. 找到一个扇区大概流程如下 1.首先要先确定在哪一个面上对应的就是哪一磁头。 2.在哪一个磁道(柱面) 3.在哪一个扇区上. 以上的寻找方法又叫做CHS寻址.有了它我们便能找到任意一个扇区即磁盘上所有扇区都能找到了. 磁盘抽象(逻辑虚拟)结构 我们小时候应该见过磁带吧那种一拉很长的那种那时候英语听力基本用一个录音机然后放上磁带练习英语听力就像下面这样 一个磁带原本物理结构是圆形结构我们可以把它拉出来相当于抽象成了一种线性结构 我们可以把这个卷起来的磁带想象成磁盘的盘片然后把磁盘的盘面抽象成一种线性结构 这样把物理结构抽象成这样的线性结构此时想访问一个扇区只要找到数组的下标便可以找到对应的扇区这样的方法叫做LBA寻址法然后LBA再通过刚才的CHS就成功的把数据写到了磁盘.  例如数组有10万个元素我们可以划分成1-10000为第一个盘面10001-20000为第二个盘面以此类推在第一个盘面中又划分成0-1000为第一个磁道1001-2000为第二个磁道依次推下去就完成了抽象结构划分. 所以以上的问题都转化成了下面的 将数据存储到磁盘 --- 将数据存储到该数组 找打磁盘中特定扇区的位置 --- 找到数组特定的位置 对磁盘的管理 --- 对该数组的管理 但是假如一个磁盘500GB大小直接管理起来非常耗时而且复杂。所以我们为了方便管理我们可以对这500G进行划分空间也就是分区. 对一个小分区管理好了其它的分区直接照样用着一套方法即可. 但是100GB还是很大所以我们还需要继续划分. 此时划分后的每一块叫做块组。每个块组的结构又如下 它们这些都是什么呢有什么作用呢我们来分别讲解 BootBlock 先来看第一个BootBlock 引导块Boot Block是特定块组中的第一个块用于存储 引导加载程序Bootloader。引导加载程序是在计算机启动过程中加载并运行操作系统的程序。 引导块的主要目的是启动操作系统它首先加载操作系统内核或引导程序到内存中然后传递控制权给内核或引导程序使其能够继续系统的启动过程。 这个了解一下即可感兴趣的话可以再深入了解. Super block 紧接着看一下Super block. Super block 里面是文件系统的属性信息. 超级块Super Block是磁盘块组中的一个特殊数据结构包含了文件系统的元数据信息让操作系统能够理解和操作文件系统。它记录了文件系统的整体信息包括文件系统的类型、大小、块位图和inode位图的位置等重要信息。 超级块通常位于块组的起始位置它在文件系统格式化时被创建并初始化。超级块记录了文件系统的整体信息以便操作系统可以理解和操作文件系统。 所以Super block相当于是一个文件系统的总指挥扮演着一个非常重要的角色. Data blocks 然后是Data blocks 这里先说一下虽然磁盘的基本单位是扇区(512字节)但是操作系统(文件系统)和磁盘进行IO的基本单位是4KB(8*512字节). 也就是说就算OS想从磁盘中读取一个字节的数据那么最少也必须读取4KB的数据。至于为什么是4KB这是经过一些科学的计算最终得出的结论4KB是最合适的. 如果使用512KB可能会进行更多次数的IO造成效率降低而且如果操作系统使用和磁盘一样的大小万一磁盘基本大小变化了OS的源代码也需要改变所以OS有自己一套的规定这样就完成了软件和硬件的解耦。 操作系统与磁盘 IO的基本单位是4KB这也是一个block大小所以磁盘也一般叫做块设备。 所以Data blocks可以理解为 1.多个4KB(8*扇区)大小的集合. linux下文件内容 和 属性是 分开存储的。 而2.Data blocks里保存的都是特定文件的内容. inode Table 接下来说inode Table. inode是一个大小为128字节的空间保存的是对应文件的属性。 inode Table是该块组内所有文件的inode空间的集合需要标识唯一性每一个inode块都要有一个inode编号 一般而言一个文件只有一个inode和一个inode编号. inode编号属于inode即inode编号是文件的一个属性. 例如我们在Linux下输入ls -li 便可以看到inode编号(黄色框标识的) BlcokBitmap 再来看BlcokBitmap. 回想刚才的data blocks有那么多的block我们怎么知道哪一个被占用哪一个没有被占用呢 这个时候便用到了BlockBitmap它的内部是一个位图它的每一个比特位和特定的block是一一对应的对应的bit位位1 表示该block已经被占用否则表示空闲可用。 通过块位图操作系统可以快速了解文件系统上哪些块是可用的从而进行块的分配和释放。当需要分配一个块给新的文件或目录时操作系统会查找位图中的空闲位并将其设置为已分配状态然后返回该块的地址 给请求的进程。 inode Bitmap inode Bitmap也是同样的道理. 有那么多的inode怎么标识哪个被占用哪个没有被占用呢还是用inode Bitmap 它的内部也是一个位图每一个比特位和 特定的inode是一一对应的如果该比特位为1说明该inode已经被占用否则表示空闲可用。 假设有10000的inode那么就有10000的比特位分别一一对应然后用0和1表示未被占用和已占用的两种状态. Group Descriptor Table  Group Descriptor Table(GDT)叫做块组描述符. 它用来记录这个块组多大已经使用了多少有多少个inode已经占用了多少还剩多少一共有多少个block使用了多少...等等 我们将块组分割成上面的内并且写入相关的管理数据   --- 每一个块组都这么干   ---整个分区就被写入了文件系统信息(格式化)  一个文件只能有一个inode和一个inode编号. 我们知道DataBlocks中是通过每个block存储内容的那么一个文件 可以有多个block吗答案是肯定可以的如果只有一个的话那么每个文件只能存储4KB大小这也不切合实际。 在文件属性inode中会有文件的各种属性其中就包括了一个blocks数组里面保存了每个block的位置. 那么如果一个文件特别大有很多blockblocks数组容不下了此时如何找到每个block呢 其实我们要知道一个block块里不仅可以存储文件内容也可以存储其它块的块号 比如blocks[在文件属性inode中]只有15个元素大小我们可以前12个对应的block[磁盘结构中]存储文件内容后3个对应的block存储的其它block的位置。 一个block是4KB4096字节大小存储一个位置只需要4/8字节(32/64位平台)这样一个block就可以存储1000个其它block的位置如果还是不够可以取前997个存储内容后3个存储block的位置以此类推... 用图大概就是如下这样 文件名和inode编号 通过上面的讲解我们知道 找到文件先找到文件inode编号 --- 找到分区特定的blcok group --- 找到inode ---相当于知道了属性 ---根据属性便可以找到文件内容. 可问题是我们怎么知道inode编号呢我们平时用的都是文件名进行操作比如创建或删除等所以我们此时需要弄清楚文件名和inode编号之间的关系. 这里提醒一句linux中inode属性里面没有文件名这一说法只根据inode编号辨识文件. 有下面两种场景 1.在同一个目录下可以保存很多的文件但是文件名不能重复. 2.目录是文件也有自己的inode也有自己的data block但问题是目录data block里面存储的是什么呢 虽然说linux下是按inode编号来识别文件的但是我们看到就是文件名啊这些文件名也一定是被管理的。 这里直接说结论:目录里的data block 存储的是inode 编号 和 文件名的映射关系. 它们互为key值的也就是说即可用inode编号做key值也可以用文件名做key值. 这也可以立即为什么创建文件需要目录有写权限因为目录保存的是文件名与 inode编号映射关系只有目录有了写权限才能将这个映射关系写到磁盘才能创建成功.  硬链接和软链接 以上说了这么多只是为了说明软硬链接因为只有知道了以上这些知识这个软硬链接才能更好地理解. 先直接说结论软硬链接的本质区别是有没有独立的inode编号 软硬链接详细的用法后面会说这里先来看这一种现象 我们首先创建了三个文件 testLink.txt testLink1.txt testLink2.txt. 然后此时我们在软连接一个文件softLink.txt指令如下 ln -s testLink.txt soft.txt 然后此时我们再硬链接一个文件hardLink.txt指令如下 ln testLink1.txt hardLink.txt然后此时我们ls -li查看文件的其他属性及inode编号 我们发现软链接的文件inode编号不同硬链接的文件inode编号相同。 软链接有独立的inode ---   软链接是一个独立的文件. 硬链接没有独立的inode ---  硬链接不是一个独立的文件. 软链接 软链接也称为符号链接是一种特殊的文件类型。它包含了指向目标文件或目录的路径类似于Windows中的快捷方式。软链接创建一个新的文件其中的内容是指向目标文件或目录的路径。 当访问软链接时实际上是通过路径引导来访问目标文件或目录。软链接可以跨越文件系统边界在不同的位置创建链接。 指令 ln -s 目标文件(被链接的文件) 软链接的文件 比如在Linux下比如有一个文件在特别深的地方。每次执行它需要写很多路径非常麻烦。 此时我们便可以为这个文件 在一个方便的路径下创建一个软链接的文件此时每次你在你方便的路径下执行这个软链接文件便可以执行到源文件了. 同样地在Windows下比如我们有一个软件在桌面 比如说qq这个qq其实就是一个软链接的文件然后我们右击qq然后点击属性 便可以发现源文件其实在和这个桌面毫不相干的一个地方存着而桌面上的这个qq其实是它的一个软连接即快捷方式。 硬链接 我们上面知道了硬链接不是一个独立的文件因为inode编号一样. 硬链接Hard Link是在文件系统中创建的一种链接将一个文件关联到另一个文件使得它们共享相同的物理数据块数据存储内容。通过硬链接创建的文件实际上是指向相同的inode索引节点因此它们在文件系统中被视为相同的文件。 硬链接之间的文件没有所谓的源文件和副本之分它们都是平等的硬链接文件。即使原始文件被删除由于硬链接不依赖于原始文件的存在硬链接本身仍然可以通过其他链接访问并且数据内容仍然保留在文件系统中直到所有链接都被删除才会真正释放。 硬链接实则就是在指定的目录下建立了文件名和指定inode的映射关系仅此而已 我们把这个testLink1删掉了但是并不影响与之建立硬链接的hardLink.txt因为inode编号并没有改变说明文件也没有变化。 但是此时我们发现第三行原来的数字由2变成1这个数字叫做硬链接数.就是与某个文件硬链接的文件数量. 这里采用一种叫做引用计数的方法用来计算和这个文件硬链接的个数count。 当我新增一个硬链接的时候这个数字count便会1. 当我删除一个硬链接的时候并不是把这个文件的inode删除而是将这个count--在目录层面只是将这个文件名与inode编号取消了映射关系。当count 0的时候说明此时已经没有文件再关联这个文件了此时再把这个文件删除 取消软硬链接unlink 当我们想取消与某个文件的软硬链接的时候(相当于就是删除了因为取消了链接这个文件本身就没有意义了),便用到了unlink指令 用法如下 unlink 文件名 还是刚才的例子我们想取消软链接于是我们unlink soft.txt 取消链接之后原本的链接文件也被删除了. 硬链接也是如此就不演示了。但是硬链接也只是删除文件名和inode的映射关系不会删除文件本身除非像刚才上面说的与之关联的文件数为0的时候此时便会彻底删除. 当我们创建一个目录的时候发现它的硬链接数是2: 这是哪两个文件与它建立的硬链接呢 1.自己的目录名 与 inode编号的映射 2.自己目录的内部 . 也与inode有一个映射. 毕竟这个 . 代表了当前路径. 当我们再在这个目录里创建一个目录 发现这个硬链接数变成了3这又是为什么呢 这是因为每个文件内部都默认有两个隐藏文件 . 和.. 分别表示当前路径和上一级路径。 dir1的上一级路径就是dir所以此时又与dir建立了一个硬链接使得其数量增加了1. 关于文件系统的知识就到这里结束了其实平常用到的也不多但是学会这个对以后我们理解文件会有很大的帮助。 这里还有一个上一章小尾巴就是stderr我们再这里补充一下 stderr 我们前面说了stdin,stdout,stderr,我们知道分别是标准输入标准输出以及标准错误。 前两个我们都知道也演示了分别代表键盘文件显示器文件。 那这个标准错误是什么呢 默认情况下标准输出和标准错误都会输出到终端通常是命令行终端这样用户可以同时看到程序的正常输出和错误信息。 通常来说程序的正常输出应该发送到标准输出流而程序的错误信息应该发送到标准错误流。这样可以方便地区分正常输出和错误信息并且可以将它们分别重定向到不同的位置例如将错误信息保存到日志文件中而不显示在终端上。 我们看下面的代码 int main() { //stdout - 1 printf(hello,printf 1\n); //stderr - 2 perror(hello,perror 2); const char* s1 hello,write 1\n; write(1,s1,strlen(s1)); const char* s2 hello,write 2\n; write(2,s2,strlen(s2)); //cout- 1 std::cout hello,cout 1 std::endl; //cerr- 2 std::cerr hello,cerr 2 std::endl; return 0; } 分别向fd 1(标准输出)的文件和 fd 2(标准错误)的文件输出.我们来运行一下看看结果 这些都正常输出到了终端没有问题。 如果我们此时重定向到log.txt文件那么这个文件中也会是相同的结果吗 当我们把结果重定向到文件中时终端上直接输出了标准错误没有标准输出而显示文件中的内容时只有标准输出没有标准错误. 即重定向到文件时只有标准输出会重定向而标准错误不会. 这也可以说明1和2对应的都是显示器文件但它们两个是不同的如同认为同一个显示器文件被打开了两次. 如果此时我们想把标准输出和错误 分开输出到不同的文件中该怎么做呢 ./myfile log.txt 2err.txt这句话意思是把./myfile的标准输出 重定向到log.txt文件中再把2(标准错误) 输出到err.txt中. 此时便有了这两个文件我们分别查看里面的内容 这样便分别输出到了不同的文件中. 或者我就想将标准输出和错误 重定向到一个文件中该怎么做 ./myfile log.txt 21前面./myfile log.txt容易理解将./myfile 的标准输出 输出到log.txt中. 21: 这是重定向标准错误输出的部分。2表示标准错误输出的文件描述符。1表示标准输出的文件描述符。因此21将标准错误输出重定向到与标准输出相同的位置. 此时我们便成功地将标准输入与输出 重定向到同一个文件中了.  那么如何利用重定向拷贝一份文件呢 cat log.txt back.txt这句代码相当于是把log.txt内容先给catcat再重定向到back.txt这样本质上就完成了一次拷贝. 至此所有的内容就结束了.
http://www.sadfv.cn/news/282442/

相关文章:

  • 网站开发如何入账云南旅游网站建设
  • 建站交流宝应县网络推广公司
  • 基础网站建设素材微信公众官网登录
  • 个人建立网站360提交网站入口
  • 网站建设辶首先金手指十五网站建设任务分解
  • php做网站流程山东济宁刚刚出大事
  • 网店推广的作用是选择题新河网站快排seo
  • 番禺区建设局网站浙江纸巾包装设计公司
  • 关于网站建设的请示做本地分类信息网站赚钱吗
  • 黄陂区建设局网站建筑设计和室内设计哪个好
  • 网站运营工资唐山软件开发公司排名
  • 腾讯云做网站怎么样seo免费优化工具
  • 十堰城市建设网站电影订票网站怎么做
  • 无锡工程建设招标网站成都成华区两位区领导聊天记录
  • 静态网站开发软件学校网站模板图片
  • 网站被模仿怎么办设计网站设计公司
  • 做网站和APP需要注册公司吗南海网站制作公司
  • flash网站优化网站建设合同需要交印花税
  • 好搜360网站网站 点击量
  • 上海网站建设专业公司哪家好上海设计工作室排名
  • 聊城营销网站建设价格网络营销的方式有几种
  • 徐州网站平台怎么上传网站图片的链接
  • 用什么做网站的访问量统计凡客是什么意思
  • 房产交易网站建设策划案百度cdn wordpress
  • 国内优秀网站设计欣赏学校网站建设汇报ppt模板
  • 企业网站的制作国外可以做网站盈利模式有哪些
  • 蓬莱做网站公司c苏宁网站开发
  • 淄博网站制作设计高端南昌做网站和微信小程序的公司
  • 微网站自己怎么做青岛网站建设加王道下拉
  • 做优惠券网站要多少钱广州市信息技术职业学校