首页 >> 动态

保护模式下的内存管理-全球聚看点

2023-04-12 08:08:30来源:面包芯语

这里没有太细致的详解一下段描述符,因为此篇还是偏向于内存管理,没有太执着于某个细节。


【资料图】

逻辑地址由两部分组成,段选择子和偏移量,段选择字可以合成段描述符,然后它们会直接保存在 GDTR 中。段选择子和段内偏移经过 MMU 后可以转换成为线性地址。

分页机制

上面我们说到,线性地址是由逻辑地址转换过来的,如果禁用了分页机制,线性地址就是物理地址,如果开启分页机制,线性地址和逻辑地址空间的数量还是不同的。一般程序都是多任务的,而多任务通常定义的线性地址空间要比物理内存容量大得多,为什么呢?地址转换映射图上画着明明线性地址和物理地址都是 4G 的大小啊。那是因为,线性地址被虚拟存储技术所虚拟化了。

虚拟存储是一种内存管理技术,使用这项技术可以让我们产生内存空间要比实际的物理内存容量大的多的错觉,其本质是把内存虚拟化了,就是说内存可能只有 4G,但是你以为内存有 64 G,所以我为什么能开那么多应用程序的原因。

分页机制其实就是虚拟化的一种实现,在虚拟化的环境中,大量的线性地址空间会映射到一小块物理内存(RAM 或者 ROM)中。当使用分页时,每个段被划分成页面(一般为 4K),这个页面会存储在物理内存或硬盘上。操作系统通过使用一个页目录和页表来维护这些页面。当程序试图访问线性地址空间中的某一个地址位置时,CPU 就会使用页目录和页表把这个线性地址转换成物理地址,再存储在物理内存上。

如果当前访问的页面不在物理内存中,CPU 就会执行中断,一般错误就是页面异常,然后操作系统会把这个页面从硬盘上读入物理内存中,然后继续从中断处执行程序。操作系统经常会进行频繁的页面换入换出操作,这也是一个性能瓶颈所在。

分段中的每个段长度是不固定的,最大位 4G,而分页中的每个页面大小是固定的。不论在物理内存还是磁盘上,使用固定大小的页面更适合管理物理内存;而分段机制使用大小可变的块更适合处理复杂系统的逻辑分区。

虽然分段和分页是两种不同的地址转换机制,但是它们对整个地址变换是独立处理的,每个过程都是独立的。这两种机制都使用了一种中间表来存储表项映射,但是这个中间表的结构是不同的。段表存在线性地址空间中,页表则存储在物理地址空间。

保护机制

80x86 包含两种保护机制,第一种是为每个任务分配不同的虚拟地址空间来完全隔离各个任务。这是通过给每个任务逻辑地址到物理地址的不同变换得到的,每个应用程序只能访问自己虚拟空间内的数据和指令,只能通过它自己的映射得到物理地址;第二种机制是保护任务,保护操作系统的内存段和一些特殊寄存器不会被应用程序所访问。下面我们就来具体探讨一下这两个任务。

任务之间的保护

每个任务会单独的放在自己的虚拟地址空间中,再经过硬件映射成为物理地址,不同的虚拟地址会变换成为不同的物理地址,不会存在 A 的虚拟地址会映射到 B 所在的物理地址的范围内,这样就会把所有的任务都隔绝开,且不同任务之间不会相互干扰。

每个任务都有各自的映射表、段表和页表,当 CPU 切换不同的应用程序或任务时,这些表也会进行切换。

虚拟地址是操作系统的抽象,也就是说虚拟地址完全是操作系统所抽象出来能够更好管理应用程序和任务的一个载体,每个任务都可以把逻辑地址映射成为虚拟地址,这也表明每个任务都可以访问操作系统,操作系统可以被所有的任务所共享。这个所有任务都具有相同虚拟地址空间的部分被称为全局地址空间(Global address space),Linux 就使用到了全局地址空间。

全局地址空间中每个任务都有自己的唯一的虚拟地址空间,这个虚拟地址空间叫做局部地址空间(Local address space)。

内存段和寄存器的特殊保护

如果说操作系统在不同任务之间的保护是横向的话,那么对内存段和寄存器的等级保护就是纵向的。操作系统定义了 4 个特权级来对每个任务提供保护,来限制对任务中各段的访问。

优先级分为 4 个等级,0 最高,3 最低。一般最敏感的数据会被赋予最高优先级,它们只能被任务中最受信任的部分访问,不太敏感的数据会赋予低优先级;内核操作系统访问一般是 0 级,应用程序数据一般是 3 级。每个内存段都与一个特权级相关联。

我们知道 CPU 通过 CS 从段中取得指令和数据执行,从段中取得的指令和数据是具有特权级的,一般用当前特权级(Current Privilege Level)来访问,CPL 就是当前活动代码的特权级。每当有应用程序试图访问段时,就会与这个特权级进行比较,只有比段的特权级低才能够访问。

文章首发于我的知识星球,我创建了一个计算机底层学习进阶的知识星球。你可以在这里学到操作系统、计算机网络、汇编、Java、C/C++ 等相关知识,夯实计算机内功,在这个艰难的环境下有立足之地!

详情可了解

我的知识星球

关键词:

相关新闻