第六章_存储管理(左加)1_第1页
第六章_存储管理(左加)1_第2页
第六章_存储管理(左加)1_第3页
第六章_存储管理(左加)1_第4页
第六章_存储管理(左加)1_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、6.6 Intel x86分段和分页存储结构Intel x86系列CPU提供三种工作模式:(1)实模式:段式或不分段,不区分特权级,不能启动分页机制,寻址范围1M。(2)保护模式:采用分段机制,可启动分页机制,可有段式、页式、段页式。(3)虚拟8086模式:保护模式下对实模式的仿真,允许多个8086程序同时在386以上CPU上运行。Intel8086虚拟存储管理两个核心表:LDT(局部描述符表):每个进程一个,描述每个进程属于自己的段,包括代码段、数据段、堆栈段、扩展段等的基地址、段大小和有关控制信息;长达8KGDT(全局描述符表):系统一个,描述操作系统自己的基地址、段大小和控制信息;长达8

2、K(b) 段寄器高13位为段选择符(a)虚拟地址段选择符 47 32 31 0 index T T RPL15 2 1 00=GDT / 1=LDT特权级Intel x86虚拟地址和段选择符 偏移量虚拟地址段和寄存器:虚拟地址空间大小 虚拟地址空间共包含16K个存储器分段,其中GDT映射一半(8192个)全局虚拟地址空间,LDT映射另一半(8192个)局部虚拟地址空间, 发生进程切换时,LDT更新为待执行进程的LDT,而GDT保持不变。 由于每段偏移量32位、即=4GB,整个虚存地址空间=16K4GB=64TB。控制寄存器 CR0 第0位:PE位(0:实模式;1:保护模式) 第31位:PG位(

3、0:不启动分页;1:启动分页) CR1 CR2 保存缺页中断时所缺页的线性地址 CR3 (运行进程)页目录表的起始地址,系统运行四种模式 段页模式 CR0的:PE=1(保护模式),PG=1(启动分页) 每个进程213=8192个段,每个段220个页; 纯分页模式 CR0的:PE=1(保护模式),PG=1(启动分页) 6个段寄存器设置为同一个段描述符来实现不分段(实际仅有1段),段描述符基址=0,段大小4G) 纯分段模式 CR0的:PE=1(保护模式),PG=0(不启动分页) 每个进程可有213=8192个段,每个段220个字节 虚拟386模式 保护模式下,既不分段,也不分页描述符 描述符表中的

4、描述符是存储管理硬件MMU管理虚存空间分段的依据。 一个描述符直接对应于虚存空间中的一个主存分段,定义段的基址、大小和属性 。 基址24-31 G D 0 长度16-19 P DPL S type A 基址16-23 基址0-15位 长度0-15位虚拟地址线性地址 虚拟地址(16位选择符+32位偏移量)到物理地址的转换要分两步,MMU使用分段机制把48位虚拟地址先转换成32位线性地址,转换过程是通过描述符表中的描述符来实现的。 段选择符被装入段选择符寄存器时,从选择符的T位就知道是选LDT或GDT,再根据index,由硬件自动从表中取出描述符装入到段描述符高速缓存寄存器,实现16位选择符到32

5、位段基址的转换, 把描述符中的32位段基址与32位偏移量相加便形成32位线性地址。线性地址物理地址 启用分页机制时,需要通过分页机制进行笫二次地址转换。由分段得到的线性地址分成三个域:10位页目录dir、10位页page和12位偏移量offset。 根据控制寄存器CR3给出的页目录表起址,用dir作索引在页目录表中找到指向页表的起址,再用page作索引在页表中查找到页框起址,再把偏移量加到页框起址上,得到访问单元的物理地址。 段页式地址转换过程虚拟地址段选择符(16位)偏移量(32位)T=0/1GDT/LDT段描述符表8个字节的段描述符8个字节的段描述符8个字节的段描述符 CR0的PE=0线性

