操作系统—内存管理

操作系统—内存管理
说明:
1.内存管理:内存是计算机的重要组成部分,内存管理的目标是 内存分配,内存回收,提高内存空间的利用率和内存的访问速度。
2.存储器层次结构:CPU寄存器保存最常用的数据,靠近CPU的容量下速度快的高速缓存器作为速度相对较慢,容量较大的主存中数据和指令自己的缓冲区。
贮存暂时存放存储容量大,速度更慢的磁盘上的数据
高速缓存1-10个周期
主存中50-100个周期
磁盘中2000万个周期
程序的执行遵循局部性原理
局部性原理的几个论点:
1)程序在执行时,处理少部分的转移和过程调用指令以外,大多数情况下顺序执行
2)过程调用将会使程序的执行轨迹由一部分内存区域转到另一部分内存区域。过程调用的深度不能超过5,
3)程序中有很多循环结构,少数指令,多次执行
4)包括许多数据结构的处理
局部性原理表现为时间上和空间的局部性
3.静态链接:在程序运行之前,用链接程序系那个目标模块连接成一个完整的装入模块,
有两个任务:
1)逻辑地址进行转换
2)变换外部调用符号
采用静态链接的方式,程序开发不够灵活,方便
4.动态链接:将某些目标模块的推迟到这些模块中的函数被调用执行时才进行
优点:节省内存和外存空间,方便程序开发
缺点:运行速度慢
5.可重定位(静态重定位)
两个特点:
1)编译程序使目标模块的起始地址从0开始
2)程序装入时,装入程序根据内存的使用情况将装入到内存的某个位置,对模块进行重定位
物理地址=有效逻辑地址+程序在内存中的起始地址
6.连续分配存储管理:连续分配是指操作系统分配内存时,为每个进程分配一块物理地址连续的内存空间
7.单一:只有一个用户区,只能装入一道程序,用于单用户单任务的的系统
分为系统区和用户区
系统区用于驻留操作系统,用户区用于分配给用户进程使用
8.固定:分成若干个固定大小的区域,每个区域中驻留一道程序
9.空闲分区链:使用空闲分区链可以动态的为每一个空闲分区建立一个结点,每个节点包括分区大小,分区起始地址,指向前一个空闲分区结点的指针,以及指向后一个空闲分区结点的指针
10.首次适应:按照顺序,该算法总是先分配低地址部分的内存空间,容易使低地址部分留下小分区,高地址部分大空闲区比较多,难以被利用的小空闲区被称为外部碎片或外碎片,分配给进程的分区若大于进程请求的分区,会存在一部分不被利用的空间,为内部碎片或内碎片
11.循环首次适应:从上次找到的空闲分区的下一个空闲分区开始查找,直到找到第一个能满足要求的空闲分区
优点是空闲分区分布均匀,查找开销较小
缺点:容易使系统缺乏大空闲区
12.最佳适应:把大小与进程所请求的内存空间大小最接近的空闲分区分配给进程,避免了大材小用
优点是避免了大材小用,提到内存利用率
缺点:容易留下难以利用的小空闲区
13.内存回收流程:
1)释放一块连续的内存区域
2)如果被释放区域与其他空闲区间相邻,则合并空闲区
3)修改空闲分区连
14.基本分页存储管理:把进程离散的存储在内存中物理地址不连续的区域中,为离散的内容管理方式
15.地址结构:页号对应的页表项起始地址=页表起始地址+页表项长度页号
页框号和页内偏移地址送物理地址寄存器 物理地址=页框大小
页框号+页内偏移量
16.块表:也叫转换后援缓冲,为了提高CPU访存速度才作用的专用缓存
TLB条目两部分:键和值
引入TLB之后的地址变换过程
1)CPU产生分页的逻辑地址页号和页内偏移后,将逻辑地址的页号提交给TLB
2)查找TLB,如果找到页号,把该页所在的页框号用于形成物理地址
3)如果页表项不在TLB,在访问内存页表后,把找到的页表项中的页号和页框号写到TLB中
17.两级和多级页表:
1)每个进程有一个页表
2)每个页表至少包含与进程页数相同的页表项数
3)页表必须连续存放
18.反置页表:每个进程都有一个页表,进程逻辑地址空间的每个页在页表中都有一个相应的页表项用来存放页所在的页框号
地址映射过程:
1)根据进程号和页号找到页框号
2)物理地址=页框号*叶框大小+页内偏移地址
19.基于分页虚拟存储系统:虚拟存储器有调入功能和置换功能
虚拟存储技术带来的好处:
1):提高内存利用率
2):提高多道程序度
3)把逻辑地址空间和物理地址空间分开
虚拟存储的特征:
离散性:分页分段和段页式都是离散的内存管理方法,离散性是虚拟存储管理的基础
对换性
虚拟性
多次性
请求分页系统:把逻辑地址空间分成大小相同的页,只把进程的一部分调入内存
20.请求分页系统性能分析:
抖动产生的原因和预防方法:
1):抖动:多道程序度太高,试运行进程的大部分时间都用于进行页的换入换出,不能完成任何有效工作的状态为抖动
抖动原因:系统中的进程数量太多,每个进程能分配到的页框太少,以至于进程运行过程中频繁请求调页
抖动的预防:
1.采取局部置换策略
2.在CPU调度程序中引入工作集算法
3.挂起若干进程
21.最少页框数:能保证进程正常运行所需要的最少页框数,,少于页框数这个值进程无法正常运行
22.分页和分段的区别:
1.页是按物理单位划分的,段是逻辑地址划分的
2.分页的引入是为了提高内存的利用率和支持虚拟存储;引入分段的目的为了方便程序员编程
3.页的大小是固定的,段的大小不固定
4.分页的地址空间一维,分段二维