操作系统——管理物理内存

计算机体系结构/内存分层体系
地址空间&地址生成
连续内存分配

计算机体系结构
CPU:程序、软件执行的控制
内存:放置程序代码和数据
I/O:匹配外设

内存的层次结构(CPU要访问的程序或指令存储在内存的什么地方)
在这里插入图片描述
主存的数据一掉电就没了,所以需要把永久需要的数据保存到硬盘中
内存不够时,暂时不需要访问的数据放到硬盘
地址空间&地址生产:

  1. 地址空间定义:
    • 物理地址空间:内存条代表的主存及硬盘代表的存储
    • 逻辑地址空间:一个运行的程序所拥有的内存范围(一维)
  2. 地址生成:
    函数名称、变量都是逻辑地址
  3. 地址安全检查:保护进程之间的访问,使他们互相不干扰

逻辑地址空间的生成:

  1. 以C程序为例(函数的位置、变量名称都是地址)
  2. 编译后成为汇编程序(用符号代表变量和函数的名字)
  3. 汇编器将汇编语言转为机器语言.o,起始地址从0开始,把变量名和函数转换成地址
  4. linker将多个单一的.o文件转换为exe文件
  5. loader把exe(硬盘中)放到内存中执行,放到内存后有个偏移量

物理地址空间的生成(逻辑地址如何对应到物理地址中):

CPU执行指令,需要从内存中取出,放到物理内存中的地址需要从MMU中找。CPU中的MMU(内存管理单元)完成了逻辑地址和物理地址的映射

  1. 当cpu执行指令时,aou部件需要指令的内容,发出请求带的参数是逻辑地址
  2. mmu查找逻辑地址是否有对应的物理地址,如果没有,到内存的map中去找 ,如果找到了,CPU的控制器给主存发请求,需要某个物理地址的内容,即指令的内容
  3. 主存把内存的内容通过总线传给CPU
  4. CPU拿到指令内容后开始执行指令

连续内存分配:

  • 内存碎片(空间内存不能被使用)问题
    • 外碎片:分配单元间的未使用内存
    • 内碎片:分配单元中的未使用内存
  • 分区的动态分配

简单的内存管理办法:

  • 当一个程序准许运行在内存中时,分配一个连续的区间
  • 分配一个连续的区间给运行的程序以访问数据
- 第一适配
	- 优势:
		1. 简单
		2. 易于产生更大空闲块,向着地址空间的结尾
	- 劣势:
		1. 产生外部碎片
		2. 不确定性 
- 最佳适配
	- 优势:
		1. 当大部分分配时小尺寸时非常有效
		2. 比较简单
	- 劣势:
		1. 产生外部碎片
		2. 重分配慢
		3. 易产生很多没用的微小碎片 
- 最差适配
	- 优势:
		1. 假如分配是中等尺寸效果最好
        - 劣势:
	   	1. 重分配慢
	   	2. 外部碎片
	   	3. 易于破碎大的空闲块以致大分区无法被分配

连续内存分配的缺点:

  • 分配给一个程序的物理内存是连续的
  • 内存利用率较低
  • 有外碎片、内碎片的问题

非连续分配:

  • 优点:
    • 一个程序的物理地址空间是非连续的
    • 更好的内存应用和管理
    • 允许共享代码与数据(共享库等…)
    • 支持动态加载和动态链接
  • 缺点:
    • 虚拟地址和物理地址之间的转换 -> 管理开销大

分段机制、分页机制
硬件如何支持分段机制【分段寻址方案】:
操作系统建立段表,按段表去物理内存寻址
分页机制【主要】:
基于页的寻址:需要页号和页内的偏移,分段机制中,段的长度可变,分页中,页内的偏移单位帧的大小不变
页帧(frame):物理内存的地址,由帧号、帧内偏移构成
建立从逻辑地址到物理地址的转换(pages to frames):

  • 页表(由操作系统建立)
  • MMU
    基于分页机制的硬件实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值