1.内存寻址:
首先区分三种不同的地址:
1.逻辑地址(段(段选择符)加偏移量)
2.线性地址(虚拟地址,4GB的寻址空间)
3.物理地址
三者的转换过程一般通过分段单元将逻辑地址转换为线性地址,然后通过分页单元将线性地址转换为物理地址。
六个段寄存器用来存放段选择符,三个重要的为
1.CS 代码段寄存器,指向程序指令的段
2.栈段寄存器,
3.数据段寄存器,指向包含静态数据或全局数据
每个段由段描述符表示,描述段的特征,段描述符放在GDT,或者LDT中(局部描述符表),GDT和LDT的地址和大小分别放在两个寄存器gdtr和ldtr中
段选择符字段:index,指定放在GDT或者LDT中相应段描述符的入口,T1指定段描述符在DGT或者在LDT中。
分段可以给每一个进程分配不同的线性地址空间,分页可以把同一线性地址空间映射到不同的物理空间。
线性地址被分为固定长度的页,内存按照同样的长度分成页框。区分一页与一个页框很重要,前者只是一个数据块,可以存放在任何页框或磁盘中。
线性地址通过页表映射到物理内存。
线性地址一般分为三个域,directory(目录,最高10位),table(页表,中间10位),offset(偏移,最低12位)。也称为二级页表。第一级转换称为页目录表,第二级转换称为页表。
必须为每个进程分配一个页目录。页目录的物理地址存在寄存器中。
每个页表或者页目录表的表项存在一些结构,例如present表示是否在内存中,以及相应的页框或者页表地址。
最后引入块表的概念,以及组成原理里面的TLB的概念?
为了提高运算速度,设置了一个专用的高速缓冲存储器(TLB)用来存放最近访问的部分页表,存放在相联存储器中的页表称为快表。
补充, 首先存储空间管理,是基于内存如何管理分配的,站在内核如何管理内存的角度上,比如说内存管理方式为连续存储管理,固定分区管理,可变长分区管理,分页式管理。
分段方式应该站在用户的角度,程序可以分为若干段。
分段是信息的逻辑结构,分页是信息的物理结构
虚拟存储器的概念:作业不用一次性装入内存,可以先放入辅存,当作业运行,先调入一部分放入主存,当需要其他部分在从辅存调入主存。如果没有足够的主存,则需要将一部分主存内容放入辅存,这样就可以提供一个比实际存贮器内存大得多的虚拟存储器。
请求分页虚拟管理方式与分页式管理方式不同点在于,仅仅使用进程的部分内容到主存,在执行过程中必然出现有些页面不在主存中,如何发现页面不在主存,以及如何处理这种方法,主要就是扩充页表的内容,增加一些信息:驻留位(页是否已经在主存中),页框号,辅存地址,修改位,等。因为是虚拟内存,因此分配给每个进程的页框数目有固定和可变两种情况。(固定分配,可变分配,对应页框的局部替换,和全局替换)
2.进程: