首页 > 系统相关 >操作系统基础——内存管理

操作系统基础——内存管理

时间:2024-09-01 09:37:39浏览次数:5  
标签:操作系统 内存 置换 基础 页表 页面 Page 物理

### 内存管理

#### 1. **分页(Paging)**

1. **定义**:
- 分页是一种内存管理技术,将物理内存分成固定大小的块,称为“页框”(Page Frame),同时将逻辑内存分成相同大小的块,称为“页”(Page)。

2. **页表(Page Table)**:
- 页表是一个数据结构,用于存储逻辑地址到物理地址的映射关系。
- 每个进程都有一个页表,页表条目(PTE)中包含物理页框的地址和一些控制信息。

3. **分页的优点**:
- **消除外部碎片**:因为内存分配以固定大小的页为单位,所以不会产生外部碎片。
- **简化内存管理**:内存分配和释放更加简单和高效。

4. **分页的缺点**:
- **页表开销**:每个进程都有自己的页表,页表可能会占用大量内存。
- **页表查找开销**:每次内存访问都需要查找页表,增加了访问时间。

#### 2. **分段(Segmentation)**

1. **定义**:
- 分段是一种内存管理技术,将逻辑内存划分成不同长度的段,每个段代表一种逻辑单元(如代码段、数据段、堆栈段)。

2. **段表(Segment Table)**:
- 段表是一个数据结构,用于存储段基址和段长度。
- 每个进程都有一个段表,段表条目(STE)中包含段的基址和长度。

3. **分段的优点**:
- **逻辑单元分隔**:不同类型的内存单元(如代码、数据、堆栈)可以分开管理,增加内存的安全性和可靠性。
- **灵活的内存分配**:段的大小可以根据需要动态调整。

4. **分段的缺点**(续):
- **外部碎片**:因为段的大小不固定,内存中可能会产生未使用的小碎片。
- **段表开销**:每个进程都有自己的段表,段表可能会占用一定的内存。

#### 3. **分页和分段结合(Segmentation with Paging)**

1. **定义**:
- 分页和分段结合是一种综合内存管理技术,将逻辑内存先划分为段,每个段再划分为固定大小的页。
- 这种技术结合了分页和分段的优点,避免了它们各自的缺点。

2. **段页表(Segment Page Table)**:
- 每个段有一个页表,页表条目(PTE)中包含物理页框的地址和控制信息。

3. **优点**:
- **消除外部碎片**:因为内存分配以页为单位,所以不会产生外部碎片。
- **逻辑单元分隔**:不同类型的内存单元可以分开管理,增加内存的安全性和可靠性。

4. **缺点**:
- **复杂性增加**:分页和分段结合的机制增加了内存管理的复杂性。
- **双重开销**:既有页表开销,又有段表开销。

#### 4. **虚拟内存(Virtual Memory)**

1. **定义**:
- 虚拟内存是一种内存管理技术,通过使用磁盘空间扩展物理内存,使得进程可以使用比实际物理内存更大的地址空间。

**工作原理**:
- 虚拟内存将进程的地址空间划分成若干个页(Page),每个页可能在物理内存中或在磁盘上。
- 当进程访问一个不在物理内存中的页时,会产生页面故障(Page Fault)。

 

- 页置换算法用于决定在发生页面故障时,如何将不在物理内存中的页从磁盘加载到物理内存中,以及将哪个页从物理内存中移出以腾出空间。

- 当发生页面故障时,操作系统需要在物理内存中找到一个空闲的页框来加载所需的页。如果没有空闲的页框,则需要使用页置换算法决定哪个页被移出。
- 常见的页置换算法包括FIFO(First-In-First-Out)、LRU(Least Recently Used)、OPT(Optimal)等。

2. **页置换算法(Page Replacement Algorithms)**:
- **FIFO(First-In-First-Out)**:

最简单的算法,按页进入内存的顺序进行置换。

缺点:可能会置换掉常用的页,导致性能下降。
- **LRU(Least Recently Used)**:

置换最近最少使用的页,基于最近的访问历史。

缺点:实现复杂,需要维护访问历史。
- **OPT(Optimal)**:

理论上最优的置换算法,置换未来最久不会使用的页。

缺点:实际中无法实现,因为无法预知未来的访问情况。

- **其他算法**:
- **Clock**:也称为“二次机会”算法,结合了FIFO和LRU的思想。
- **NRU(Not Recently Used)**:根据最近的访问和修改情况进行置换。

3. **页面故障(Page Fault)**:
- **定义**:当进程访问的页不在物理内存中时,产生页面故障。
- **处理流程**:
1. 操作系统检测到页面故障。
2. 从磁盘中加载所需的页到物理内存中。
3. 更新页表,重新执行导致页面故障的指令。

