📜  操作系统中地址拆分的概念

📅  最后修改于: 2021-09-28 09:22:10             🧑  作者: Mango

在操作系统中,我们有两种地址:虚拟/逻辑地址和物理地址。

虚拟或逻辑地址:
它是由 CPU 生成的。上一句的意思是我们的系统被设计成 CPU 利用率应该最大化,因此为了正确使用 CPU,我们将使用多道程序进行排序。由于多道程序设计,并不是只有完整的进程被加载到主存储器中,而是主存储器中可能存在许多不同数量的进程。当这些进程中的每一个都加载到 CPU 时,CPU 认为只有主存储器中存在该进程。因此,它产生相对于 0 的地址,这意味着 CPU 开始处理进程,就好像它被加载到主存中的内存位置 0。因此,对于每个进程(在上下文切换期间),CPU 将产生相对于 0 的地址。

现在每个过程都被分成等长的页面,作为回报,每个页面由固定数量的单词组成。

为了跟踪加载了哪些页面在主内存中的哪个位置,我们使用了页表。页表条目的数量等于页数。就像数组索引一样,索引代表页面编号,相应的内容将保存页面在主内存中实际加载的位置。有时甚至我们需要的页面可能不存在于页表中,因此会发生缺页,在这种情况下,我们需要从辅助存储器中获取页面。

实际地址:
如上所述,CPU 生成主内存中所有进程的地址相对于零,即 CPU 生成从 0 开始的地址。主内存中的其余空间将是内存。因此,CPU 生成的地址应该以某种方式映射到主内存的实际(物理地址)。这是由 MMU(内存管理单元)完成的。

现在我们通常将主存储器分成大小相等的帧。作为回报,每个帧由相等数量的字组成。

需要注意的重点是Page Size = Frame Size

笔记:
内存中最小的可寻址单元称为字。它是指可以使用地址位专门识别的最小单位。

Virtual Address 的地址空间分为 2 部分:Page Number 和 Page OFFset。

同理,Physical Address 的地址空间也分为 2 部分:Frame Number 和 Frame OFFset。

让虚拟地址有 n 位,物理地址有 m 位。

Page Size = Frame Size = k bits 

(如上面提到的页面大小 = 帧大小)。

Number of Pages = 2(n-k) pages

Number of Frames = 2(m-k) Frames

而且,每页/帧中的字数 = 2 (k)页。

因此,在这两种寻址方案中,最后 k 位被保留用于查找特定字。左 nk 位用于从所有页号集合中查找页号,在帧的情况下,其余 mk 位用于查找特定字frame 来自所有帧编号集。

简单来说,我可以在这里解释虚拟地址中的 n 位 nk 位用于找到页表中的特定页号,物理地址的 m 位中的 mk 位用于找到特定的帧,在找到特定的帧后,我们需要转到包含所需数据的特定字(因为字是最小的可寻址单元),因此 k 位用于查找该特定字。

诡计:
考虑一个位地址空间,然后如果使用 k 位来定义该地址空间中的块数,则其余 nk 位用于使用 k 位沿着所选块查找特定块。从下面的框图中可以清楚地看出这一点。

同样的概念也可以在计算机网络中扩展。

笔记:
字可寻址和字节可寻址的概念是不同的,当询问字可寻址时,将地址空间转换为字,然后应用上述所有解释的概念。