【操作系统】五分钟读懂内存管理

🔥 博客主页: 我要成为C++领域大神
🎥系列专栏【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】
❤️感谢大家点赞👍收藏⭐评论✍️

本博客致力于分享知识,欢迎大家共同学习和交流。

计算机系统结构

什么是内存

内存(Memory),通常指计算机内存,是计算机系统中的一种存储设备,用于临时存储数据和指令,以便处理器能够快速访问和处理。内存是计算机系统的重要组成部分,主要用于存储正在运行的程序和操作系统的数据,确保系统能够高效地执行任务。内存通常分为两大类:随机存取存储器(RAM)和只读存储器(ROM)。

内存的分类

随机存取存储器(RAM)

动态随机存取存储器(DRAM):需要周期性刷新以维持数据,常用于主内存。

静态随机存取存储器(SRAM):不需要刷新,速度快,但成本高,通常用于缓存(Cache)。

只读存储器(ROM)

存储永久性数据,通常包含系统引导程序和固件,不易修改。

内存的功能

存储操作系统、应用程序和数据:内存提供一个临时存储区域,存储当前正在使用的数据和程序。

高速访问:内存的读取和写入速度远快于硬盘等存储设备,因此系统能更快地响应用户操作和执行任务。

数据交换:内存用于在CPU和其他硬件设备之间传输数据,确保高效的数据处理和系统运行。

内存的工作原理

  1. 加载数据:当程序或操作系统需要处理数据时,这些数据会从较慢的存储设备(如硬盘)加载到内存中。
  2. 执行指令:CPU从内存中读取指令和数据进行处理,执行操作。
  3. 临时存储:处理中间结果和临时数据存储在内存中,以便快速访问和修改。
  4. 数据交换:内存与CPU、硬盘、输入/输出设备之间进行数据交换。

内存的主要特性

易失性:RAM是易失性的,当电源关闭时,存储在其中的数据会丢失。

容量和速度:内存的容量和速度决定了系统的性能和多任务处理能力。更多的内存容量和更快的速度可以显著提高系统性能。

存取时间:内存的存取时间通常以纳秒(ns)为单位,表示读取或写入数据所需的时间。

内存结构

内存通常以层次结构组织,包括以下层次:

  1. 寄存器:CPU内部的高速存储单元,存取速度最快,但容量有限。
  2. 缓存(Cache):位于CPU和主内存之间,分为L1、L2、L3等不同级别,用于加速数据访问。
  3. 主内存(RAM):主要用于存储正在执行的程序和数据,容量较大,但存取速度相对较慢。

内存的应用

操作系统运行:操作系统核心及其服务和驱动程序运行在内存中。

应用程序执行:应用程序及其数据加载到内存中执行。

数据缓存:临时存储常用数据和指令,提高系统响应速度。

内存管理

连续分配管理(工业使用较多)

单一连续分配

只能用于单用户单任务操作系统。作业一旦进入内存,要等结束之后释放。无法实现多个进程共享主存

固定分区分配

将内存分成若干区,不同区可以放不同程序。

要先确定,运行就不能改变。通常采用静态重定位方式装内存。

动态分区分配

是可变分区分配。根据作业大小动态分配创建分区

非连续分配管理

页式存储

物理内存空间分为块(不一定连续),块大小与页大小相同,从0开始编号

逻辑空间等分为页,从0开始编号,页面大小为4KB

逻辑地址结构:页号,位移量(页内地址)

地址长度为32位,0~11位为页内地址,即,每页大小为4KB;12~31位为页号,最多220页

逻辑地址/212=页号%212=页内地址

物理地址=块号*块大小+偏移量

缺页中断与页面置换算法
OPT:最优页面置换算法

当发生缺页中断时,对于保存在内存中的每个逻辑页,计算在它的下一次访问之前,还需要等待多长时间,从中选择一个等待时间最长的页,作为被置换的页。

FIFO:先进先出算法

选择在内存中驻留时间最长的页面作为被置换页

LRU:最近最久未使用算法

选择最久未使用的页面,作为被置换页

页式存储优缺点
优点:

很好的解决外部碎片问题,只会产生内部碎片

打破内存分配的连续性需求

提高主存的利用率

缺点:

程序需要全部装入内存,需要有相应的硬件支持

会有内部碎片产生

动态的地址变化、方案实施需要耗用额外的系统资源

存储扩展问题没有解决一一进程大小受限制,可用块数小于进程需要的块数时需要等待

段式存储

段式存储基本原理:

用户编制的程序是由若干段组成的:

一个程序可以由一个主程序、若干子程序、符号表、栈以及数据等若于段组成。

每一段都有独立、完整的逻辑意义,每一段程序都可独立编制,且每一段的长度可以不同。

每一段都可从“0”编址,段与段之间地址不连续,但段内地址是连续的。

分段式存储管理为作业的每一个段分配一个连续的内存区域,用来存放该段信息。

段式管理的数据结构

逻辑地址结构:段号,位移量(段内地址)

段内地址 16位 即段最大大小64KB

逻辑地址/216=段号%216=段内地址

物理地址=基址+段内地址

段式存储优缺点

优点:

没有内部碎片

可以以段为单位编写和编译,隔断程序修改互相不影响

可以针对不同类型的段采取不同的保护

可以以段为单位进行共享,包括通过动态链接进行代码共享

缺点:

会产生外部碎片,不过由于进程被分为多个小块,所以外部碎片也会很小

段页式存储

段页式存储原理

用户程序先分段,每个段内部再分页 (内部原理同基本的分页、分段相同)

段页式存储总结

1、结合了段式和页式的优点;但是增加了表 (存储表和查询表)开销,只在大型计算

机系统中使用

2、段页式存储会产生外部碎片,还会产生内部碎片

段式和页式和段页式存储的比较

页式存储 就是说将程序分页时,页的大小是固定的,只根据页面大小强硬的将程序切割开而分段时比较灵活,只有一段程序有了完整的意义才将这一段切割开

分页式作业的地址空间是一维的,页间的逻辑地址是连续的,而分段式作业的地址空间则是二维的,段间的逻辑地址是不连续的

在页式、段式存储管理中,为获得一条指令或数据,须两次访问内存而段页式则须三次访问内存

内存碎片

内存碎片主要分为,内部内存碎片和外部内存碎片。

内存分页由于内存空间都是预先划分好的,页与页之间是紧密排列的,所以不会有外部碎片。

但是,因为内存分页机制分配内存的最小单位是一页,即使程序不足一页大小,我们最少只能分配一个页,所以页内会出现内存浪费,所以针对内存分页机制会有内部内存碎片的现象。

内存分段管理可以做到段根据实际需求分配内存,所以有多少需求就分配多大的段,所以不会出现内部内存碎片

但是由于每个段的长度不固定,所以多个段未必能恰好使用所有的内存空间,会产生了多个不连续的小物理内存,导致新的程序无法被装载,所以会出现外部内存碎片的问题。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值