**优点**:
- **扩展内存**:虚拟内存允许进程使用比实际物理内存更大的地址空间。
- **提高效率**:通过按需加载页,可以更高效地使用物理内存。
- **隔离性**:每个进程都有独立的虚拟地址空间,增强了进程间的隔离。

**缺点**:
- **性能开销**:页面置换和页面故障处理会带来性能开销。
- **复杂性**:管理虚拟内存和页表增加了系统的复杂性。

标签:操作系统,内存,置换,基础,页表,页面,Page,物理
From: https://www.cnblogs.com/AlenaNuna/p/18391025

相关文章

  • CUDA教程之 10 掌握 CUDA 矩阵乘法:共享内存、Tile 内存合并和 Bank 冲突简介(教程含源
    介绍在使用CUDA进行GPU编程的世界中,优化性能是关键。实现此目标的最强大技术之一是使用共享内存。本博客将引导您完成使用共享内存执行矩阵乘法的CUDA程序,特别关注理解分块内存合并和存储体冲突。在本文结束时,您将牢固掌握共享内存如何显著加快您的计算速度以及如何......
  • 机械学习—零基础学习日志(概率论总笔记1)
    概率论的起源在历史上有明确记载的最早研究随机性的数学家是帕斯卡和费马。帕斯卡就是最早发明机械计算机的那位数学家,他并不是赌徒,但是他有些赌徒朋友,那些人常常玩一种掷骰子游戏,游戏规则是由玩家连续掷4次骰子,如果其中没有6点出现,玩家赢,如果出现一次6点,则庄家赢。在这个赌......
  • 机械学习—零基础学习日志(如何理解概率论12)
    假设检验假设检验是有一些参数,已知条件,让你检验某种假设是否成立。我们通过具体的题目来说明:这里我们需要确认使用什么公式:使用下面的公式如下图:题目中,以21作为分界线,所以我们将是21与不是21两种对应的数值进行计算。具体计算使用到图中的公式。算出对应的数值,然后比......
  • C++基础之指针(加精)
    指针真正的用武之地在于,在运行阶段分配未命名的内存以存储值。在这种情况下,只能通过指针来访问内存。在C语言中,可以用库函数malloc()来分配内存;在C++中仍然可以这样做,但C++还有更好的方法——new运算符。文章目录指针与数组深入探究探究一探究二探究三探究四探究五探......
  • mysql基础使用
    数据库操作查询所有数据库:showdatabases;查询当前数据库:selectdatabase();创建数据库:createdatabase[ifnotexists]数据库名[defaultcharset字符集][collate排序规则];如:createdatabaseitcast;createdatabaseifnotextistsitcast;createdat......
  • tkinter基础组件——Button
    在tkinter中,Button组件用于在窗口上创建一个按钮,该按钮可以被点击以执行某个操作。下面具体介绍Button组件常用的属性和方法:一、常用属性1、text:按钮上显示的文本btn=tk.Button(app,text='Clickme')2、command:指定按钮被点击时要执行的回调函数btn=tk.Button(app......
  • Java基础(接口)
    目录为什么要有接口接口的定义接口的特点接口用interface定义定义接口类继承接口接口当中只能使用抽象方法接口类不能创建对象,只能用多态一个类可以继承多个接口实现接口中的方法接口和接口之间可以互相继承其他特点抽象类与接口的区别接口实例实例1Servlet......
  • C++基础(1)——入门知识
    目录1.C++版本更新2.C++参考⽂档:3.C++书籍推荐4.C++的第⼀个程序5.命名空间5.1namespace的价值5.2namespace的定义5.3命名空间使⽤6.C++输⼊&输出7.缺省参数8.函数重载9.引⽤9.1引⽤的概念和定义9.2引⽤的特性9.3引⽤的使用9.4const引⽤ 9.5指针和引⽤的关......
  • AI产品经理薪资揭秘:起薪30k不是梦!零基础转行攻略大公开
    2024年,还有什么新风口?AI、元宇宙、NFT…很多人不知道,其实不管是元宇宙还是NFT,它们本质上就是人工智能领域。AI自身应用领域非常广泛,大批高薪岗位随之涌了出来,包括AI产品经理。AI产品经历具体工作内容是什么?薪资有多香?普通人如何进入AI人工智能行业?需要写代码吗?别急,小......
  • 全国中学基础信息 API 数据接口
    全国中学基础信息API数据接口基础数据,高校高考,提供全国初级高级中学基础数据,定时更新,多维度筛选。1.产品功能2024年数据已更新;提供最新全国中学学校基本信息;包含全国初级中学与高等中学;总计近10万条全国中学精准数据;每月一次数据自动更新校正;包含学校各类属性信息......