You are on page 1of 1

‎ 虚拟存储技术:程序员在逻辑存储空间编程,可

‎ 以解决物理地址空间大小有限和多道程序如何安
‎ 全共享内存的问题
‎存储器管理部件(MMU):将逻辑地址转化为物理
‎地址的元件

‎在地址转换过程中,通过硬件检查是否发生了访
‎问地址不在主存、地址越界或者访问越权的情况

‎如果访问信息不在主存,则由操作系统将数据从
‎虚拟存储器的基本概念
‎硬盘读到主存

‎如果发生了地址越界或者访问越权的现象,则由
‎操作系统进行相应的异常处理

‎虚拟存储机制由硬件与操作系统共同协作实现

‎进程:一个具有一定独立功能的程序关于某个数
‎据集合的一次运行活动

‎进程有自己的地址空间,包括只读区、可读可写
‎数据去、动态堆区和栈区

‎虚拟地址空间:高级语言源程序经过编译、汇
‎编、链接等处理生成可执行二进制机器目标代码
‎时,被映射到地址空间,是主存和硬盘存储器的
‎抽象

‎存放操作系统内核代码和数据
‎内核空间
‎内核代码和数据区在每个进程的地址空间中都相
‎同,用户程序没有权限访问

‎用来存放进程的代码和数据

‎用户栈:用来存放程序运行时过程调用的参数,
‎返回地址,过程局部变量等,随着程序的执行用
‎户栈不断的从高地址向低地址增长或者反方向减
退

‎共享库:存放公共的共享函数库代码

‎堆:用于动态申请存储区 ‎用户空间 ‎虚拟地址空间

‎可读写数据区:存放进程中的静态全局变量,堆
‎区从该区域的结尾处开始向高地址增长

‎只读数据和代码区:存放进程中的代码和只读数

‎将区域映射在虚拟地址空间两端的技术有利于存
‎储保护和存储管理

‎所有进程虚拟空间大小一致简化了链接器的设计
‎与实现,也简化了程序的加载过程

‎每个进程的虚拟地址空间一致,方便管理

‎把主存看成是硬盘存储器的一个缓存,在主存中
‎仅保存当前活动的程序段和数据区,根据需要在
‎虚拟地址空间的好处
‎硬盘和主存之间进行数据交换,有效利用有限的
‎主存空间

‎每个进程虚拟地址空间是私有的独立的,保证了
‎进程的独立运行

‎虚拟存储系统中,生成可执行文件时,会通过可
‎执行文件中的程序头表,将可执行文件中具有相
‎同访问属性的代码和数据段映射到虚拟地址空间

‎虚拟地址空间被划分成大小相等的页面

‎硬盘和主存之间按页面为单位交换信息

‎虚拟页:虚拟地址空间中的页,也称为逻辑页或
‎者虚页

‎页框:主存空间被划分成同样大小的页框,有时
‎也称为页帧、物理页或者实体页

‎请求分页:每次访问指令或数据,仅将当前需要
‎的页面从硬盘调入主存中,而进程中其他不活跃
‎的页则保留在硬盘上

‎缺页异常:访问的信息所在的页不在主存中,此
‎时,将硬盘缺失页面装入主存

‎未分配页:虚拟地址空间中没有内容的页,例如
‎栈和共享库映射区之间的区域

‎已分配页:代码和数据等有内容的区域所关联的
‎页面,已调入主存缓存在DRAM中的页面称为缓
‎存页,未调入主存而存在于硬盘上的页称为未缓
‎存页

‎页是内存和磁盘信息交换的单位,大小比块大很
‎多,也确实导致的磁盘访问代价也很大,为了提
‎高命中率,主存和虚拟页之间采用全相联映射的
‎方式,同时在处理写操作时,使用回写的策略

‎页表是用于描述虚拟页和主存页框号或者磁盘存
‎储位置之间关系的数据结构