6、地址就是物理地址 线性地址(32位)1024表项页目录Dir(10位) 页Page(10位) 偏移量Offset(12位)页目录项页目录项页目录项页目录项 页目录页表项页表项页表项 页表页物理地址(32位)1024表项CR3访问权限32位段基址限长CR0的PE和PG=1分页方式4.7 Linux虚拟存储管理 4.7.1 Linux虚拟存储管理概述 在Linux中,进程可访问4GB虚拟地址空间,从0到3GB被用户进程独占;从3GB到4GB是内核空间,由所有核心态进程共享,存放系统代码和数据。 进程有一个页目录,大小为一个页,页目录的起始地址存放在进程mm_struct结构中,工作时被装入寄存器C

7、R3。 页目录项为4字节,共有1024项,用来保存页表的起始地址。每张页表也用一个页面存储,每项为4字节,共有1024项,用来保存页框基地址。 页表项的格式 0位为页面在/不在主存;1位若置位,页面可读可写,否则只读;2位为选择用户级访问许可/内核级访问许可;3位为若置位表示页面cache采用“直写”,否则回写缓存;4位为若置位,禁用高速缓存;5位为置位表示该页面最近曾被访问过;6位为被置位,表示页面在上次该位被清除之后页面内容被改变过;7位为页面大小;8位为全局页面;12至31位是页框基地址。31 12 8 7 6 5 4 3 2 1 0页框基地址 G ps D A CD WT U/S R/

8、W P4.7.2 存储管理数据结构1 物理主存数据结构 物理主存分三个层次管理: 1)存储节点 2)管理区 3)页框1) 页框管理 物理主存划分成页框,其长度与页面相等,所有页框都由mem_map表描述,初始化时通过free_area_init( )函数创建。 mem_map本身是由mem_map_t组成的数组,每个mem_map_t描述一个页框,数组就代表系统中的全部页框,数组下标就是物理页框的序号,用于对页框进行管理。 mem_map_t typedef struct page /*page数据结构*/ struct list_head list;/*list_head是通用双向链队列结构

9、,链接page*/ struct page *next_ hash;/ /* page cache的hash表中的后继指针*/ atomic_t count; /*访问此页框的进程个数*/ unsigned long flags; /*标志位*/ unsigned dirty; /*修改标志*/ struct list_head lru; /*页面换出链表或活跃链表*/ unsigned long age; /*页面的年龄,越小越先换出*/ unsigned long map_nr; /*页框在mem_map表中的下标*/ struct page *pprev_hash;/*page cach

10、e的hash表中的前向指针*/ struct buffer_head *buffers;/*若该页框用做缓冲区,指示缓冲区地址*/ struct inode *inode; / /*页框主存放代码或数据所属文件的inode*/ unsigned long offset; / /*页框主存放代码或数据所属文件的位移*/ struct zone_struct zone; /*页框所在管理区*/ mem_map_t;2) 管理区管理 主存被划分成三个区: ZONE_DMA区,专供DMA使用; ZONE_NORMAL区,被常规使用;ZONE_HIGHMEM区,内核不能直接映射区。 设置ZONE_DMA

11、是保证磁盘I/O所需的连续物理页框,ZONE_NORMAL里的页框用作通常的主存分配。管理区数据结构zone_struct 含有一组空闲区队列,typedef struct free_area_struct /*空闲区队列头部结构*/ struct list_head free_list; /*指向空闲区队列*/ unsigned int *map;/*指向bitmap表*/ free_area_t;zone_struct描述:typedef struct zone_struct spinlock_t lock; /*自旋锁,保证对zone的互斥访问*/ unsigned long offse

12、t; /*offset表示该分区在mem_map中的起始页框号*/ unsigned long free_pages;/*该区空闲页框数*/ unsigned long pages_min,pages_low,pages_high;/*该区最少、次少和最多页框数描述*/ free_area_t free_areaMAX_ORDER;/*伙伴系统中的空闲页框链表数组*/ struct pglist_data *zone_pgdat;/ /*该区所在存储节点pglist_data*/ struct page *zone_mem_map; / /*该区主存映射表*/ unsigned long zo

