- 📢博客主页:盾山狂热粉的博客_CSDN博客-C、C++语言,机器视觉领域博主
- 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
- 📢努力努力再努力嗷~~~✨
💡在上一章从硬件的角度讲解了计算机的存储结构,这里再从软件的角度进行阐述
⭕首先带大家回忆一下存储器管理的基本知识
👉存储器管理的对象是主存储器(主存、内存)
👉对存储器实施有效的管理是很重要的,会影响到存储器的利用率和系统性能
👉存储管理的主要功能:分配和回收主存空间、提高主存的利用率、扩充主存、对主存信息实现有效保护
一、存储器的结构
👉存储器的功能:保存数据
✈️存储器的发展方向:高速度、大容量和小体积
🏠一般存储器的结构:寄存器-主存-外存结构、寄存器-缓存-主存-外存结构
⭕存储组织的功能:在存储技术和CPU寻址技术许可的范围内组织合理的存储结构,使得各层次的存储器都处于均衡的繁忙状态
(一)虚拟地址
💡数据的存放地址是由符号决定的,故称为符号名地址
👉它是从0号单元开始编址,并顺序分配所有的符号名所对应的地址单元(虚拟地址对应的是真实的地址空间)
⚠️由于符号名地址不是主存中的真实地址,又称为相对地址、程序地址、逻辑地址、虚拟地址
(二)地址空间
💡程序中由符号名组成的空间称为地址空间
👉源程序经过汇编或编译后形成二进制的目标程序,然后在目标程序中程序指令和数据的位置按照字或字节单位根据它们的相对顺序来确定,称为相对地址。相对地址一般从0号地址开始依次编号
⚠️相对地址也称为逻辑地址或虚地址,把程序中由相对地址组成的空间叫做逻辑地址空间。相对地址空间通过地址再经过定位机构转换到绝对地址空间,绝对地址空间也叫做物理地址空间
二、地址重定位
❓什么是地址重定位?
🗣️将逻辑地址转换成主存物理地址的过程
💡在可执行文件装入时,需要解决可执行文件中地址(指令和数据)与主存地址的对应关系,由操作系统中的装入程序和地址重定位机构来完成
⭕地址重定位分为静态地址重定位和动态地址重定位
(一)静态地址重定位
👉在程序装入主存时已经完成了逻辑地址到物理地址的变换,在程序执行期间不会再发生变化
👉静态地址重定位的优点:无须硬件地址变换机构的支持,它只要求程序本身是可重定位的,只对那些要修改的地址部分具有某种标识,由专门设计的程序来完成
👉静态重定位的缺点:必须给作业分配一个连续的存储区域,在作业的执行期间不能扩充存储空间,也不能在主存中移动,多个作业难以共享主存中的同一程序副本和数据
⚠️在早期的操作系统中,多数都采用这种方法
(二)动态地址重定位
👉在程序运行期间完成逻辑地址到物理地址的变换,其实现机制要依赖硬件地址变换机构,如基地址寄存器(BR)
👉静态地址重定位的优点:在程序执行期间可以换入和换出主存;程序可以在主存中移动,把主存中的碎片集中起来,可以充分利用空间;不必给程序分配连续的主存空间,可以较好地利用较小地主存块,可以实现共享