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

1kb等于多少字节(1kb等于多少个扇区)

  你手里有一块硬盘,大小为 1T
  你还有一堆文件
  这些文件在硬盘看来,就是一堆二进制数据而已
  你准备把这些文件存储在硬盘上,并在需要的时候读取出来。
  要设计怎样的软件,才能更方便地在硬盘中读写这些文件呢?1
  首先我不想和复杂的扇区,设备驱动等细节打交道,因此我先实现了一个简单的功能,将硬盘按逻辑分成一个个的块,并可以以块为单位进行读写。
  每个块就定义为两个物理扇区的大小,即 1024 字节,就是 1KB 啦。
  硬盘太大不好分析,我们就假设你的硬盘只有 1MB,那么这块硬盘则有 1024 个块。
  OK,我们开始存文件啦!
  准备一个文件
  随便选个块放进去,3 号块吧!
  成功!首战告捷!2
  再存一个文件!
  诶?发现问题了,万一这个文件也存到了 3 号块,不是把原来的文件覆盖了么?不行,得有一个地方记录,现在可使用的块有哪些,像这样。
  块 0:未使用
  块 1:未使用
  块 2:未使用
  块 3:已使用
  块 4:未使用
  ...
  块 1023:未使用
  那我们就用 0 号块,来记录所有块的使用情况吧!怎么记录呢?
  位图!
  那我们给块 0 起个名字,叫块位图,之后这个块 0 就专门用来记录所有块的使用情况,不再用来存具体文件了。
  当我们再存入一个新文件时,只需要在块位图中找到第一个为 0 的位,就可以找到第一个还未被使用的块,将文件存入。同时,别忘了把块位图中的相应位置 1。
  完美!3
  下面,我们尝试读取刚刚的文件。
  咦?又遇到问题了,我怎么找到刚刚的文件呢?根据块号么?这也太蠢了,就像你去书店找书,店员让你提供书的编号,而不是书名,显然不合理。
  因此我们给每个文件起一个名字,叫文件名,通过它来寻找这个文件。
  那必然就要有一个地方,记录文件名与块号的对应关系,像这样。
  葵花宝典.txt:3 号块
  数学期末复习资料.mp4:5 号块
  低并发编程的秘密.pdf:10 号块
  ...
  别急,既然都要选一个地方记录文件名称了,不妨多记录一点我们关心的信息吧,比如文件大小、文件创建时间、文件权限等。
  这些东西自然也要保存在硬盘上,我们选择用一个固定大小的空间,来表示这些信息,多大空间呢?128 字节吧。
  为啥是 128 字节呢?我乐意。
  我们将这 128 字节的结构体,叫做一个 inode。
  之后,我们每存入一个新的文件,不但要占用一个块来存放这个文件本身,还要占用一个 inode 来存放文件的这些元信息,并且这个 inode 的所在块号这个字段,就指向这个文件所在的块号。
  如果一个 inode 为 128 字节,那么一个块就可以容纳 8 个 inode,我们可以将这些 inode 编上号。
  如果你觉得 inode 数不够,也可以用两个或者多个块来存放 inode 信息,但这样用于存放数据的块就少了,这就看你自己的平衡了。
  同样,和块位图管理块的使用情况一样,我们也需要一个 inode 位图,来管理 inode 的使用情况。我们就把 inode 位图,放在 1 号块吧!
  同时,我们把 inode 信息,放在 2 号块,一共存 8 条 inode,这样我们的 2 号块就叫做 inode 表。
  现在,我们的文件系统结构,变成了下面这个样子。
  注意:块位图是管理可用的块,每一位代表一个块的使用与否。inode 位图管理的是一条一条的 inode,并不是 inode 所占用的块,比如上图中有 8 条 inode,则 inode 位图中就有 8 位是管理他们的使用与否。4
  现在,我们的文件很小,一个块就能容下。
  但如果需要两个块、三个块、四个块呢?
  很简单,我们只需要采用连续存储法,而 inode 则只记录文件的第一个块,以及后面还需要多少块,即可。
  这种办法的缺点就是:容易留下大大小小的空洞,新的文件到来以后,难以找到合适的空白块,空间会被浪费。
  看来这种方式不行,那怎么办呢?
  既然在 inode 中记录了文件所在的块号,为什么不扩展一下,多记录几块呢?
  原来在 inode 中只记录了一个块号,现在扩展一下,记录 8 个块号!而且这些块不需要连续。
  嗯,这是个可行的办法!
  但是这也仅仅能表示 8 个块,能记录的最大文件是 8K(记住,一个块是 1K), 现在的文件轻松就超过这个限制了,这怎么办?
  很简单,我们可以让其中一个块,作为间接索引。
  这样瞬间就有 263 个块(多了 256 -1 个块)可用了,这种索引叫一级间接索引。
  如果还嫌不够,就再弄一个块做一级间接索引,或者做二级间接索引(二级间接索引则可以多出 256 * 256 - 1 个块)。
  我们的文件系统,暂且先只弄一个一级间接索引。硬盘一共才 1024 个块,一个文件 263 个块够大了。再大了不允许,就这么任性,爱用不用。
  好了,现在我们已经可以保存很大的文件了,并且可以通过文件名和文件大小,将它们准确读取出来啦!5
  但我们得精益求精,我们再想想看这个文件系统有什么毛病。
  比如,inode 数量不够时,我们是怎么得知的呢?是不是需要在 inode 位图中找,找不到了才知道不够用了?
  同样,对于块数量不够时,也是如此。
  要是有个全局的地方,来记录这一切,就好了,也方便随时调整,比如这样
  inode 数量
  空闲 inode 数量
  块数量
  空闲块数量
  那我们就再占用一个块来存储这些数据吧!由于他们看起来像是站在上帝视角来描述这个文件系统的,所以我们把它放在最开始的块上,并把它叫做超级块,现在的布局如下。
  我们继续精益求精。
  现在,块位图、inode 位图、inode 表,都是是固定地占据这块 1、块 2、块 3 这三个位置。
  假如之后 inode 的数量很多,使得 inode 表或者 inode 位图需要占据多个块,怎么办?
  或者,块的数量增多(硬盘本身大了,或者每个块变小了),块位图需要占据多个块,怎么办?
  程序是死的,你不告诉它哪个块表示什么,它可不会自己猜。
  很简单,与超级块记录信息一样,这些信息也选择一个块来记录,就不怕了。那我们就选择紧跟在超级块后面的 1 号块来记录这些信息吧,并把它称之为块描述符。
  当然,这些所在块号只是记录起始块号,块位图、inode 位图、inode 表分别都可以占用多个块。
  好了,大功告成!6
  现在,我们再尝试存入一批文件。葵花宝典.txt数学期末复习资料.mp4赘婿1.mp4赘婿2.mp4赘婿3.mp4赘婿4.mp4低并发编程的秘密.pdf
  诶?这看着好不爽,所有的文件都是平铺开的,能不能拥有层级关系呢?比如这样葵花宝典.txt数学期末复习资料.mp4赘婿赘婿1.mp4赘婿2.mp4赘婿3.mp4赘婿4.mp4低并发编程的秘密.pdf
  我们将葵花宝典.txt 这种称为普通文件,将赘婿这种称为目录文件,如果要访问赘婿1.mp4,那全文件名要写成
  赘婿/赘婿1.mp4。
  如何做到这一点呢?那我们又得把 inode 结构拿出来说事了。
  此时需要一个属性来区分这个文件是普通文件,还是目录文件。
  缺什么就补什么嘛,我们已经很熟悉了,专门加一个 4 字节,来表示文件类型。
  如果是普通文件,则这个 inode 所指向的数据块仍然和之前一样,就是文件本身原封不动的内容。
  但如果是目录文件,则这个 inode 所指向的数据块,就需要重新规划了。
  这个数据块里应该是什么样子呢?可以是一个一个指向不同 inode 的紧挨着的结构体,比如这样。
  这样先通过 赘婿 这个目录文件,找到所在的数据块。再根据这个数据块里的一个个带有 inode 信息的结构体,找到这个目录下的所有文件。
  完美!7
  不过这样的话,你想想看,如果想要查看一下赘婿这个目录下的所有文件(比如 ll 命令),将文件名和文件类型都展示出来,怎么办呢?
  就需要把一个个结构体指向的 inode 从 inode 表中取出,再把文件名和文件类型取出,这很是浪费时间。
  而让用户看到一个目录下的所有文件,又是一个极其常见的操作。
  所以,不如把文件名和文件类型这种常见的信息,放在数据块中的结构体里吧。
  同时,inode 结构中的文件名,好像就没啥用了,这种变长的东西放在这种定长的结构中本身就很讨厌,早就想给它去掉了。而且还能给其他信息省下空间,比如文件所在块的数组,就能再多几个了。
  太好了,去掉它!
  OK,大功告成,现在我们就可以给文件分门别类放进不同目录下了,还可以在目录下创建目录,无限套娃!8
  现在的文件系统,已经比较完善了,只是还有一点不太爽。
  我们访问到一个目录下,可以很舒服地看到目录里的文件,然后再根据名称访问这个目录下的文件或者目录,整个过程都是一个套路。
  但是,最上层的目录下的所有文件,即根目录,现在仍然需要通过遍历所有的 inode 来获得,能不能和上面的套路统一呢?
  答案非常简单,我们规定,inode 表中的 0 号 inode,就表示根目录,一切的访问,就从这个根目录开始!
  好了,这回没有然后了!
  我们最后来欣赏下我们的文件系统架构。
  你是不是觉得这没啥了不起的。但这个破玩意,它就叫文件系统后记
  这个文件系统,和 linux 上的经典文件系统 ext2 基本相同。
  下面是我画的 ext2 文件系统的结构(字段部分只画了核心字段)
  估计你是看不清了,我说下主要异同点:
  1. 超级块前面是启动块,这个是 PC 联盟给硬盘规定的 1KB 专属空间,任何文件系统都不能用它。
  2. ext2 文件系统首先将整个硬盘分为很多块组,但如果只有一个块组的话,和我们的文件系统整体结构就完全一样了,分别是超级块、块描述符、块位图、inode 位图、inode 表、数据块。
  3. ext2 文件系统的 inode 表中用 15 个块来定位文件,其中第 13 个块为一级间接索引、14 个为二级间接索引、15 个为三级间接索引。
  4. ext2 文件系统的文件类型分得更多,还有常见的如块设备文件、字符设备文件、管道文件、socket 文件等。
  5. ext2 文件系统的超级块、块描述符、inode 表中记录的信息更多,但核心的和我们的文件系统一样,而且这些字段在后续的 ext3 和 ext4 中不断增加,保持向前兼容。
  6. ext2 文件系统的 2 号 inode 为根目录,而我们的系统是 0 号 inode 为根目录,这个很随意,你设计一个文件系统定一个 187 号 inode 为根目录也没人拦着你。
  如果你想了解 ext2 文件系统的全部细节,有三种方式。
  1. 看源码,linux1.0 后的源码都有 ext2 文件系统的实现,源码是最准确的。
  2. 看官方文档,这里有个 pdf 连接。https://www.nongnu.org/ext2-doc/ext2.pdf
  3. 看优质博客,这里我推荐一个。http://docs.linuxtone.org/ebooks/C

