[操作系统]第三课

课程来源《操作系统_清华大学(向勇、陈渝)》

1.计算机体系结构及内存分层体系

计算机体系结构/内存分层体系

基本硬件结构:
1.CPU(程序执行和控制处),
2.内存(放置了代码和处理的数据),
3.设备(I/O)

在这里插入图片描述
内存的层次结构:

在这里插入图片描述

CPU的数据放的位置(内存):
1.寄存器和CACHE都在CPU内部,速度快容量小,
2.主存(物理内存)放操作系统本身和应用,通过交换/分页和磁盘交互,
3.将永久保存的数据放到磁盘中(虚拟内存),慢而容量大,5ms寻道时间。

操作系统对内存分配做了什么:
(1)抽象,让应用程序不用考虑底层细节,通过访问连续的地址空间,这个地址空间称为逻辑地址空间;
(2)保护,独立地址空间;
(3)共享,访问相同内存;
(4)虚拟化,内存不够时,需要更多的地址空间,利用虚拟化,对应用程序透明

操作系统管理内存的不同机制:
程序重定位,分段,分页,虚拟内存,按需分页虚拟内存

OS本身也是软件,实现高度依赖于硬件,要知道内存架构,MMU(内存管理单元,硬件组件中负责处理CPU的内存访问请求)

2.地址空间与地址生成

主要讲述:地址空间定义、地址生成、地址安全检查

地址空间的概念:

1.物理地址空间是硬件支持的地址空间
E.G:内存条代表的主存,硬盘代表的磁盘
起始地址空间0,到地址max

2.逻辑地址空间是一个运行的程序所具有的内存范围,一维线性

二者之间的交互,映射关系,逻辑地址空间落在物理地址空间上。
在这里插入图片描述

具体过程实例:
C程序通过编译,汇编,链接link,载入(程序重定位)生成EXE,将逻辑地址映射到物理空间上。
C程序中函数的位置(入口),变量的名字就是逻辑地址,汇编后(.o文件)起始地址为0,把变量名和函数名转为相应的从0开始的连续逻辑地址,link把多个.o合成一个,放在硬盘中,通过loader应用程序再把exe放在内存中执行,这里有分配地址空间和映射(偏移)的过程。过程与os无关,编译器和loader来完成。此时得到的仍然是逻辑地址,

接下来,物理地址生成的四个步骤
1, CPU要在内存中执行指令,AOU需要知道这条指令的内容,发送请求,传参数,参数就是逻辑地址
2, 查表。根据CPU中的MMU(有块区域表示映射关系,如果在MMU没查到会去内存中的MAP找),查表逻辑地址->物理地址。
3, 找到后CPU给主存(就是内存)发请求,请求一个物理地址的内容(就是指令的内容)
4, 主存会通过总线把内容传给CPU,CPU执行指令。

在这里插入图片描述
在这里插入图片描述

操作系统的作用是:
1.在这些步骤之前建立好映射表。
2.以及地址安全检查

逻辑地址要检查起始地址和长度

OS设置逻辑地址的界限和基址,不对就抛出内存异常

CPU—逻辑地址—界限寄存器—–基址寄存器—物理地址(所在位置)—-内存

在这里插入图片描述

3.连续内存分配:内存碎片与分区的动态分配

连续内存分配:内存碎片问题、分区的动态分配、压缩式碎片整理、交换式碎片整理

物理内存分配可以分为连续分配和非连续分配。

连续分配会造成内存碎片问题,空闲内存不能被利用,外部碎片,在分配单元间的未使用内存,内部碎片,在分配单元中的未使用内存。

简单的内存管理方法:
当程序从硬盘加载到内存中时,要分配一个连续的区间;
当应用程序需要访问数据时,需要分配空间。

分配策略(算法):

  1. 首次适配,从0地址往后查找和使用第一个可用空闲快(要比需要的空间大)。基本实现机制要求把空闲的内存块按地址排序。回收要考虑能否合并内存块,合并相邻的空闲分区。
    优点:简单,易于产生更大的空闲快,向着地址空间的结尾
    劣势:易产生外部碎片(随着动态分配加剧),不确定性
  2. 最优适配:找比需求大但最接近需求的空闲内存块,产生尽可能小的内存碎片。原理是为了避免分配大空闲块,最小化外部碎片,要求对空闲地址快按尺寸size排序,回收要合并。
    优点:当大部分分配需要小空间时使用,简单
    缺点:外部碎片太小太细,不利于后续重分配。
  3. WORSTFIT 最差匹配
    使用最大的空闲快,大块拆分变小块,可以避免产生太多微小的碎片,也要排序,回收合并。
    优势:分配中大型SIZE时实用
    缺点:重分配慢,对大块的请求可能没得用了。

4.连续内存分配:压缩式与交换式碎片整理

针对碎片处理:压缩式碎片整理、交换式碎片整理

compression压缩式碎片整理 :
重置程序以合并空洞、要求所有程序时动态可重置的,考虑问题:何时重置?开销。
调整内存中程序运行的位置,通过拷贝尽量把程序放到一起,空出较多的空闲位置。拷贝要考虑何时去挪,不能在程序运行的时候挪,要在waiting时,和开销。

swapping交换式碎片整理 :
硬盘当做内存的备份,把waiting的程序包括数据放在磁盘上,腾出空间给其余运行的程序。(抢占waiting程序回收其内存),也要考虑开销和换哪个程序。

硬盘和内存都当做内存用,成为虚拟内存。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值