1.实模式下的寻址方式以及实模式的缺陷?
物理地址=段值*16+偏移量
缺陷:
寻址空间少;
通过改变段寄存器的值,可以随时访问任何内存单元,丝毫不受限制,不能对内存的访问加以限制,无法对系统进行保护。
2.保护模式下的寻址过程?
段寄存器存储的是GDT这个数据结构中一个表项——“描述符”的索引
GDT是全局描述符表,是一个存放描述符的数据结构,可在全局内访问,所有进场想要访问全局课件的段时,从GDT查询,GDT有且只有一个。
LDT是本地描述符表,不是全局的,每个进程有自己的LDT,且对其他进程不可见。访问自己的段时,从LDT查询。LDT作为描述符存在GDT中。
描述符:一种数据结构,描述了每个段的段基址,界限,属性等数据,均为8个字节,第5个说明描述符的类型。
GDTR:
GDT在内存中的段地址和界限(表的大小),是一个48位寄存器,32位表示地址,16位表示段限(最大64K,放8K个描述符)
LDTR:
LDT在内存中的位置,LDT本身也是数据段,必须有一个描述符,且描述符存在GDT中,因此LDTR与段寄存器如DS,ES,CS机制相同,中只存放一个选择子,通过查GDT表获得LDT的真正地址。
为什么LDT放在GDT中?
GDT只有一个是固定的,而LDT对应于每个进程,有多个,其个数随任务的个数不断变化。
3.选择子的作用
通过选择子来定位描述符。
是一个2字节的数,最低2位表示RPL(请求特权等级),第三位TI区分LDT和GDT,TI为1时查LDT表。高13位给出描述符的地址。正好足够寻址8K项。
16位地址,段的大小是64KB,每个描述符8个Byte,正好能放8K个描述符。
选择子放在段寄存器中。
4.根目录区大小一定吗?扇区号是多少?为什么?
扇区:磁盘上的最小数据单元,包含512字节。
簇:数据区中存储文件数据的基本单位,包含一个或多个扇区。
在FAT12中只包含一个扇区。
分区:整个文件系统
------------------------------------------------
根目录去长度非固定,需计算。
扇区号19,第一个字节位于偏移19*512=0x2600处。
(0扇区是引导扇区,1-9放FAT1表,10-18放FAT2表。)
它由若干个目录条目组成,条目最多有BPB_RootEntnt个,因此其长度大小不固定,依赖于BPB_RootEntCnt。
根目录中的每一个条目占32字节,定义了文件的名称,属性,大小,日期以及在磁盘中的位置。
根目录的大小为32*BPB_RootEntCnt字节。
5.数据区第一个簇号是什么?为什么?
2,数据区开始扇区号=根目录开始扇区号+根目录所占扇区数。
每12位构成一个FAT表项,两个FAT表项占3个字节。
在1.44M软盘上,规定FAT表的前三个字节必须是0xF0,0xFF,0xFF,用于表示这是一个应用在1.44M软盘上的FAT12文件系统。
由于FAT表项的序号与簇号一一对应,而FAT表中序号为0和1的表项被设置成了固定值,簇0和簇1就没有存在的意义了,所以数据区起始于簇2.
6.FAT表的作用?
FAT表的每一个表项都与数据区中的一个簇相对应,且表项的序号与簇号相对应。
FAT项的值代表文件的下一个簇号,当值>=0xFF8时表示当前簇为本文件的最后一个簇,当值=0xFF7时表示是一个坏簇。
当文件大于512字节时,需要通过FAT表找到所有的簇
7.静态链接的过程:
空间和地址的分配
重定位和符号解析
8.动态链接的过程
自举
装载共享对象
重定位和初始化