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

行业网站建设哪家专业小说类网站功能建设

行业网站建设哪家专业,小说类网站功能建设,怎么找网站建设,平面广告设计作品集目录 1.什么是文件系统 2.磁盘 2.1什么时磁盘 2.2磁盘的物理存储结构 2.3磁盘的逻辑抽象结构 3.磁盘文件系统#xff08;EXT2#xff09; inode Table(i结点表) Data Block inode Bitmap(inode位图) Block Bitmap(块位图) 在Linux如何删除文件 Group Descriptor Ta…目录 1.什么是文件系统 2.磁盘 2.1什么时磁盘 2.2磁盘的物理存储结构 2.3磁盘的逻辑抽象结构 3.磁盘文件系统EXT2 inode Table(i结点表) Data Block inode Bitmap(inode位图) Block Bitmap(块位图) 在Linux如何删除文件 Group Descriptor Table (GDT) 超级块Super Block 文件系统如何对分区进行管理 理解文件系统中的目录 如何在磁盘中确定分区 1.什么是文件系统 这里我们知道打开文件就是将文件加载到内存中我们知道在我们使用的计算机中内存要远远小于外设的也因此在操作系统中打开的文件可能是计算机文件的1%或0.1%等。 这里我们知道在操作系统中我们会对打开的文件进行先描述再组织创建内核数据结构管理起来。那在外存中的那些未打开的文件又是怎么样的呢 那些未被打开的文件在外设中也是按照一定的规则被管理着的方便用户即时快速的打开文件这也是为什么你在使用打开文件时只需要用fopen提供路径就可以快速打开文件的原因。 这里我们可以举快递站的例子 快递站每天都会收到很多快递这里只有极少数的快递会被拿走(被打开的文件),绝大多数快递会被滞留在快递站里(未被打开的文件)。如果我们不对滞留的快递做管理会使快递堆积成山。这时当人来拿快递时(打开文件)就会花费很长的时间还不一定能找的到。 这里我们把管理打开的文件与未被打开的文件的过程叫做文件系统 2.磁盘 2.1什么时磁盘 磁盘是---硬件---物理存储设备它由于容量大价格便宜被企业大量使用。 磁盘主要由磁头与盘面组成。 有多个盘面盘面的上下两面都可以记录数据。每个面都对应的有一个磁头。 磁盘的盘面可以被读写。 磁头开以左右移动盘面可以逆时针或顺时针高速旋转旋转速度很快通过这样可以定位到盘面上的任意位置。 因此磁盘的读写是机械运动注定了磁盘是非常慢的。这也是为什么在执行可执行文件时要把可执行文件预先放到内存中的原因。 注磁盘里的磁头与磁面没有挨着只是离得非常近。 2.2磁盘的物理存储结构 磁盘盘面虽然表面光滑但是由一圈一圈的同心环组成的。这一圈的环我们叫做磁道。磁道之间也是有一定的距离的。 一个磁道被两条半径所组成的区域我们叫做扇面(图中红色部分) 这里我们可以知道 一个盘面可以有很多同心磁道组成 一圈磁道可以有很多的扇区组成 扇区是磁盘在访问时的最小存储单元---一般是512字节 注如果你想读或写磁道上的数据时必须把数据所在的扇区全部加载到内存中。也正是因此磁盘也被叫做块设备 每一个磁道所存储的数据大小是一样的因此里圆心越近的磁道数据密集程度越密越远数据越疏。 如何向一个扇区写入数据我们该如何寻址(定位) 1.选择那一面---本质是选择那一个磁头 2.选择该面上的哪一个磁道也叫柱面 3.选择该磁道的哪一个扇区 这里我们把这种方法叫做CHS定位法C--cylinder(柱面)。  H--Head(磁头)  S--sector(扇区) 2.3磁盘的逻辑抽象结构 这里我们先那磁带举例说明 相信大家小时候都玩过磁带里的磁条我们可以将它拿出来拉成一条直线。这里我们可以类比将磁盘的盘片想象成为线性空间。 那么整个磁盘可以看作一个sector arr[n]的数组这样对磁盘数据的管理就变成了对数组的管理只要知道数组的下标我们就可以通过计算算出数据是在那个磁头磁道与扇区上通过CHS定位法在磁盘上找到。 对于操作系统可以按照扇区为单位进行存取也可以基于文件系统按照文件块为单位进行数据存取以8个扇区[4KB]为基本单位--文件块)。做LBA(Logical Block Address).这里LBA也是数组下标因此我们也可以通过计算与CHS法完成对磁盘数据的读写不同的是LBA一次操作8个扇区。 因此对于存储设备的管理OS层面就转换成为了对数组的增删改查 3.磁盘文件系统EXT2 这里我们知道磁盘的内存是比较大的例如一块500GB的磁盘我们对磁盘中文件的管理也就是对这500GB空间的管理。这里如果直接对这500GB的空间管理难度太大也不利于我们用户的使用。因此对于磁盘的管理我们采用了分治的策略将500GB的空间分成5个100GB进行管理 每个100GB又划分成多个2GB进行管理。这样我们就可以先把这2GB的空间管理好然后再把成功的管理方法在其他的区域照搬实行。 这里我们把将500G划分成100G的动作叫做分区。(这里对于我们平常使用的笔记本电脑只有一块磁盘而我们在电脑上看到的C盘D盘等其实就是把一大块的磁盘分区后给每个区取的名字)。 那么我们又是如何管理好每一个分区的呢 这里我们还是觉得100GB的空间有一点大因此这里我们还继续划分。将100GB划分为一个2GB空间的一个goup(组)。因此对于磁盘的管理我们就简化为了对于这一个组2GB的管理只要我们把这2GB的空间管理好其他组就可以照搬管理了。 思想如图 那么又是如何管理这2GB的空间的呢 这里Linux系统采用了这样的方法 我们把每一个分区划分成一个一个的块组(2GB的空间Block group)这样我们对于2GB的空间管理就变成了对块组进行管理而在块组中又有如下部分。 Boot Block 我们叫做启动块。一般启动块会在整个磁盘中编号为0的磁头编号为0的盘面编号为0的磁道的第一个扇区与计算机启动有关。 这里要想解释后面的五个我们要先补充一些知识 一我们要知道磁盘存储文件本质是存储文件信息(文件内容属性)文件管理的数据。这些对于磁盘来说都是数据在Linux中采用了内容与属性分开存储。 同时Linux规定在在使用磁盘分区时先要让管理数据写入块组中这个工作我们叫做格式化。 在Linux中找到一个有文件的目录 然后使用两个指令 ll 与 ls -li 这里我们发现在使用ls -li指令时多出来了一部分数字在Linux中我们把他们叫做 inode编号一般情况下一个文件只有一个inode编号基本上每一个文件都必须有。inode编号在一个分区里具有唯一性。Linux内核中识别文件和文件名无关只和inode有关。 接下来先解释就开始解释。 inode Table(i结点表) : 存放文件属性 如 文件大小所有者最近修改时间等. 这里我们要知道文件属性的种类与大小时确定的不会发生变化。因此在磁盘中保存文件属性是通过创建一个inode结构体保存。也就是说一个inode对象里就存储着一个文件的属性。 struct inode {//文件大小//权限//拥有者//所属组//inode编号// ... } 在Linux中这个结构体的大小是固定的128字节。 因此正如其名一样inode Table中存储着很多个inode。当我们知道inode Table的大小时我们就可以计算出inode Table中最多可以存放多少个文件。并且inode在表中的位置就是在块组中的inode编号因此在表中也很容易找到inode在表中的位置inode编号*128。所以inode Table 可以看成struc inode inode_table[n](struct inode为元素的一个数组)。  这里可能有人会问如果像上面那样在一个分区里inode编号不是就有可能重复了吗 这里其实是这样的 在Linux系统中会在每一个块组的最前面加上一个start_inode_number。块组里的inode编号start_inode_number就是使在一个分区里的每一个inode编号不同。这也是最终在分区上的inode编号。如果你想知道你在inode Table表中的位置也很简单只需要拿着我们最终使用的inode编号 - 对应的start_inode_number就可以知道inode是表中的第几个。 Data Block :数据区存放文件内容 从上面我们知道文件的属性与内容是分别存储的属性存在inode Table中而Data Block就是用来存数据的。 它里面是以4KB为单位的数据块区域 这里的每一个数据块都保存的是整个块组里所有文件的内容数据。为了便于找到对应的数据每一个数据块也都应该有一个编号。 为了我们方便找到一个文件对应的数据块因此struct inode里有一个数组 int blocks[N] (N一般是15)。这个数组记录的是文件内容在Data Block里对应的数据块的块号。如当一个文件的内容被放在了124这三个数据块中。那么文件对应的inode结构体里的block数组中记录的值就是124。 这里可能有人会问如果这样那么一个文件内容大小最多只能是15*4KB那写几个GB的文件又是怎么来的呢 这里我们要说block数组采用了这样的策略前13个元素是直接映射第14个采用二级映射第15个采用三级映射。 直接映射block数组记录的数据块直接存储文件数据。空间大小13*4KB 二级映射block数组记录的数据块存储的是数据块号再接着找到的数据块才存储数据。空间大小4KB/4*4KB。 三级映射block数组记录的数据块存储的是数据块号再接着找到的数据块还是存储的数据块号号再找到的数据块才是存储的数据。空间大小4KB/4*4KB/4*4KB。 如果块组中的数据块全部用完还是还没存储完文件数据那么可以同一分区里其他块组的数据块块组中记录其他分区的区号与所用的数据块。(注可以跨块组使用数据块但不能跨分区) 了解到这里未来当我们需要读取一个文件时我们只需要知道这个文件的inode就可以获取文件的各种属性再通过inode里的block数组里的内容到Data Block里找到对应编号的数据块就可以将数据库的内容导入到内存中就获取文件内容。同时这样文件的属性与内容就关联了起来。 那么我们又怎么找到这个文件的inode呢其实最终还是落到了找到这个文件的inode编号上在整个分区上具有唯一性。 所以当我们找到inode编号先减去start_inode_number,定位是在那个块组里然后再在inode Table找到inode找到文件属性通过bloc数组内容在Data Block中找到文件内容最后将文件的属性与内容加载到内存中就从磁盘中读取出来。 inode Bitmap(inode位图) : 通过位图用一个bit来表示inode是否空闲可用。 这里我们知道当我们创建一个文件时我们就要在inode表里给它分配一个inode那么我们如何知道表里面那个inode不可用那个可以用呢这里就是用位图来解决的。 这里我们用位图中bit的个数来表示inode Table最多又几个inode用0来表示该inode可以使用用1表示该inode不可以使用。 通过遍历这个位图知道那写inode不可以使用那些可以使用。然后通过合适的算法分配一个该创建的文件。因此inode Bitmap管理着inode Table. Block Bitmap(块位图) Block Bitmap中记录着Data Block中哪个数据块已经被占用哪个数据块没有被占用 这里同inode Bitmap相同用位图来管理标记数据块的使用情况。 在创建文件时遍历Block Bitmap用合适的算法分配合适的数据块给文件存储数据。Block Bitmap管理着Data Block 因此从我们可以得知 inode Table与Data Block存储着文件信息inode Bitmap与Block Bitmap存储着因管理文件而产生的数据。 在Linux如何删除文件 根据文件inode编号找到inode结构体获取block数组里的数据将Block Bitmap中对应的对应的bit位置为0。用相同的方法可以将inode Bitmap中对应的bit位置为0。因为在inode BItmap与Block Bitmap中0表示inode与数据块为空可用。当其再次使用时只需将新文件的属性与内容覆盖即可 因此删除文件只是消除管理文件的数据并不会立即就删除文件的属性与内容。 同时这也是我们为什么能进行数据恢复的原因 在Linux系统中有一个日志文件可以记录被删除文件的inode编号这样我们就可以得知其用了那个inode与数据块。然后将其在inode Bitmap与Block Bitmap中对应的bit位置为1。要在这个inode编号再次被利用前进行数据恢复因为一旦被再次利用被删除文件的属性内容就会被覆盖 同时根据创建与删除文件的过程我们也可以知道为什么下载文件要远远慢于删除文件 下载文件要分配inode查找可用的inode与数据库再把文件的属性与内容拷贝到上面。 删除文件只需用inode找到其对应在inode Bitmap与Block Bitmap中的bit位置为0即可。 Group Descriptor Table (GDT) :块组描述符描述块组属性信息(使用情况) 主要记录了有多少个inode多少个inode被使用。有多少个数据块多少个数据块被使用了等块组信息用来衡量整个块组的使用情况。 超级块Super Block 存放文件系统本身的结构信息。记录的信息主要有 block 和 inode 的总量未使用的block 和 inode 的数量一个 block 和 inode 的大小最近一次挂载的时间最近一次写入数据的 时间最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block 的信息被破坏可以说整个 文件系统结构就被破坏了 注Super Block不属于块组。可能只有几个块组有不是每个一个都有的。 为什么Super Block不想GDT一样每一个块组都有或是只有一个而是在几个块组才有 这里我们知道GDT是用来存储一个块组的信息Super Block是用来存储一个分区的信息。 首先GDT管理的空间较小如何一个GDT挂掉对于计算机整体而言影响并不是很大。而Super Block 管理的空间很大如果只有一个它挂掉了就会导致电脑中这个盘无法使用。如果是C盘的挂掉了就是导致这台电脑无法使用。因此为了防止才在一个分区用多个Super Block。同时每一个分区只需要一个就行了如果每一个块组都有一个就会有很大的冗余浪费空间。 文件系统如何对分区进行管理 这里还是根据操作系统的六字真言先描述再组织。 在内核里会维护一张文件系统列表一个结构体对象:它使用来存储每一个分区的Super Block。因此在操作系统软件上对整个磁盘的管理就变成了对几个Super Block的管理  文件系统只用inode编号来找到文件对其进行操作的但是用户使用时一直用的都是文件名。 因此在系统中文件名要与inode有一个映射关系。 那这个映射关系又是如何做到的呢这里我们就要先理解一下目录。 理解文件系统中的目录 首先目录也是一个文件因此目录有自己的inode与数据块也是有它的属性与内容。这里目录的属性与普通文件一样。而目录的数据块中存储着文件名与该文件inode的映射关系(每个文件名对应的inode)。 这也解释了为什么一个目录下不 能出现同名文件因为一个文件名只有一个inode。  同时也解释了为什么我们可以通过一个文件名就可以找到磁盘中的文件我们可以在文件所在目录在目录的数据块找到文件名对应的inode编号就可以找到文件将文件导入内存。 在Linux中在一个目录下新建删除修改一个文件对于这个目录我需要什么权限呢 当然是w权限。 那么今天我们知道这里的新建删除修改本质是修改目录文件的数据块内容就是对文件进行修改因此需要w权限。 如何在磁盘中确定分区 这里我们所说的文件系统内容都是在一个分区里进行的但是我们知道在磁盘中是要先确定分区的那么在Linux中又是如何做到的呢 Linux中是通过挂载使用指令 sudo mount /dev/sdb1 (分区)/mnt(目录) 将一个目录我们常用的C盘D盘等与分区关连起来可以通过路径的前缀得知是在那个分区的。 因此在我们系统获得一个路径时先通过路径前缀确定在那个分区然后再在前缀目录的数据块里找到下一级目录对应的inode然后按照这个方法遍历路径到底 在磁盘中找到文件对应的inode然后将用文件的属性与内容加载到内存中。
http://www.pierceye.com/news/777057/

