操作系统---内存管理

本文介绍了操作系统中的内存管理,包括内存管理的概念、内存空间的分配和回收,以及从逻辑地址到物理地址的转换。内容涵盖了内存的层次结构、为何需要操作系统管理内存、内存管理的主要内容,如分配与回收、逻辑地址到物理地址的转换,以及各种内存分配策略和数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内存管理

1、概念

1、什么是内存?
首先从硬件的角度去理解内存, 内存是用来存储数据的基本单元。
用于存储数据的硬件可以分为以下几个层次,分别是寄存器、 高速缓冲器、 内存、磁盘。他们的访问数据的速度依次变慢,成本依次降低。
然后再从抽象的角度去理解一下,内存可以看成一一小的存放数据的空间,为了快速访问对应的空间,需要给每一个小的存储单元进行编址。有按字节(8位)进行编址的,也有按字(32位/64位)进行编址的。

2、为什么需要操作系统对内存进行管理?
程序运行的条件有将程序包含的数据和代码指令存放到内存中,并且给其分配CPU。这样程序才能运行起来。
为了提高cpu利用率,多个程序需要同时并发的执行。由于需要多个进程的并发执行,各个进程的代码和数据都需要存放到内存当中,等待分配cpu后,才能执行。为了保证为各个进程合理的分配内存空间,防止进程之间的越界访问,保证系统安全可靠的运行,因此需要对操作系统需要对内存进行管理。

为了方便人们进行编程,出现了高级程序语言,使人们更容易和计算机进行交流,用人类的思维方式来编写代码。我们编写的程序需要经过编译、链接、装入内存后,程序才能执行。简单理解就是将我们的编写的代码转换为计算机能运行的机器指令。

  • 逻辑地址:生成的变量以及函数的地址并不是对应实际的物理内存地址,而是从0开始偏移的逻辑地址。
  • 物理地址:实际的物理内存地址。

3、内存管理的具体内容
操作系统对于内存的管理主要有四大方面

  • a.对内存空间的分配与回收
  • b.内存的逻辑地址到物理地址的转换
  • c.对内存进行扩充
  • d.实现内存空间的共享与保护

2、内存空间的分配和回收

内存空间的分配和回收会需要实现的功能

1、当一个进程要运行时将其程序和数据存放在内存中的什么位置?
2、当一个进程运行结束后,其空间如何进行回收?
3、进程的内存的分配方式有哪些?
4、采用什么数据结构来记录进程在内存中的存放情况。等等

系统中的内存分为内核空间和用户空间。内核空间是存放一些用于维护进程运行的一些必要的信息数据等,不允许用户进行访问。而用户空间是用于存放进程的代码、数据、以及运行程序时的产生的数据的空间。为进程分配的内存空间就是该空间。

用户空间的分配

固定分区分配

  • 不变大小的分区分配
    将用户空间分成一个个大小相等的较小的存储区域。
  • 可变大小的分区分配
    将用户空间分一个个大小不等的较小的存储区域。

进程空间的分配

  • 连续分区分配
    保证进程内存在实际的物理内存中是连续的。
  • 不连续的分区分配
    进程的代码和数据在实际的物理内存中是不连续的。
    将进程的内存分成一个个小的页。进程在装入内存是以页为基本单元装入内存中的。
    不连续的分配方式有:
    基本分页式的存储方式
    基本分段式的存储方式
    基本段页式的存储方式

内存分配策略

动态内存分配

动态内存分配算法
首次适应算法
最佳适应算法
最坏适应算法
邻近适应算法
用于实现动态内存分配的数据结构,将空闲的内存块用链表的方式进行存储。

从逻辑地址到物理地址的转换

页表,各种页表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值