内存管理的⽬标:实现内存分配和回收,提升内存空间的利用率和内存的访问速度算法
寄存器:在CPU内部有一组CPU寄存器,寄存器是cpu直接访问和处理的数据,是一个临时放数据的空间。缓存
高速缓冲区:通常CPU都会从内存取数据到寄存器,而后进行处理,但因为内存的处理速度远远低于CPU,致使CPU在处理指令时每每花费不少时间在等待内存作准备工做,因而在寄存器和主内存间添加了CPU缓存,CPU缓存比较小,但访问速度比主内存快得多,若是CPU老是操做主内存中的同一址地的数据,很容易影响CPU执行速度,此时CPU缓存就能够把从内存提取的数据暂时保存起来,若是寄存器要取内存中同一位置的数据,直接从缓存中提取,无需直接从主内存取安全
缓存命中率:寄存器并非每次数据均可以从缓存中取得数据,假如寄存器要获取的不是同一个内存地址中的数据,那寄存器就必须直接绕过缓存从内存中取数据。因此并非每次都能从缓存中取到数据,这种现象叫作缓存的命中率。命中就直接取缓存中的数据,不然从内存中取;可见缓存命中率的高低也会影响CPU执行性能。函数
交互流程:当一个CPU须要访问主存时,会先读取一部分主存数据到CPU缓存(固然若是CPU缓存中存在须要的数据就会直接从缓存获取),进而在读取CPU缓存到寄存器,当CPU须要写数据到主存时,一样会先刷新寄存器中的数据到CPU缓存,而后再把数据刷新到主内存中。性能
数据存储的局部性原理:spa
局部性:在⼀段较短期内,程序的执⾏仅限于某个部分,相应地它所访问的存储空间也局限于某个区域操作系统
分类:blog
⾼级语⾔程序 -》 编译、连接 -》 可执⾏程序进程
程序的连接:将编译后的⽬标模块装配成⼀个可执⾏程序内存
程序的装⼊
物理地址=逻辑地址+程序在内存中的起始地址
连续分配方式:为一个用户程序分配一个连续的内存空间。
连续分配方式进一步分为:单一连续分配、固定分区分配、动态分区分配以及动态重定位分区分配。
一、单一连续分配:任什么时候刻主存储器最多只有⼀个做业
二、固定分区分配:每一个分区⼤⼩固定不变(各个分区大小能够相同也能够不一样),每一个分区能够且仅能够装⼊⼀个做业
固定分区说明表 :由固定分区说明表能够查看哪一个分区空闲,哪一个分区被占用
三、动态分区分配:
空闲分区表: 由空闲分区表可知 哪一个分区已被占,哪一个分区是空闲。(分区编号、分区大小、起始地址)
空闲分区链:
一、⾸次适应算法:空闲分区链以地址递增的顺序连接, 从链⾸开始查找 ,直⾄找到第⼀个满⾜要求的空闲分区, 从该分区中划出⼀块内存给进程 ,剩下的仍留在空闲链中。
外部碎⽚:分配后留在空闲链上的。首次适应算法会产生该碎片。
内部碎⽚:因为空闲的区域比申请的大一点点,系统就直接把多余的这一点也分配给你。
二、循环⾸次适应算法:从上次找到的空闲分区的下⼀个空闲分区开始查找。 优势:空闲区分布均匀
三、 最佳适应算法:空闲分区链以分区⼤⼩递增的顺序连接,从链⾸开始查找, 直⾄找到第⼀个与进程请求的空间⼤⼩ 最接近的空闲分区。
1)释放⼀块连续的内存区域 2)若是被释放的区域与其余空闲区相邻,则合并空闲区 3)修改空闲分区链
*************************************************************************************
**********************************************************************************************
*****************************************************************************************
系统区用于驻留操做系统,用户区用于分配给用户进程使用
为了防止工做用户程序对操做系统的破坏,保证系统的安全、可靠,在操做系统中应该考虑设置存储器保护机制。在单用户、单任务操做系统中较经常使用的方法是设置一个基址寄存器和一个界限寄存器。
界限寄存器:存放装入用户区程序的地址范围
基址寄存器:存放程序在物理内存中最小地址的是基址寄存器