‎页表项:进程中每个虚拟页在页表中对应的表
‎项,内容包括存放位置、装入位、修改位、使用
‎位、访问权限位和禁止缓存位

‎装入位:表示对应页面是否在主存,也称为有效
‎位或者存在位,装入位为1表示虚拟页已从外存调
‎入主存,此时页表的存放位置字段指向主存物理
‎页号,装入位为0表示没有被调入主存,此时如
‎果存放位置字段为null说明虚拟页是未分配的,
‎否则存放位置字段给出虚拟页在磁盘上的起始地
‎页表
‎址

‎修改位:说明页是否被修改过,用于判断是否需
‎要写回磁盘

‎使用位:说明页的使用情况,用来确定换出的
‎页,也称为替换控制位

‎访问权限位:说明页的访问权限,例如可读可
‎写、只读还是只可执行等,用于存储保护

‎禁止缓存位:说明页是否能够装入cache,用于
‎保证磁盘主存和cache中数据的一致性

‎根据表项的存放位置字段,从磁盘中将所缺失的
‎页面读出,找一个空闲的页框存放该页信息

‎如果没有空闲的页框,使用页替换策略,选择一
‎个页面进行淘汰
‎缺页异常处理程序的工作过程
‎淘汰页面时,需要根据修改位确定是否需要将页
‎信息写回硬盘

‎最后对页表项进行相应的更新,然后程序回到原
‎来发生缺页的地方继续执行
‎分页式虚拟存储器
‎系统中每个进程都有一个页表,操作系统加载程
‎序时,根据可执行文件中的程序头表,确定每个
‎可分配段所在的虚拟页号,及其磁盘存放位置,
‎在主存生成一个初始页表,初始页表中对应的装
‎入位都是0
虚拟存储器

‎页表属于进程控制信息,位于虚拟地址空间的内
‎核空间,页表在主存的首地址记录在页表基址寄
‎存器中

‎CPU执行指令时,首先要将虚拟地址转换为主存
‎物理地址,才能取到主存的指令和数据

‎存储器管理部件:CPU中用于地址转换的部件

‎虚拟地址:两个字段,高字段是虚拟页号,低字
‎段是页内偏移地址

‎主存物理地址:两个字段,高字段是物理页号,
‎地址转换
‎低字段是页内偏移地址
‎虚拟存储器的实现
‎因为虚拟页和物理页的大小是一样的,所以偏移
‎地址字段长度相同

‎首先根据页表基址寄存器的内容,找到主存中对
‎应页表的起始位置

‎然后以虚拟地址高位的字段的虚拟页号作为索
‎引,找到对应的页表项

‎地址转换的过程
‎若装入位为1,则取出物理页号并和虚拟地址中的
‎页内偏移地址进行拼接,形成访问主存时实际的
‎物理地址

‎若装入位为0,说明缺页,由操作系统进行缺页
‎处理

‎快表(TLB):为了减少访存次数,把页表中最活跃
‎的几个页表项复制到高速缓存中,快表是高速缓
‎存中页表项组成的页表,也称为后备转换缓冲
‎器,相应的主存中的页表称为慢表

‎快表比页表小的多,为提高命中率,快表通常具
‎快表
‎有较高的关联度

‎TLB中的表项通过页表中的表项加一个TLB标记字
‎段组成,用来表示该表项取自哪个虚拟页表对应
‎的表项,在全相联方式下TLB标记字段就是虚拟
‎页号,组相联方式下就是虚拟页号的高位部分,
‎虚拟页号的低位部分作为TLB组索引用于选择TLB

‎CPU访存的过程存在三种缺失的情况

‎TLB缺失:要访问的虚拟页不在TLB中

‎cache缺失:要访问的主存块不在cache中 ‎CPU访存过程

‎缺页:要访问的虚拟页不在主存中

‎这三种缺失一共有八种组合的情况,其中只有五
‎种是可能发生的

‎TLB缺失异常处理程序:操作系统处理TLB缺失异
‎常的程序

