zoukankan      html  css  js  c++  java
  • 操作系统第八堂课20210425

    文件系统

    文件系统架构在硬盘,以前的机械硬盘、固态硬盘,可以抽象为分块的存储区域。从文件系统来看,在文件系统存储介质,和内存是相似的,用来存介质,尽管介质不同。

    但是也有区别,主要是内存是意识性的,固态硬盘是非意识性的。内存是随机访问,硬盘读写的时候读写的时候,不是字节或者字。硬盘读写是安装块为单位进行读写,对应一个扇区。固态硬盘容量有1T。所以,硬盘不能确定是否事随机访问的,是介于随机访问和确定访问之间的。

    访问速度不同,速度的差异,计算机访问GPU和内存的差异,所以有CACHE。随着新的存储硬件的出现,会导致当前存储体系的改变。这是介绍硬盘存储和内存的区别。

    在软件层面,在逻辑层面,进程和文件进行对比。进程有逻辑地址空间和物理地址空间。文件也有逻辑和物理地址空间。read函数的偏移,是文件的逻辑空间的偏移,实际上存的时候是不一定的。可以看出,进程和文件有一定的相似性,把物理空间映射到逻辑空间。

    很多的技术,本质上是一致的,只是换了一个名字而已。

    文件是一个具有符号的一组相关联元素的有序序列。文件可以包含范围非常广泛的内容。系统和用户都可以将具有一定独立功能的程序模块、一组数据或一组文字命名为一个文件。

     文件有一些操作:比如文件的创建、文件的打开、文件的读写、文件的查找、文件的删除。

    在学习C语言的时候,打开一个文件,返回一个整形的值,为什么是一个整形的值,是一个文件句柄?了解了操作系统后,在于OS把他变成一个进程后,会打开一个系统的文件信息表,有文件的原信息,返回的句柄是文件打开表里面的索引号。在文件进行操作,EAD传进去,在进程里面没有文件的信息,信息在文件打开表里面才有。在执行文件打开,返回文件句柄是进程打开表的索引。

    元数据:数据的数据。数据实际包含的一些内容。描述和管理这些文件的一些其他数据。常用的采用一个目录进行组织。目录有层次化和扁平的结构物。

    怎么维护一个进程:进程在内存的那些地方,怎么找到空闲的内存区域。文件和进程有很大的相似性。

    块和分页内存管理非常相似。寻道和旋转会花费很多的时间。

    请求分页,调页,需要在磁盘里面读取,块的大小和页的大小是一样的,只需要调用一次。

     文件系统的功能:新建文件,需要找到啊一块内存进行存储。

    文件系统的实现:会有一个文件云数据,描述文件的基本信息,放在INode里面,叫做I节点,属于谁,有多大、数据块放在内存的哪些地方。INode节点和PCB的作用相似。文件系统里面,有I信息。最大的区别,PCB在内存里面,属于内核,为创建进程创建的数据结构;INode结点不在内存,放在硬盘(磁盘)上面,需要修改、创建、删除文件信息的时候才会在内存,完成任务后,也会再次放入磁盘(硬盘)中。

    为了实现文件系统:有超级块(描述整个文件系统的信息,INode节点描述一个文件的信息)等等部分。大部分文件都是比较小的,使得我们必须支持大量的小文件,程序和文档都需要支持大量的小文件。使得块的大小不能太大,会有内部碎片,浪费内存空间,例如块的大小定义为4K,则文件都是4K的,所以不要把块的大小定义太大了。我们支持大的文件的访问,而且需要高效地访问。关注大量的小文件如何高效地访问。

    社交网络、Facebook、微博等上传大量的小文件,如何高效地管理。

    高效:I/O操作的次数,传统的文件系统,访问一个文件系统,需要做多次I/O访问硬盘,因为读取INode信息、文件的数据块在不同的地方进行多次读取。当有大量的小文件的时候,需要有缓存,但是微博不能把这么多的文都缓存起来,那要怎么做呢?

    注意:Hadoop是大文件。

    如何查找和管理文件?有文件的元数据,元数据里面有数据块在磁盘的位置,描述位置的方法是块族,有编号,从0,1,2,3,4开始编号。机械硬盘不是一维结构,是三维结构,盘片是上下存储,还有磁道、扇区。CHS(磁道、盘片、扇区)三维的结构,把逻辑的盘号转化为助眠、磁片和扇区。块组为逻辑编号。有一个简单的映射关系。逻辑的可以找到具体的真实位置。

    文件分配方法:

    一、连续分配,和内存的连续分配是相似的,蓝色的是空闲的 ,其他的是占用的。I节点存储了文件的基本信息,有一个指针,文件开头指向第几块,文件包含多少块,即文件的大小是多少块。适合只读的文件系统。

    二、链接分配,FAT文件系统。缺点:可靠性有一些问题。

    采用位图的方式是很高效地 ,例如1TB 的硬盘有4KB块,是2^28bits或者是32MB。找首次遇到是你全1的位置。

    文件数据的分配方法:可以通过索引的方式、连续的放在一起的方式,表示空闲的数据块和空闲的空间。

    如何删除文件:删除文件需要把数据块返回、索引块返回、清除I节点信息,更新目录的数据块。同时目录的元数据信息发生了变化,有大量的工作需要做。

    分区是按照不同的柱面分区的。

     期末考试:::~!!!!!!!!

    EXT2磁盘的布局:一块里面有很多的扇区,有编号,通过映射的关系把逻辑的映射成物理的磁盘、盘片和扇区。文件系统的所有的快都是相同大小的,没有所谓的不同大小块的需求。如果需要做一个支持不同大小块的文件系统理论生没有问题,可以尝试。若干块划分成很多的组,有编号0,1,2,3等,一个块组有很多的块。每个块组的快的数量是不同的。采用可变块组的方式效率低,所以快组的包含的快的数量和大小是相同的。每个块组里面有超级快,描述整个文件系统的原信息,超级快作用是快速进行恢复,信息一旦被损坏只有一份,则通过超级快可以提高文件系统的可靠性,是通过冗余实现的,这里有多个冗余,比一个冗余更可靠。超级块里,有文件的信息,EXT2,EXT3还有块的大小,索引块的个数、索引节点的个数、总的块个数。组描述符:有块位图的位置,由指针想指向这些位置,用位的方式表示位被占用还是空闲的,描述组的情况。块位图:占用1,空闲对应0,分配文件的时候,可以看块位决定,计算机擅长做位运算。索引节点表:一系列的INode可以在多个块组里分布,在一个块组里面是连续,很方便。一个索引节点对应一个文件,每个文件有它自己的ID,unix把目录也当成文件。索引节点属于管理的开销,放在磁盘上面。

    文件的索引节点包含的信息有:文件的模式、文件的ID和文件的大小等等。

    目录:也是一种文件,有固定的格式。目录中每个文件,都对应了一个目录项。若干个目录项构成了目录文件的内容。

    软盘的元数据布局:软盘现在不常见了。

    20MB EXxt2文件系统的磁盘组织:位图、i节点表 等等内容。

    如何在ext2文件系统中找到一个文件?假设查找文件/root/test;假设/root的索引节点号已知。

    找文件的方法:知道root目录索引节点号,通过索引节点的数目,知道在哪个块组里面,找到对应的索引节点,找到索引节点的起始点,知道在索引节点表里面的第几个,读出来,有关于目录文件的数据块,读进来,有目录项,都是关于文件名和索引节点号等信息,找到了!

    网络和分布式文件系统

    远程的文件,在另一台机器上的文件读取、创建、删除。

    网络之间消息的传递:本地消息传递基于网络的方式的一种扩展。

     RPC:远程过程调用,是静态指定、自动寻找,通过网络,所以很有可能失败,有很多因素引发,可能是网络断了、网关、路由器断了、服务器没有启动、装代码出现问题,参数编排出错。这不仅仅是远程过程调用所存在的问题,是所有分布式系统存在的问题,是因为通过了网络,所以会有这些问题。这是分布式系统里面固有的问题。如出现了问题,有一些机制来处理这些问题。

    装代码是自动生成的。

    参考链接:https://baike.baidu.com/item/%E6%96%87%E4%BB%B6/6270998?fr=aladdin

    雪儿言
  • 相关阅读:
    泛微云桥e-Bridge 目录遍历,任意文件读取
    (CVE-2020-8209)XenMobile-控制台存在任意文件读取漏洞
    selenium 使用初
    将HTML文件转换为MD文件
    Python对word文档进行操作
    使用java安装jar包出错,提示不是有效的JDK java主目录
    Windows server 2012安装VM tools异常解决办法
    ifconfig 命令,改变主机名,改DNS hosts、关闭selinux firewalld netfilter 、防火墙iptables规则
    iostat iotop 查看硬盘的读写、 free 查看内存的命令 、netstat 命令查看网络、tcpdump 命令
    使用w uptime vmstat top sar nload 等命令查看系统负载
  • 原文地址:https://www.cnblogs.com/weixq351/p/14701621.html
Copyright © 2011-2022 走看看