README
目录
CPU 用于处理作业,但是作业的内容必须要存在可存储设备中,但是磁盘速度太慢了,跟不上 CPU 的处理速度,所以产生了内存,又因为有些程序段高频地出现,所以产生了高速缓存………
存储器类型也因此被划分成一层一层的,CPU 中的寄存器到一级二级……高速缓存,到内存,到磁盘……
为了合理使用存储器,需要对存储器进行管理,这就是存储器管理的目的。
比如什么内容应该被放到速度更高的存储器中,什么内容应该被放到速度更低的存储器中,一块内存中的空间应该怎么分配给多个作业
然后发现可以把作业也分成多个部分,每个部分都可以被放到不同的存储器中,这就是分段和分页的思想。
虚拟存储器是一种存储器管理技术,它把内存和磁盘结合起来,使得程序认为自己有很大的内存,但是实际上只有一部分在内存中,其他部分在磁盘中,当程序需要访问磁盘中的内容时,虚拟存储器会把磁盘中的内容加载到内存中,这样就可以实现程序的正常运行。
分配方式:
- 单一连续分配:全部内存空间分配给一个程序
- 固定分区分配:固定分区,每个分区可以分配给一个程序
- 分区大小相等:分区大小相等,但是程序大小不一定相等,会造成内存空间的浪费
- 分区大小不等:分区大小不等,可以根据程序的大小分配合适的分区
- 动态分区分配:使用分区表等数据结构动态分配和回收内存空间,每次分配的大小不固定
- 顺序搜索算法
- 首次适应算法 FF:从前往后找到第一个满足要求的分区
- 循环首次适应算法 NF:从上次分配的位置开始,循环找到第一个满足要求的分区
- 最佳适应算法 BF:从所有满足要求的分区中找到最小的分区
- 最坏适应算法 WF:从所有满足要求的分区中找到最大的分区
- 索引搜索算法
- 快速适应算法 QF:将空闲分区按照大小排序,每次分配时从合适的位置开始找
- 伙伴系统算法 BS:
- 哈希算法 HA:
- 紧凑:将内存中的内容整理到一起,空出一块连续的内存空间
- 动态重定位:为了实现动态分区分配,需要使用动态重定位技术,将逻辑地址转换成物理地址
- 分页式存储管理:将内存空间分成等大小的页,将作业也分成等大小的页,然后装入内存
- 地址结构:页号 + 页内偏移
- 页表:页号 + 块号
- plus:两级和多级页表
- 分段式存储管理:将作业按程序内容分成若干个段,每个段可以分配到不同的内存空间(方便编程)
- 地址结构:段号 + 段内偏移
- 段表:段号 + 段长 + 段基址
- 段页式:在分段的基础上,每个段内分页
- 访问方式:段号 + 页号 + 页内偏移(慢)
- 顺序搜索算法
对换 swap:
将内存中暂时不能运行的进程或者暂时不用的程序和数据换出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据换入内存
- 整体对换:将整个进程换出
- 页面对换:将进程的一个页面换出
- 分段对换:将进程的一个分段换出