/***
* TODO 《操作系统原理》 记录(16)
* @存储管理
* @内存管理 [Point]
* -------------------------------------------
* @地址捆绑
* @程序的执行通常是以二进制可执行文件的形式存储在磁盘上
* @输出队列
* 为了执行、程序应被调入内存放入进程中
* 进程在执行时可以在内存和磁盘中移动
* 在磁盘上等待调入内存的进程形成了输入队列
* ————
* 通常步骤是从输入队列中选择一个进程装入内存运行
* -------
* @编译时
* @@如果编译时就知道进程驻留在内存中的地址就可以生成【绝对代码】
*
* @加载时
* @@如果在编译时无法知道进程驻留内存的地址则生成【可重定位代码】
* 对于这种情捆绑的情况延迟到加载时发生
* 如果开始地址发生变化、只需要重新编译引入其中的新值___替换
* @执行时
* 如果进程在执行时可以从一个内存段移动到另一个内存段
* 则捆绑动作会延迟到执行时才进行
* 【优先方案】这种方案需要计算提供特殊的硬件支持
* -----------------------------------------
* @逻辑地址空间和物理地址空间 {MMU}
* CPU生成的地址通常为逻辑地址空间
* 内存单元所看到的地址通常为物理地址
* ----加载到【内存地址【寄存器中的地址】】
* ___
*
* 编译和加载时——————的地址捆绑会生成相同的逻辑和物理地址空间????
* 原因是执行时会发生逻辑映射物理地址?发生真正的捆绑动作
*
*
* 执行时——————根据不同的捆绑方案会生成不同的逻辑和物理地址空间
* 通常称逻辑地址为虚拟地址
*
*
* ---程序会生成所有关于逻辑地址集合对应逻辑地址空间————
* 逻辑地址空间集合对应的所有物理内存地址空间称之为物理内存
*
* 运行时【执行时】虚拟地址【逻辑地址】
* 映射到物理地址的过程由【内存管理单元MMU】完成
* --所引用的内存地址只有引用时才会真正定位
*
*
* 用户处理生成逻辑地址————MMU负责处理逻辑地址到物理地址的映射
*
* 一个进程的所需程序数据必须存储在内存中方便——————程序执行
*
*
* @动态加载
* 使用动态加载时、一个子程序只有在使用时才会被加载
* 所有子程序都可以通过重定位的方式保存在磁盘上
* 由主程序装入内存执行
* 如果一个子程序调用另一个子程序则会进行内存检查是否已经被加载过
*
*
* @动态链接和共享库
* 将链接延迟到运行时
*
* 没有动态链接都必须通过重新生成链接才能使用新的版本库
*
* @覆盖
* 只在内存中保留所需要的指令和数据
* 大程序需要运行因为空间不足导致覆盖其他空间从而完成运行
*
*/
TODO 《操作系统原理》 记录(16)
最新推荐文章于 2022-12-09 12:42:26 发布