操作系统零碎知识点系列之一

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.动态链接的过程

自举

装载共享对象

重定位和初始化


你可能感兴趣的:(操作系统零碎知识点系列之一)