2022-1-19 计算机组成原理 —— 程序装载

一、程序装载过程中遇到的两个问题
1)可执行程序加载到内存后的空间应该是连续的。
因为执行指令的时候,程序计数器是一条一条指令顺序的执行下去。这意味着指令需要连续的存储在一起。
2)多道程序。加载多个程序的同时,意味着我们不能指定进程一定加载到内存的某个位置上去。

二、内存映射
在内存中找到一块连续的空间(物理内存),将这段连续的空间和程序中指令的空间对应起来的行为(虚拟内存)叫做内存映射。

三、内存分段
将不同大小的程序一段接着一段,完全载入内存当中。这里的段,指的是分配给整个程序的内存,但是这样子会有一个问题。当中间的某一段程序结束运行后,会空出一块内存。如果新的程序的大小大于这块内存的大小,则新的程序无法被载入这个内存当中,会造成内存碎片。

四、内存交换
如何解决内存碎片呢?将后面的程序先移入到磁盘当中,以磁盘作为中间程序暂时放置的地方。
然后再将这个程序载入内存,载入地址从紧挨着上一个程序开始。

但是这样又有一个问题:磁盘和内存交换需要花费的时间较多,会造成程序运行的卡顿。

五、内存分页
将内存以一定的大小均匀的分成若干段,程序也以同样的大小分成若干段,每次只载入需要运行的几段。如果运行到了那一段却没有载入则 CPU 会引发一个缺页错误。
操作系统捕捉到这个错误会将程序剩下的页从磁盘中载入到内存当中使得程序可以接着运行。

通过引入虚拟内存,页交换,内存分页这些机制,程序在运行的时候不再需要考虑到真实的地址空间的位置。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值