保护模式的概念

概念解释

  • 一个操作系统从开机到开始运行需要经历的过程
    引导→加载内核入内存→跳入保护模式→开始执行内核
  • 引导扇区把加载内核、准备保护模式等工作交给Loader模块来做,因为引导扇区只有512字节。而loader模块没有512字节的限制,会方便的多。
FAT12
  • FAT12是DOS时代就开始使用的文件系统
  • 文件系统把磁盘划分为以下层次
    扇区(Sector):磁盘上的最小数据单元。
    簇(Cluster):一个或多个扇区。
    分区(Partition):通常指整个文件系统。
  • 引导扇区是整个软盘的第0个扇区,其中有一个很重要的数据结构叫BPB。引导扇区的格式如下,其中名称以BPB_开头的域属于BPB,以BS_开头的域只是引导扇区的一部分
    在这里插入图片描述
  • 紧接着引导扇区的是两个完全相同的FAT表,每个占用9个扇区。第二个FAT之后是根目录区的第一个扇区。根目录区的后面是数据区
    在这里插入图片描述
  • 规定Loader只能放在根目录中,而根目录信息存放在FAT2后面的根目录区中
  • 根目录区位于第二个FAT表之后,开始的扇区号为19,它由若干个目录条目(Directory Entry)组成,条目最多有BPB_RootEntCnt个。由于根目录区的大小是依赖于BPB_RootEntCnt的,所以长度不固定。根目录区中的每一个条目占用32字节(如下图)。
    在这里插入图片描述
  • 通过过FreeDos在这张虚拟软盘中添加以下几个文本文件:
    RIVER.TXT,内容为riverriverriver。
    FLOWER.TXT,内容为300个单词flower,用来测试文件跨越扇区的情况。(可以先建一个小文件,最后再把它改长,这样可以
    让它对应的簇不连续,便于观察和理解。)
    TREE.TXT,内容为treetreetree。
  • 再添加一个HOUSE目录,然后在目录HOUSE下添加两个文本文件:
    CAT.TXT,内容为catcatcat。
    DOG.TXT,内容为dogdogdog。
  • 由于根目录区从第19扇区开始,每个扇区512字节,所以其第一个字节位于偏移19_512=9728=0x2600处。
    在这里插入图片描述
  • 以RIVER.TXT为例,它的各项值如表所示
    在这里插入图片描述
  • 因为规定Loader只能放在根目录中,所以寻找Loader时,只要发现文件名正确就认为找到。
    DIR_FstClus:文件的开始簇号。由于之前定义过一簇只包含一个扇区,所以在这里"簇" = "扇区"
  • 数据区的第一个簇的簇号是2,而不是0或者1。RIVER.TXT的开始簇号就是2,也就是说,此文件的数据开始于数据区第一个簇。
  • 假设根目录区共占用RootDirSectors 个扇区(根目录区条目最多有BPB_RootEntCnt个):
    在这里插入图片描述
  • 可以算出RootDirSectors =14
    数据区开始扇区号=根目录区开始扇区号+14=19+14=33(的偏移量是0x4200(512×33))
    在这里插入图片描述
  • 可以通过根目录区找到文件的开始簇号,对于小于512字节的文件来
    说,FAT表用处真的不大,但如果文件大于512字节,我们需要FAT表来找到所有的簇(扇区)。FAT表有两个,FAT2可看做是FAT1的备份,FAT1的开始扇区号是1,偏移为512字节(0x200)。
    在这里插入图片描述
  • 每12位称为一个FAT项,代表一个簇
    第0个和第1个FAT项始终不使用,从第2个FAT项开始表示数据区的每一个簇。第2个FAT项表示数据区第一个簇。
  • FAT项的值代表的是文件下一个簇号,但如果值大于或等于0xFF8,则表示当前簇已经是本文件的最后一个簇。如果值为0xFF7,表示它是一个坏簇。
  • 根据根目录表可以找到FLOWER.TXT的开始簇号(DIR_FstClus)为3,对应第三个FAT项,根据此FAT项值为0x008,下一个簇号为8,第8个FAT项的值为0x009,接下来第9个FAT项值为0x00A,第0xA个FAT项值为0xFFF(大于0xFF8)。结束。所以,FLOWER.TXT占用了第3、8、9、10,共计4个簇。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值