范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Linux文件系统之MINIX文件系统

  MINIX 文件系统与标准 UNIX 的文件系统基本相同,它由 6 个部分组成:①引导块;②超级块;③ i 节点位图;④逻辑块位图;⑤i 节点;⑥数据块。对于一个普通的磁盘块设备来说,其各部分的分布见下图:
  整个块设备被划分成以 1KB 为单位的磁盘块。
  引导块是计算机加电启动时可由 ROM BIOS 自动读入的执行代码和数据盘块。但一个系统中并非所 有盘设备都用于作为引导设备,所以对于不用于引导的盘片,这一盘块中可以不含代码。但任何盘块设 备必须含有引导块空间,以保持 MINIX 文件系统格式的统一。即文件系统只是在块设备上空出一个存放 引导块的空间。如果你把内核映像文件放在文件系统中,那么你就可以在文件系统所在设备的第 1 个块 (即引导块空间)存放实际的引导程序,并由它来取得和加载文件系统中的内核映像文件。
  对于容量巨大的硬盘块设备,通常会在其上会划分出几个分区,并且在每个分区中都可存放一个不 同的完整文件系统,见下图。
  图中表示有 4 个分区,分别存放着 FAT32 文件系统、NTFS 文件系 统、MINIX 文件系统和 EXT2 文件系统。硬盘的第一个扇区是主引导扇区,其中存放着硬盘引导程序和 分区表信息。分区表中的信息指明了硬盘上每个分区的类型、在硬盘中起始位置参数和结束位置参数以 及占用的扇区总数,参见 kernel/blk_drv/hd.c 文件后的硬盘分区表结构
  超级块用于存放盘设备上文件系统的结构信息,并说明各部分的大小。其结构见下图(MINIX 文件系统):
  系统启动时会从磁盘的超级块中读取信息,初始化上图表中的数据结构。
  其中, s_ninodes 表示设备上的 i 节点总数。s_nzones 表示设备上以逻辑块为单位的总逻辑块数。s_imap_blocks 和 s_zmap_blocks 分别表示 i 节点位图和逻辑块位图所占用的磁盘块数。s_firstdatazone 表示设备上数据 区开始处占用的第一个逻辑块块号。s_log_zone_size 是使用 2 为底的对数表示的每个逻辑块包含的磁盘 块数。对于 MINIX 1.0 文件系统该值为 0,因此其逻辑块的大小就等于磁盘块大小,都是 1KB。s_max_size 是以字节表示的最大文件长度,这里不超过 4GB。当然这个长度值将受到磁盘容量的限制。s_magic 是 文件系统魔幻数,用以指明文件系统的类型。 struct minix_sb_info { unsigned long s_ninodes; //该成员用于描述 MINIX-FS 文件系统含有的 inode 数量。该值用于计算 Inode-Bitmap 和 Inode-Table 的大小 unsigned long s_nzones; //该成员用于描述 MINIX-FS 文件系统中含有的 Zone 的数量。该值用于计算 Zone-Bitmap。 unsigned long s_imap_blocks; //该成员用于描述 Inode-BitMap 占用 BLOCK_SIZE 的数量,Inode-BitMap 中的每个位表示一个 inode 的使用情况,如果某一个置位,那么对应的 minix_inode 就被使用,反之表示对应的 minix_inode 没有被使用。 unsigned long s_zmap_blocks; //该成员用于描述 Zone-BitMap 占用 BLOCK_SIZE 的数量。Zone-BitMap 中的 每个位表示一个 Zone 的使用情况,如果某一位置位,那么对应的 zone 就被 使用,反之表示对应的 zone 没有被使用。 //该成员用于描述第一个 data zone 所在的 block 号。Zone 分为两类,一类是 Reserved 的,用于存储 MINIX-FS 的系统信息,另外一类是 Data zone,用于 存储文件和目录的,而 s_firstdatazone 用于指向第一个 data zone 的 block 号 unsigned long s_firstdatazone; //MINIX-FS 将文件系统分成 BLOCK_SIZE 大小的数据块,BLOCK_SIZE 的大小由 s_log_zone_size 决定,其计算方法如下:BLOCK_SIZE = 1024 << s_log_zone_size unsigned long s_log_zone_size; unsigned long s_max_size; //s_imap[8] 是一个文件缓存数组。数组用于缓存 MINIX-FS 的所有 Inode-BitMap 内容。 struct buffer_head * s_imap[8]; //s_zmap[8] 是一个文件缓存数组,数组用于缓存 MINIX-FS 的所有 Zone-BitMap 内容 struct buffer_head * s_zmap[8]; //s_dirsize 用于描述 minix_dir_entry 结构的大小,minix_dir_entry 用于描述 一个 minix 目录。 unsigned long s_dirsize; unsigned long s_namelen; //s_namelen 用于描述文件或目录名字的大小 struct buffer_head * s_sbh; //s_sbh 用于缓存磁盘中 MINIX-FS 的超级快信息 struct minix_super_block * s_ms; //s_ms 用于指向 minix_super_block 在内存中的位置。 unsigned short s_mount_state; //s_mount_state 用于描述 MINIX-FS 的 mount 状态。 };
  较低版本系统中使用一个全局的super_blocks[]来保存超级块,该数据有多少元素也就支持多少个文件系统,高版本使用全局的super_blocks链表。
  超级块表将在 super.c 程序的 mount_root()函 数中被初始化,在 read_super()函数中会为新加载的文件系统在表中设置一个超级块项,并在 put_super() 函数中释放超级块表中指定的超级块项。
  逻辑块位图用于描述盘上每个数据盘块的使用情况。除第 1 个比特位(位 0)以外,逻辑块位图中 每个比特位依次代表盘上数据区中的一个逻辑块。因此逻辑块位图的比特位 1 代表盘上数据区中第一个 数据盘块,而非盘上的第一个磁盘块(引导块)。当一个数据盘块被占用时,则逻辑块位图中相应比特位 被置位。由于当所有磁盘数据盘块都被占用时查找空闲盘块的函数会返回 0 值,因此逻辑块位图最低比 特位(位 0)闲置不用,并且在创建文件系统时会预先将其设置为 1。
  当向磁盘申请一个逻辑块时,对整个逻辑块位图进行搜索,寻找首个是 0
  的比特位,该比特位所在的序号即为该数据库的逻辑块号,然后把逻辑块号保存到i_data[]中。
  从超级块的结构中我们还可以看出,逻辑块位图最多使用 8 块缓冲块(s_zmap[8]),而每块缓冲块大小是 1024 字节,每比特表示一个盘块的占用状态,因此一个缓冲块可代表 8192 个盘块。8 个缓冲块 总共可表示 65536 个盘块,因此 MINIX 文件系统 1.0 所能支持的最大块设备容量(长度)是 64MB。
  i 节点用于存放盘设备上每个文件和目录名的索引信息。i 节点位图用于说明 i 节点是否被使用,同 样是每个比特位代表一个 i 节点。对于 1K 大小的盘块来讲,一个盘块就可表示 8192 个 i 节点的使用状 况。与逻辑块位图的情况类似,由于当所有 i 节点都被使用时查找空闲 i 节点的函数会返回 0 值,因此 i 节点位图第 1 个字节的最低比特位(位 0)和对应的 i 节点 0 都闲置不用,并且在创建文件系统时会预 先将 i 节点 0 对应比特位图中的比特位置为 1。因此第一个 i 节点位图块中只能表示 8191 个 i 节点的状 况。
  盘上的 i 节点部分存放着文件系统中文件或目录名的索引节点,每个文件或目录名都有一个 i 节点。每个 i 节点结构中存放着对应文件或目录的相关信息。
  所以图中
  i_mode ... i_zone[] 这些一条条信息是保存到磁盘中的inode信息,当需要某个读取inode信息时,会从i节点中读取一条对应的inode信息保存到内存中,同时是使用 i_zone[]进行初始化 inode结构中的i_data[], 所以在内存中使用的是i_data[] 保存数据块地址,当同步inode节点时,把内存中的i_data[] 刷到磁盘i_zone[]中。
  当创建一个inode节点时先从i节点位图中获取一个bit未使用的位,根据该bit位对应的位置下标(比如该bit位置为第1025的位置),根据下标从i节点中计算属于哪个数据块中,然后从对应的块中进行索引找到块中第n条i节点数据,
  然后从该i节点数据中i_zone[]中即可获取或者存放数据。
  如文件宿主的 id(uid)、文件所属组 id(gid)、文 件长度、访问修改时间以及文件数据块在盘上的位置等。整个 i 节点结构共使用 32 个字节,见下图所示:
  i_mode 字段用来保存文件的类型和访问权限属性。其比特位 15-12 用于保存文件类型,位 11-9 保存 执行文件时设置的信息,位 8-0 表示文件的访问权限,见下图
  文件中的数据存放在磁盘块的数据区中,而一个文件名则通过对应的 i 节点与这些数据磁盘块相联 系,这些盘块的号码就存放在 i 节点的逻辑块数组 i_zone[]中。其中,i_zone[]数组用于存放 i 节点对应文 件的盘块号。i_zone[0]到 i_zone[6]用于存放文件开始的 7 个磁盘块号,称为直接块。若文件长度小于等 于 7K 字节,则根据其 i 节点可以很快就找到它所使用的盘块。若文件大一些时,就需要用到一次间接块 了(i_zone[7]),这个盘块中存放着附加的盘块号。对于 MINIX 文件系统一个盘块中可以存放(1024 / 2) = 512 个盘块号,因此可以寻址 512 个盘块。若文件还要大,则需要使用二次间接盘块(i_zone[8])。二 次间接块的一级盘块的作用类似与一次间接盘块,因此使用二次间接盘块可以寻址 512*512 个盘块。参 见下图 所示:
  所以对于 MINIX 文件系统 1.0 版来说,一个文件的最大长度为(7 + 512 + 512*512)= 262,663KB。
  这些 i_zone[]信息是保存在磁盘中的,当读取inode时会把这些 i_zone[] 刷到inode 中的 i_data[] 中,也即是在内存中以 i_data[]方式存在。
  另外,对于/dev/目录下的设备文件来说,它们并不占用磁盘数据区中的数据盘块,即它们文件的长 度是 0。设备文件名的 i 节点仅用于保存其所定义设备的属性和设备号。设备号被存放在设备文件 i 节点 的 zone[0]中。
  当所有 i 节点都被使用时,查找空闲 i 节点的函数会返回值 0,因此,i 节点位图最低比特位和 i 节点 0 都闲置不用。i 节点 0 的结构被初始化成全零,并在创建文件系统时将 i 节点 0 的比特位置位。
  参考文档
  http://www.oldlinux.org/download/CLK-5.0-WithCover.pdf#page=648&zoom=100,72,450

Steam夏季特卖10款耐玩游戏,方舟生存进化玩10000小时都不腻Steam夏季特卖活动已经持续了不少的时间了,不知道大家是否选到了自己所心仪的游戏呢?如果还没有,那么下面这10款游戏大家可以重点考虑一下,这些游戏都很耐玩,有些玩家甚至在这些游戏北京朝阳区马家湾湿地公园夏季湿地观鸟正当时五月的时候写过一篇简单介绍北京朝阳区马家湾湿地公园观鸟的文章,从五月份开始,我基本每周都会去马家湾湿地公园做一次观鸟,零零散散坚持了两个月,慢慢的对马家湾湿地公园有了一点心得,简单用学习电脑玩游戏是什么体验?小智直呼内行有小时候那味了小智我玩过的手机PC等数码产品也不少了,但从来没想过有一天会在学习电脑上玩游戏,而且体验还非常好,简直是二合一大礼包。别以为不可能!最开始我也是这么想的,后来看到了这台天骄AIO1曝洗米嫂举步维艰!安以轩自谋生路,停169天后晒自拍,目的明显洗米华风光半辈子,从被捕进去那刻算是完了,再无出头之日。而作为他原配的洗米嫂,因为丈夫跌下神坛,她所有的荣誉头衔被嘲,生活也发生翻天覆地变化。如今洗米嫂不再是商业女强人,只剩单打独行程卡全国摘星!各地纷纷放宽政策,这个夏天就去这6个地方号外!号外!看这里!最近几天,好消息一个接一个,继密接和入境人员隔离147改为73后,工信部又发布重要公告即日起取消通信行程卡星号标记。此消息一公布,半小时内,平台上机票搜索量瞬时炎热的夏天如何调理肠胃?养成4个好习惯远离肠胃病夏天是一个炎热的季节,受高温影响,很多人喜欢在空调房里吃西瓜喝冷饮,很容易出现胃病。夏季常见的消化道疾病有很多,包括急性胃肠炎细菌性食物中毒细菌性痢疾等。因此夏天不能忘了调理肠胃,45岁后的女性每天服用一粒叶酸,或有以下几个好处,不妨了解女性身体分泌的激素以及新陈代谢激素离不开维生素的供应,维生素是身体免疫系统抗氧化机制,叶酸是维生素当中的一员,维护激素代谢器官内分泌以及所需要的营养,叶酸也属于维生素B9,是一种水建议中年人夏天别再心疼钱,这3款菊花茶该喝就喝,好处多多建议中年人夏天别再心疼钱,这3款菊花茶该喝就喝,好处多多中年,是绝大多数人一生中最劳累的阶段,也是最苦的阶段,不仅舍弃了年少的意气风发,更是要养一家老小,剩下更多的都是对生活的妥协9位自然衰老的中老年女星,皮肤松弛满面皱纹,但比整容脸舒服娱乐圈的畸形审美适可而止!从A4腰到反手摸肚脐的身材焦虑,再到现在流行的万年少女感的年龄焦虑,娱乐圈制造容貌焦虑可谓是层出不穷。为了留住那虚幻的少女感,不少女明星跑去整了容,可一个夏夜商店突袭,免费兑换6款皮肤,英雄表情票选启动,前十名出炉七月如期而至,王者峡谷迎来新一轮的福利安排,比如张良史诗皮肤千筹问战第二期点券返还启动,所有拥有张良新皮肤的玩家可登录游戏领取210点券,需要注意的是每期领取都有时效性,错过将无法新疆9月份穿什么衣服?防风防潮防雨防晒透气全要考虑到新疆9月份适合穿的衣服有1三合一冲锋衣也称户外夹克,可以防风防潮防雨防晒防寒还透气,一件可解决全天候穿衣2薄羽绒服搭配夏装,早穿羽绒服午穿夏装3带全四季服装,根据当天气候情况,选择
两性关系,10句暖到骨头的情话1hr春天很暖,夏天很热烈,秋天很惬意,冬天很唯美,而我把四季都用来等你。2hr遇见你,爱上你,既想和你风花雪月,也想和你柴米油盐,还想和你一生一世。3hr爱情,是激情,是火焰,是牛人是怎么练成的?牛人是怎么练成的?只有通过苦难才能实现。纵观历史,所有的伟人都是灾难锤炼出来的。没有九死一生和重大挫折灾难,就不可能造就伟人。如果一个人逃避艰难困苦,他就是在逃避真理,真理会越来越苹果又赚麻了?万元iPhone14ProMax成本仅3174元iPhone作为全球销量和利润最高的智能手机,其成本控制等一直是其他家包括三星可能都模仿不来的。知名市场调研机构Counterpoint最新给出了iPhone14ProMax的Bo大一学生买了苹果14Pro心里有点愧疚怎么办?网上看到这样一个提问最近14pro降价在百亿补贴买的7500256g的确实很划算我现在用的11还是可以用的就是有点虚荣吧再加上内存有点不够就想买我是单亲家庭家里条件只能说是小康过年AMD新一代显卡降价明显,一线品牌RX7900XT已降至6799元过完年之后,AMD新一代显卡降价明显,其中不少一线品牌的RX7900XT已降至6799元,值得关注。第1款推荐的是撼讯(PowerColor)AMDRADEONRX7900XT暗黑自动化运维如何零停机构建与部署项目本文,我们将向您展示如何配置一个流水线,该流水线将在零停机的情况下构建测试和部署项目。零停机是一种部署技术,可让您在此过程中通过终端用户完全更新网站。提醒请确保在您服务器上安装SS华尔街大资金都买了什么?尽管面对通胀和加息阴霾,美股今年以来仍有不俗的表现,道琼斯工业平均指数2023年以来累涨3。31,标普500指数累涨7。76,反映科技股表现的纳斯达克指数更累计上涨13。62,反映网宿科技嘉定云计算数据产业园节能先进案例节能先进在市经济信息化委指导下,市节能中心自2012年开展单位产品能耗限额标准专项检查以来,经过多年贯标培训和节能监察,有力推进企业节能管理水平提高能效水平显著提升,助力高效清洁低陇南市招商引资项目推介会在青举行山海与共,青陇相亲。2月10日,由青岛市农业农村局青岛市乡村振兴局和甘肃陇南市相关部门共同承办的陇南市招商引资项目推介会在府新大厦举行,全市部分商会及200余家企业代表参会。现场,(经济)江苏常州打造石墨烯新材料全产业链近年来,江苏省常州市大力发展石墨烯产业,构建集石墨烯设备研发原料制备与应用研究产品生产下游应用为一体的全产业链。当地依托石墨烯科技产业园和石墨烯产业特色小镇,打造了集众创空间孵化器工业机床行业刀具加工进入超硬时代,受益高端制造升级放量(报告出品方分析师浙商证券诸海滨赵昊)1行业概览切削刀具是工业机床的牙齿,超硬刀具替代普通刀具成为工业市场趋势1。12021年我国刀具市场规模达477亿元,国产化刀具市场份额达71