操作系统第三章内存管理

程序从磁盘加载到内存执行涉及重定位过程,包括编译时、载入时和运行时重定位。运行时重定位允许程序在内存中动态移动,提高内存使用效率。在创建进程时,程序的地址通过基址寄存器和PCB(进程控制块)进行管理和转换,确保程序正确执行。
摘要由CSDN通过智能技术生成

一、如何让内存用起来呢?

程序员写好的程序是放在磁盘中的,将某些需要运行的程序需要放到内存中,CPU从内存中取指来执行程序(计算机工作),这样内存中就被使用起来了。

  1. 程序该怎么样放在内存中呢?随便放吗?
  2. 为什么我们写的程序的地址不是真实的地址(物理地址)
  3.  假如写的程序就是真实的地址,就必须放在0号地址,可是这个地方是我们想放就放的吗,前提是内存该处是空闲的,才能把程序放到内存该区域(实际上0号地址开始放的操作系统)
  4.  如何完成程序中写的地址对应到内存中真实的地址?(重定位:修改程序中的地址)
  • 什么时候完成重定位?来看以下两种方法:
  •      编译时:编译的时侯就完成,编译的时候就要知道内存中哪个地方空闲,可是编译的时候内存某区域是空闲的,可编译后就给其他进程占了,那么该区域就不空闲了,显然该方法很不灵活。较适合在一个静态系统。有效率高的优点
  • 载入时完成:重定位的程序一旦载入内存就不能动了

    但很多程序载入后还要移动 ,内存的空间是有限的,假如一个进程载入内存后,不能移动,而进程被阻塞长时间得不到cpu的执行,这是很浪费内存的空间的,因为往往进程很多,而内存空间紧张不足以装下全部进程,所以把长时间不用的进程a移动到磁盘中,换有需要的进程b来占有内存的空间,下次再把进程a唤醒时,内存可以放进程的空闲的区域地址又跟上次不一样了,所以对应的真实地址也要改变,所以引入“运行时重定位”非常有必要,从而使内存更高效的使用

  • 运行时重定位:即CPU执行该程序的时候才重定位(地址翻译)

 

  •  进程从磁盘中放到内存,内存又换到磁盘的时候,地址信息的改变都放在了“PCB”中“
  • 总结一下如何让内存使用起来

                首先让程序编译好,编译时要不要进行地址的修改呢,不需要,接下来让它执行(执行要干什么呢?要创建进程,创建pcb),在内存中找一段空闲的区域,把该区域的起始地址找到(该基址放在基址寄存器内),把该地址赋给pcb,然后pc置好初始地址开始执行,每次执行的时候都要进行地址翻译

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值