内存管理中的段表和页表

基础知识

1Byte(字节)=8bit

将用户程序变成可以在内存中执行的程序,通常需要以下几个步骤

  • 编译:将用户代码编译成若干目标模块
  • 链接:将编译后的一组目标模块和所需要库链接在一起, 形成完整的装入模块
  • 装入:由装入程序将模块装入内存中运行

将模块装入内存有三种方式

1. 绝对装入

在编译的时候,就已经知道程序在内存中的地址,可以在编译的时候提前写好。因为逻辑地址和实际内存地址完全相同,因此在后续的过程中,不需要对程序或者数据的地址进行修改。

2. 静态重定位

地址变换通常是在装入的时候,一次完成,
静态重定位的特点是 ,当一个作业装入内存时,必须给他分配全部的内存空间,如果没有足够的内存,则不能装入该作业。此外,作业一旦进入内存,整个运行期间就不能再内存中移动了,也不能再动态的申请内存空间了。

3. 动态重定位

等到程序真正运行时,才进行地址转换,转入后所有的地址,都是相对地址。
动态重定位的特点: 可以将程序分配到不连续的存储区中,在程序运行之前,只要装入部分代码即可。程序在运行的过程中,可以动态的申请分配内存。

具体的段页操作

请查看下面文章https://blog.csdn.net/shang_0122/article/details/100605717

参考文献

https://blog.csdn.net/sinat_42483341/article/details/109574563

posted @ 2021-09-13 09:37  沧海一声笑rush  阅读(399)  评论(0编辑  收藏  举报