动态重定位、分段、分页

目录

1动态重定位

作用

实现

缺点

2分段

3虚拟内存

虚拟内存的基本思想

分页

MMU操作过程

页表

加速分页过程

①转换检测缓冲区

②软件TLB管理

针对大内存的页表

①多级页表

②倒排页表


1动态重定位

作用

把每个进程的地址空间映射到物理内存的不同部分

实现

每个CPU配置2个特殊的硬件寄存器,叫作基址寄存器界限寄存器,当一个程序运行时,程序的起始物理地址装载到基址寄存器中,程序的长度装载到界限寄存器中,每次一个进程访问内存,取一条指令,读或写一个数据字,CPU硬件会在把地址发送到内存总线之前,自动把基址值加到进程发出的地址值上,同时,它检查程序提供的地址是否等于或大于界限寄存器里的值,如果地址超出界限,则产生错误并中止访问

缺点

每次访问内存都需要进行加法和比较运算,加法由于进位传递时间的问题,在没有使用特殊电路的情况下会显得很慢

2分段

把一个程序分成好几个段,每个段有各自的特点,各自的用途,分别放入内存
如何定位具体指令?<段号,段内偏移>,寻址的时候要地址要加上对应的段的基址,原来的PCB中只需要放整个程序的基址,分段后,PCB中要放每一个段的基址,这个称为进程段表(LDT)。操作系统的进程对应的段表就是GDT表
动态重定位、分段、分页_第1张图片
动态重定位、分段、分页_第2张图片
 

3虚拟内存

虚拟内存的基本思想

每个程序拥有直接的地址空间,这个空间被分割成多个块,每一块称作一页或者页面,这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序
当程序引用到一部分在物理内存中的地址空间时,由硬件理科执行必要的映射
当程序引用到一部分不在物理空间内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的命令
 

分页

右程序产生的地址称为虚拟地址,它们构成了一个虚拟地址空间
在没有虚拟内存的计算机上,系统直接将虚拟地址怂到内存总线上
在有虚拟内存的计算机上,虚拟地址先被送到MMU(内存管理单元)上,MMU把虚拟地址映射为物理内存地址
动态重定位、分段、分页_第3张图片

虚拟地址按照固定大小(一般是4K,或者是2的整数次幂)划分成被称为页面的若干单元,在物理内存中对应的单元称为页框动态重定位、分段、分页_第4张图片
在执行一条指令时,当MMU找不到虚拟地址的映射时,就会发生缺页中断,使CPU陷入到操作系统中,操作系统会找到一个很少使用的页框,且把它的内存写入到磁盘,然后把需要访问的页面读到刚才回收的页框中,修改映射关系,然后重新执行指令
 

MMU操作过程

动态重定位、分段、分页_第5张图片
 

页表

虚拟地址被分为虚拟页号和偏移量
虚拟页号用作页表的索引,以找到虚拟页面对应的页表项
页表项的结构
动态重定位、分段、分页_第6张图片
 

加速分页过程

①转换检测缓冲区

为计算机设置一个小型的硬件设备,将虚拟地址直接映射到物理地址,而不必再访问页表,这种设备称为转换检测缓冲区(TLB)相联存储器快表

②软件TLB管理

 

针对大内存的页表

①多级页表

避免把全部页表一直保存在内存中

②倒排页表

 

 

 

 

 

 

 

你可能感兴趣的:(操作系统)