‎实现简单,开销少

‎分页式存储的特点
‎对于不采用对齐方式存储的计算机,可能出现指
‎令或者数据跨页,不方便数据的处理、管理、保
‎护和共享

‎段:根据程序模块化特征将程序的逻辑结构划分
‎成多个相对独立的部分,例如过程、数据表、数
‎据阵列,段的结构通常包括了段名、段起点、段

‎段名:可用用户名、数据结构名或段号标识,以
‎便程序编写、编译器优化和操作系统的调度管理

‎段表项:用来指明对应段在主存中的位置、段
‎长、访问权限、使用和装入情况等

‎分段式虚拟存储器中,虚拟地址由段号和段内地
‎址组成

‎段表基址寄存器:存放每个进程的段表在内存的
‎分段式虚拟存储器
‎首地址

‎缺段:段不存在,即装入位=0

‎地址越界:偏移量超出最大段长 ‎段表项对应的异常

‎访问越权:操作方式与指定的访问权限不符

‎段本身是程序逻辑结构决定的一些独立的部分,
‎分段对程序员不透明,而分页方式对编译器透明

‎段的逻辑独立性使程序容易编译、管理、修改和
‎保护,便于多道程序共享

‎某些类型的段具有动态可变的长度,允许自由调
‎分段式存储的特点
‎度以便有效利用主存空间

‎由于段的长度不同,段的起点和终点不同,给主
‎存空间分配带来麻烦,而且容易留下零碎的空间

‎段页式虚拟存储器中,程序按模块分段,段内再
‎分页,用段表和页表进行两级定位管理

‎段表中每个表项包括一个指向该段页表起始位置
‎的指针,以及该段其他的控制和存储保护信息,
‎段页式虚拟存储器
‎由页表指明该段各页在主存中的位置以及是否装
‎入、修改等状态信息

‎段页式的优点是程序调入调出按页进行,但是又
‎可以按段实现共享和保护,兼有分段和分页的优
‎点,缺点是地址映像过程需要多次查表

‎避免主存中多道程序相互干扰,防止因为某进程
‎出错破坏其他程序正确性,或者不合法地访问其
‎他进程的代码区或数据区,需要对每个进行进行
‎存储保护

‎使部分CPU状态只能由操作系统内核程序写,用
‎户程序只能读不能写,例如页表首地址,TLB内
‎容等

‎管理模式:执行内核程序时处理器所处的模式,
‎也称为内核模式、超级用户模式或管理程序状
‎态,简称管态、管理态、内核态或者核心态
‎为了对操作系统存储保护提供支持,硬件需要提
‎至少支持两种特权模式
‎供三种基本功能
‎用户模式:执行用户程序时处理器所处的模式,
‎也称为用户状态或者目标程序状态,简称目态或
‎者用户态

‎系统调用:如果用户进程需要内核的代码和数
‎据,那么必须通过系统调用接口间接访问
‎提供让CPU在内核态和用户态之间相互转换的机
‎制
‎返回指令:异常和中断处理后使CPU从内核态转 ‎存储保护
‎移到用户态的指令

‎硬件通过提供相应的专用寄存器、专门的指令、
‎专门的状态/控制位,与操作系统一起实现以上三
‎个功能

‎检查是否发生了访问越权
‎访问权限保护
‎通过在段表或者页表中设置访问权限位来实现

‎检查是否发生了地址越界

‎每个程序或者程序段都记录有起始地址和终止地
‎加界重定位

‎操作系统为主存的每一个页框分配一个存储键,
‎为每个用户进程设置一个程序键
‎键保护 ‎存储区域保护
‎只有当存储键和程序键匹配的时候进程才可以访
‎问页框

‎主存中各进程按照重要性分成多个保护级,各级
‎别构成同心环
‎环保护
‎最内环的进程保护级别最高,向外逐次降低,内
‎层可以访问外层地址空间但是外层无法访问内层

You might also like