相关文章:

  • 中企动力网站建设合同中天建设招标网站
  • 湖南手机版建站系统开发wordpress获取用户角色
  • 南皮网站建设价格泰安房产信息网官网首页
  • 网页制作与网站建设实战大全重庆房产信息网官网
  • 上海的网站建设公司app对接网站登录要怎么做
  • 江苏省备案网站现在什么网站做外贸的最好
  • 如何知道网站是否被k蓝山网站建设
  • 网站维护服务公司免费的网站推广渠道
  • 网站建设方案应该怎么写asp网站无法上传图片
  • 建个网站多少钱app企业关键词排名优化公司
  • 电子商务他们的代表网站代码网站怎么做的
  • 如何做网站卖东西长春互联网公司排名
  • 怎样拥有自己的网站制作网站的步骤和方法
  • 北京电子商务app网站建设大兴小程序源码如何部署到服务器
  • 设计找图网站网站用什么构建
  • 做微信的网站叫什么软件湛江网站建设制作维护
  • 做网站商城多少钱wordpress链接公众号
  • 数码产品销售网站建设策划书金融类网站模板
  • 档案网站建设视频网络软营销的案例
  • 德州市建设局质监站网站织梦做的网站打包在dw修改
  • 做那个男女的视频网站湖南响应式网站公司
  • 1个ip可以做几个网站电商网站建设阿里云
  • 网站做seo需要些什么wordpress虎嗅破解版
  • 网站开发按钮图片素材巩义自助建站优化
  • 石家庄网站建设接单常见的网络直接营销有哪些
  • 上海网站建设技术托管找合伙人做网站
  • 网站和自媒体都可以做东莞专业营销网站建设推广
  • 毕业设计网站怎么做校园网二手书交易网站建设
  • 网站运营托管协议凡科建设网站还用买服务器吗
  • 黑龙江省建设网官方网站erp系统软件免费版