内存大管家!

静态重定位=可重定位装入
动态重定位=动态运行时装入



内从空间扩充:覆盖和交换 技术 还有 虚拟存储技术

中级调度:选择一个处于挂起态的进程调入内存
就绪挂起
阻塞挂起??



1 空闲分区表或者空闲分区链
2 动态分区算法进行选择
3 进程的大小和分区的大小进行比较
分配:
1 p<b ——>更改 分区大小 和起始地址
2 p=b ——>删除 分区表项
3 p<b ——>error 算法错误了笨蛋
回收:
1


2

3



外部碎片可以用紧凑技术解决
外部碎片指的是。。。
产生外部碎片的原因:空闲分区太小,难以利用
产生内部碎片的原因:分配给进程的内存太大,部分内存没有充分利用
两个根本就是两个概念,虽然叫法很相似比如他俩就是香蕉和苹果
动态分配是根据进程的大小来分配内存空间的,简而言之就是:你要多少,我给你多少,(无内部碎片)但是你要的我满足不了(存在外部碎片)
而
单一连续分配和固定分区分配(分区大小相等和不等)就是肯定能把我装下,不存在外部碎片,但是给的太多了,没用上啊大哥,即内部碎片。


非连续分配方式产生的原因?废话,那不就是连续...不好(要不是内部碎片,要不是外部碎片)嘛,然后就非连续就行了(离散分配方式)




从K位断开,前面的是页号后面的是页内偏移量

0——11是12位
0——31是32位
我要知道页号对应的起始地址
2的页号次方*页面大小

就是说页表建立了 进程的页号和物理块(空闲分区)的块号之间的关系
通过页号可以直接找到块号——>*页面大小就是 在物理内存的地址

其实这也很简单:页表项是根据页号和块号建立起来的,每页个块号和页号是一一对应的,?
块号决定了页号,而计算机的物理内存是固定的,页面大小也是一定的,内存即物理内存即空闲分区即一共划分的物理块的个数是确定的(由物理内存/页面大小=页块大小),因为我们要求 页面大小(划分的各个小进程)和物理块大小(内存被分成各个小内存)相等,只有这样才能装入,才能对应。
我们得到了物理块的总个数即页号(我的理解)

基本地址变换机构:硬件机构:逻辑地址到物理地址的转换



b物理块号*L页面大小 +偏移量
数量乘以单位(起始地址)+走了几步{最终的物理地址}
e:其这么多麻烦的名字不嫌麻烦吗?


上面这个说的啥: 1 通过分析 即 2^32 / 2 ^12 = 2^ 20 这么多个页表项,页表项有大小一个就是=页号 + 页内偏移量 我这么多的页面我怎么存,我当然要大于他 1 B=8bit 20个 bit 需要24 bit= 3B 我能够把他给容下了,这个容下了是物理上的内存, 我现在是要算页表项,(和别的页面没关系) 页框要存页表项,一个叶匡是4kb 一个页表项是3b 可以存1365 个页表项,然而,还剩下一个b的页内碎片,我一个页表项需要3b 这显然不能满足我,所以我的1365的地址就得变一下,页表项的地址x + 3* 1065 +1 (前面放的是0——1064的页表项) ,这个地方讨论的不是 逻辑地址(页面)的存储 讨论的是页表项的存储。。。
我懂了呀!,页表项=一个页面,页表项长度=页面大小,页表长度=页表项的数目!(牛皮)





存在的问题单机列表


















虚拟内存技术建立在离散的分配管理的方式

由于传统的存储管理方式的一次性和驻留性的特点,根据局部性原理(时间局部性和空间局部性)产生了虚拟内存的概念,通过调入调出(多次性),换入换出(对换性),将常用的数据放置到内存,实现虚拟内存,然后对应的的是请求分页存储管理,请求分段存储管理,请求段页式存储管理,增加的内容就是 请求调页/段,页面置换/段 是根据虚拟内存的两个特性提出的



请求分页存储管理 和基本分页存储管理增加的步骤
多次性和对换性提出的


新增的表项:1 不在外存在哪?
2 修改了没访问了几次?
请求调页——>说明了页面中断
页面置换——>说明内存吃紧,发生页面淘汰
修改页表项

最佳置换算法 opt
先进先出置换算法 fifo
最近最久未使用置换算法 LRU
时钟置换算法 clock
改进型的时钟置换算法


缺页率=9/20 由发生缺页中断的次数除以总的访问页面的次数(无法实现,操作系统不可能未卜先知)

我先来就让我先出去,你礼貌吗?
latest recently unused






运行前和运行期间