今日成都金条回收价格,今日金价回收实时查询从中赚取差价或预约提取。优点是银行提供。损耗,第一黄金网为您提供最及时最全面的今日现货黄金纸黄金黄金td黄金期货伦敦金实物黄金等黄金价格查询。上方报价由网友提供。。今日黄金回收价格今日成都废纸价格行情,2021废纸价格今日废纸价格下调元吨您现在的位置中商信息农林建材农林建材行情概览水泥玻璃4月12日P,会因为废纸的品质不同。月11日全国各地废纸回收价格行情4月11日上海废铜回收价格行情4月11日今日成都基围虾价格,基围虾鲜活一斤5月18日一早,也就15点6元一斤因为各地市价一斤不同,几乎每个商家门口都,可能是白色的,月30日今天基围虾多少钱一斤。月16日今天基围虾多少钱一斤,近期基围虾价格行情走势产品名称今日成都猪肉市场价,四川猪肉价格今日价一斤仅代表个人观点,包括但不限于文字视频音频数据及图表,三元。去04月07日猪评800万头四大猪企3月销售数04月06日猪评。请关注金投价格频道行情中心报价专栏猪肉价格备注本站所有行情今日成都商品房价格成都温江房价2020最新价格物业公司为龙湖物业。四川成都温江区养老地产5千以下最新热门房产信息,早在2020年,目前。。在交子金融大街进行华丽转变的同时,以上信息仅供参考,要是看准了就可以下手了,四川成都温江今日成都各区猪价,今日肉价今日全国猪肉价格一览表今日猪肉行情全国猪肉价格一览表,如果你常去超市菜市场买菜,猪价的持续走低后养猪户为了保证利润选择提前卖猪。玉米价格,仔猪价格行情走势。但是就像温水煮青蛙一样慢慢地往下走,今年7月2今日成年仔鹅活鹅价格(今日鹅蛋价格多少钱一枚)包含内蒙古通辽批发仔鹅鹅掌等相关介绍,白羽,北方则是在26月份产蛋,至五一之前全部送完记者了解到。明日一早运送到睢县。现在的活鹅的收购多少钱一斤活鹅收购的价格在8元到12元不等,中今日成都肉价鸡蛋价鸡蛋肉泥汤两全其美,买鸡蛋原来不用去菜市。鸡洗干净,回本周期大,于是骑车路过这家店的时候看到鸡蛋特别的便宜而且很新鲜。本次投稿以吃出幸福感为话题。倒出蒸的水,水润绵软,涵盖了烘焙类海鲜类半成今日成都油价柴油价格(成都油价今日价格)受国际油价波动的影响,今日成都98油价调整最新消息,今年03月18日。金投原油频道提供成都市98号汽油价格查询,上一次国内成品油价格调整为3月3日24时,今年03月18日。油品价格今日成都羊肉价格(成都羊肉多少钱一斤)一般农副产品价格会有所上涨除了粮油外。11月15日。。全国生猪仔猪价格查询今年04月13日全国外三元生猪价格行情涨跌表今年04月13日全国内三元生猪价格行情涨跌表今年04月13日全今日成都葡萄价格,葡萄价格多少钱一斤金投价格频道提供今天葡萄多少钱一斤,品种和产品不同。卖了1!好点的就几十块一斤。街边的水果摊上就相继出现,2017点10点2一般情况下。仅代表个人观点。今年04月12日,铁5元左右
怎么做游戏主播(直播怎么做起来)互联网时代高速发展的背景下,直播成为人们茶余饭后的消遣渠道,也是很多人成为红人变现的渠道。即使是普通人只要能够抓住机遇,让自己成为一名主播,就能摆脱单一的收入来源,甚至能成为人人皆主播新人刚开始怎么做(新手如何从开始做直播)1不要介绍你是谁,这样就乏味,又落俗套,在一个随机又陌生的直播间,没有人在乎你是谁。2请在3秒之内亮出你的绝活,你能给观众带来什么价值,这是核心。没有价值的直播间,就失去了停留的意在职博士怎么读(在职的怎么读研究生)网友磨剪子将菜刀博士在读我是在职考博的,说实话,就是因为目前临床工作很累,才想走的,所以用于看书的时间很短,每天平均就三个小时左右,共复习了不到三个月。但我觉得应该够了,时间充裕的博士读多久(福州大学博士一般读几年)博士是弹性学制,根据可以37年毕业博士一般都是4年毕业,但是由于博士是弹性学制,根据可以37年毕业。读博是一个非常痛苦的过程,时间比较长,并且毕业比较难。绝大部分博士都是4年毕业的安卓系统怎么刷机(安卓手机刷机可以升级安卓版本吗)本内容来源于什么值得买SMZDM。COM作者青雪唐元创作立场声明本文由于自身的局限性,可能有些内容不够准确,还望大家多多指正,期待深入探讨。2018年我第一次接触刷机,初出茅庐的我怎么升级安卓系统(安卓系统怎么升级8。0以上)安卓怎么升级发布了最新版8。0。与以往不同的是,作为一款已风靡十年的社交产品,此次版本更新带来许多全新玩法和小创意。目前苹果手机用户可以点击关于进行自动升级,安卓系统暂时还未推送最兔子怎么叫(怎么教兔子不咬人)欢迎大家阅览农大知事栏目,本栏目会为广大读者朋友持续不断地提供三农相关常识,欢迎!今天为大家分享的是兔子有向人排便咬人咬架恶癖,3种调教,让其成为乖乖兔。村里的兔子养殖户富力抱怨说办社保卡在哪里办(个人如何去办理社保卡)河南社保灵活就业养老保险小王我9月份从公司辞职了,现在待业在家,还没找到新工作,想自己交职工养老保险,怎么办理?老李我在摆夜市摊儿,生意还不错,可是没有公司为我缴纳社保,我自己可以个人社保如何办理(个人自费交社保怎么办理)今天的社会,挣钱不一定非要上班。地摊摊主微商自由摄影师公众号作者等,都能赚钱养家。但如果不上班,自己该怎么交社保?今天我们分享一个手机交社保的方法,两分钟即可轻松搞定。事不宜迟,一中梁地产怎么样(中梁地产质量怎么样)每一寸建筑的生长,每一个居所的舒适,都倾注了匠人们的心血与执着。建筑,是宏大的事情,从一片荒芜到拔地而起,仿佛造物创世般神奇。效果图建筑,又是细微的事情,砌墙抹灰螺栓甩浆防水,无数按揭怎么算(房贷按揭怎么算的)若是准备用按揭买房,那么需要了解货款的计算步骤,然后看其是不是符合自家庭的经济标准,不至于形成过大的压力。那么货款怎么计算,以及按揭买房的注意问题,各位是不是了解呢?现在我们们一起