欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

操作系统-内存使用与分段

程序员文章站 2022-06-18 18:26:41
1. 从计算机如何工作开始 首先让程序进入内存 重定位:修改程序中的地址(是相对地址) 程序载入后还需要移动 重定位的最合适时机 运行时重定位 首先在内存中找一段空闲的内存,然后把这段空闲内存的地址找到例如起始地址1000,然后把这个1000赋给PCB,因为创建了进程自然就有了PCB,这个起始地址就 ......

1. 从计算机如何工作开始

操作系统-内存使用与分段

首先让程序进入内存
操作系统-内存使用与分段

重定位:修改程序中的地址(是相对地址)

操作系统-内存使用与分段

程序载入后还需要移动

操作系统-内存使用与分段

重定位的最合适时机---运行时重定位

操作系统-内存使用与分段

首先在内存中找一段空闲的内存,然后把这段空闲内存的地址找到例如起始地址1000,然后把这个1000赋给pcb,因为创建了进程自然就有了pcb,这个起始地址就作为基地址,然后pc置好初始地址开始执行。

把程序放到找到的空闲内存中,每次执行都有进行地址翻译

基地址+偏移量
思路如下:

操作系统-内存使用与分段

当进行交换时

操作系统-内存使用与分段

2. 引入分段

是将整个程序一起载入内存中吗?不是

程序员眼中的程序

操作系统-内存使用与分段

每一个段都有一个基址

操作系统-内存使用与分段

gdt+ldt

操作系统这个表放在gdt里,而每个进程有自己的ldt表(进程段表,在pcb中)

此时转换的时候不是整个程序,而是程序中对应的段进行转换

操作系统-内存使用与分段