13、ne_start_paddr; /*该区起始物理地址*/ unsigned long zone_start_mapnr; /*在mem_map中的下标*/ unsigned long size; /*管理区物理主存大小*/ char *name; /*管理区的名字*/ zone_t;存储节点管理数据结构 typedef struct pglist_data /*存储节点的结构*/ zone_t node_zonesMAX_NR_ZONES; /*该节点的管理区数组*/ zonelist_t node_zonelistsNR_GFPINDEX; struct page *node_mem_map

14、; /*存储节点的主存映射表*/ int nr_zones; /*存储节点的管理区数目*/ unsigned long * valid_addr_bitmap; /*位图表示的有效地址*/ struct bootmem_data * bdata; /*存放位图的数据结构*/ unsigned long node_start_paddr;/*存储节点起始物理地址*/ unsigned long node_start_mapnr;/*在mem_map中的下标*/ unsigned long node_size; /*存储节点物理主存大小*/ int node_id; /*存储节点标识符*/ str

15、uct pglist_data * node_next; /*下一存储节点指针*/ pg_data_t;2 虚拟主存管理 1) 虚存区vm_area_struct 内核将进程的每个虚存区作为一个单独的主存对象管理,每个虚存区都拥有一致的属性,如访问权限,采用虚存区vma(virtual memory area)来描述进程的虚拟主存的一个区域,而vma链表用来表示该进程实际用到的虚拟地址空间。2) 主存描述符mm_struct 进程有一个mm_struct结构,在进程的task_struct结构中有指针mm指向该进程的mm_struct结构,mm_struct结构是进程整个虚拟地址空间的抽象。

16、结构中的前三个虚存区指针:mmap用来建立一个虚存区间结构的链接队列;mmap_avl用来建立一个虚存区结构的AVL树;mmap_cache用来指向最近一次用到的那个虚存区结构,因为程序具有局部性,很可能这就是下次要用到的区间,以便提高效率。 指针pgd指向该进程的页表目录,当进程被调度时,该指针被转换成物理地址,写入控制寄存器CR3。进程虚存管理数据结构进程任务结构task_struct*mm虚存区结构vm_area_struct*vm_mmvm_startvm_end*vm_ops*vm_next页目录表pgd主存管理结构mm_struct*mmap*pgd封装的操作集vm_operati

17、ons_structopen( )close( )unmap( )swapin( )页表PTE页框PF (共享库)进程虚拟主存虚拟主存段(0 x40000000) (data)虚拟主存段(0 x0804a020) (text)虚拟主存段(0 x08048000)虚存区结构vm_area_struct*vm_mmvm_startvm_end*vm_ops*vm_next虚存区结构vm_area_struct*vm_mmvm_startvm_end*vm_ops*vm_next 4.7.3主存页框调度 主存页框调度有两项工作: 一是页框分配、使用和回收;二是盘交换区管理,并非所有的主存页都可交换出

18、去,只有映射到用户空间的页才会被换出。 页框分配时,为了提高效率,采用伙伴系统,把连续的页映射到连续的页框中。 主存页框由的page数据结构描述和管理;与此类似,交换设备(磁盘)的每个物理页面也要在主存中有相应数据结构,用以表示该页面是否已被分配,以及有几个用户在共享该页面,内核定义swap_info_struct数据结构,用来描述和管理用于页面交换的设备。4.7.4 进程虚存空间映射1 mmap( )2 mummap( )4.7.5 缺页异常处理(1) 页面替换基于最少使用频率策略: 使用一个8位的age变量,每当一页被访问时,age变量增1;在后台,内核周期性地扫描全局页池,且当它在主存中所有页间循环时,对每页的age变量减1;age为0的页是一个“老”页,有一段时间没有被访问过,因而是可用于替换的最佳候选页;age值越大,该页最近被使用过的频率越高,也就越不适合于替换。 缺页异常处

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论