分页与分段(1)

简介: 分页与分段

前面我们分析了虚拟地址和物理地址

我们这里进行一个简单的分析

这个是程序运行时的地址映射

那么这些碎片,我们现在的操作系统究竟如何处理呢?

我们再引入一个实际问题

我们如何把右边的进程p塞入左边的内存空间里面

有一种方法将p5kill掉,那么p就可以插入,但这种方法绝对不是首选。

我们可以将p进程分为几块塞入内存空间里面

但是如果我们需要运行这个进程需要有一个记录,记录p进程的各个碎片是怎样分布在内存里面的。

这样就引出了我们的分页和分段机制了

1.解决内存碎片,将进程分片存放

因为我们写程序的时候是分段(函数、变量、数组等)写的

我们可以将这些东西分段存放

我们对于分段的寻址是需要段id+段内位移地址

那么我们怎么将逻辑地址转化为物理地址

我们分段表内存储段id+段内偏移+段内最大长度

先拿出段内位移然后根据所在的段号进行判断,判断失败报错;成功,用基址加上短萼你位移取出物理内存地址。

我们看例题

第一题解题方法:

main那条语句为pc寄存器存储的地址,我们可以看到0x240为此地址的虚地址

那么我们可以画出

0x0240填入逻辑地址二进制为

0000 0010 0100 0000

又物理地址等于基址+逻辑地址

最前面的2bits 00 代表段号,那么我们可以得到段号为code(0)基址为0x4000

根据等式可以得到0x4000+0x0240=0x4240

相关文章
虚拟存储 分段分页段页解读(上)
虚拟存储 分段分页段页解读
|
6月前
|
存储 缓存 算法
分页存储
分页存储
77 0
|
12月前
|
存储
分页与分段(2)
分页与分段(1)
35 0
|
12月前
排序和分页
排序和分页
51 0
|
SQL Oracle 关系型数据库
第5章_排序与分页
第5章_排序与分页
50 0
|
存储 算法 程序员
虚拟存储 分段分页段页解读(下)
虚拟存储 分段分页段页解读(下)
|
SQL Oracle 关系型数据库
第05章_排序与分页
第05章_排序与分页
85 0
|
存储
【补充】分页存储管理中的页表项长度是什么?
【补充】分页存储管理中的页表项长度是什么?
189 0
【补充】分页存储管理中的页表项长度是什么?