计算机基础课--操作系统学习笔记(3)

这篇的内容是内存管理。

引入:操作系统该怎么做才能让物理内存大小固定的基础上提高内存的利用率呢?这正是内存管理该做的。这里的内存主要指主存。

一、内存管理的基本概念

1.内存管理的功能及程序的链接和装入

1)内存功能

 2)程序的链接和装入

基本步骤:编译、链接、装入。这是额外的知识点,但是通过介绍这一块可以结合计组比较好地把整个程序从软件到硬件的运行流程串起来。

 链接三种方式:

链接的库函数,这说明库函数跟我们自己写的程序应该是分开的,模块化的。

 装入的三种方式:

可参考:程序的链接与装入 - Hhhighway - 博客园

2.逻辑地址空间与物理地址空间及内存保护

1)逻辑地址空间与物理地址空间

这块主要是介绍内存管理功能中的地址转换功能

2)内存保护

这块主要是介绍内存管理功能中的存储保护功能。

关键词:地址转换与越界保护

 3.覆盖与交换

这块主要是介绍内存管理功能中的内存扩充功能。覆盖与交换是在多道程序运行环境下扩充内存的方法。

1)覆盖

关键词:固定区和覆盖区

 2)交换

 3)覆盖于交换的区别

 4.连续分配管理方式

这块主要是介绍内存管理功能中的内存的分配功能。

即把一整块连续存储空间都规定给一个进程使用。

注意:区分内部碎片于外部碎片,参考:外部碎片和内部碎片的区别_haiross的专栏-CSDN博客_外部碎片和内部碎片的区别

 1)单一连续分配

 2)固定分区分配

这是一个比较差劲的分配方式 ,灵活性低,利用率低



 3)动态分区分配 

 动态分区的几种算法:

 5.非连续分配管理方式

注意区分请求分页与基本分页的区别。可参考:请求分页存储管理与基本分页存储管理这两种方式方式有何区别与联系_绝地反击T的博客-CSDN博客_请求分页存储管理方式和基本分页存储管理方式的区别

 5.非连续分配管理方式--基本分页存储管理方式

1)分页存储管理基本概念

分页思想:

注:块在进程中、主存中、外存中叫法不一样。分页相较连续分配其特色在于把内存分成了粒度较小的块。

 页面和页面大小:

 地址结构:

 

 页表:

注意:逻辑地址(即地址结构)和页表项是不同的两个东西。

 2)基本地址变换机构

即如何从逻辑地址转换为内存中的物理地址,地址变换借助页表实现。

总结:物理地址是由逻辑地址和页表项还有页表寄存器(ptr)三者共同决定的。先由ptr和逻辑地址的页号计算出页表项物理地址,然后访问该物理地址的内容即为真实物理地址的块号(第一次访存)。然后用真实物理块号与逻辑地址中的页内偏移部分计算出该逻辑地址真实物理地址,然后访存该页(第二次访存)。全程进行了两次访存操作。

3)两级页表

可参考:两级页表 - 简书

6.非连续分配管理方式--基本分段存储管理方式 

与页的区别在于:也是固定大小的,而不同的段大小不一样。

 1)基本概念

2)段表

 3)地址变换机构

 总结:地址映射过程和分页方式很相似,但是比分页简单多了。

进一步理解可参考:基本分段存储管理方式 - 简书

而关于地址空间一维二维的概念参考:分页存储的地址空间是一维的,分段存储的地址空间是二维的_叫我小柴的博客-CSDN博客_分段管理的地址空间是二维的

 怎么理解分页的作业地址空间是一维的,而分段的作业地址空间是二维的?_百度知道

 6.非连续分配管理方式--段页式存储管理方式 

参考:操作系统学习笔记(十三):段页式存储管理_djl806943371的博客-CSDN博客_段页式存储管理

二、虚拟存储器与虚拟内存

本处结合计组进行笔记整合,

关于虚拟存储器与虚拟内存的区别可参考:虚拟存储器与虚拟内存_memory-CSDN博客_虚拟存储器和虚拟内存

1.基本概念

1)为什么要引入虚拟存储

多道程序设计的两个特征:

 为了解决内存空间不够的问题,引入了虚拟内存的概念。

2)基本思想

 3)主要特征

 

 4)虚拟存储实现方式与条件

 

 2.请求分页管理方式

关键词:最常用的虚存实现方法。

1)页表机制

 2)缺页中断机构

 3)地址变换机构

 4)快表(TLB):加快地址转换

 快表是存放在cache当中的,放在主存中的表称为慢表。

具体可参考:TLB快表的作用_DSIslander的专栏-CSDN博客_快表

3.页面置换算法

即为了解决尽量少发生页面置换的问题。

具体参考:操作系统之页面置换算法 - fkissx - 博客园

 4.页面分配策略

1)分配置换策略

局部置换:如果进程在运行中发现缺页,就从分配给它的n个页面中选出一页换出,然后再调入一页。内存空间不变

全局置换:在进程运行的时候发生缺页就将OS保存的空闲物理块取一块给它,或者在所有进程的全部物理块中选择一块适合的换上,再把缺的页调进来。

固定分配置换:指为每个进程分配一组固定数目的物理块,在进程运行期间不再改变

可变分配置换:在进程运行期间进程物理块数目可动态改变

固定分配局部变换: 为每个进程分配一组固定数量的物理块,进程运行时不再改变。若发生缺页,从分配的N个页面中选出一页换出,调入下一页。

可变分配全局置换:先为每个进程分配一定数目的物理块,在进程运行期间,根据情况减少或增加

可变分配局部置换:可变分配局部置换。它为每个进程分配一定数目的物理块,当某个进程发生缺页时,只允许从该进程在内存的页面中选出一页换出,因此不会影响其他进程的运行。若进程在运行中频繁地缺页,则系统再为该进程分配若干物理块,直至该进程缺页率趋于适当程度;反之,若进程运行中的缺页率特别低,则可适当减少分配给该进程的物理块。比起可变分配全局置换,这种方法不仅可以动态增加进程物理块的数量,还能动态减少进程物理块的数量,在保证进程不会过多地调页的同时,也保持了系统的多道程序并发能力。当然它需要更复杂的实现,也需要更大的开销,但对比频繁地换入/换出所浪费的计算机资源,这种牺牲是值得的。

2)调页时机

 5.抖动

6.工作集

 7.地址翻译

需要结合计组cache相关内容。

流程简介:

Guess you like

Origin blog.csdn.net/qq_42987967/article/details/121073740