原创:花括号MC(huakuohao-mc),关注JAVA基础编程及大数据,注重经验分享及个人成长。
在计算机的世界里,有两个比较宝贵的资源,CPU和内存。这是每个进程都要争抢的资源。这篇文章说说操作系统是怎样进行内存管理的。
因水平有限,加之内存管理涉及的细节又很多,所以这里只是简单的介绍内存管理的一些关键概念及发展过程。
直面物理内存
在很久很久以前,内核与用户进程都是直接操作物理内存的。那个时候的物理内存模型大概可以简化成这样。物理内存按照固定大小编号,每个编号代表一个固定的二进制位。我们就像使用门牌号一样使用物理内存编号。这种模型的特点就是简单直接,但是带来的问题也很多而且很严重。
问题1:用户进程之间内存冲突。
在这个模型中,如果同时运行多个进程,就会引发内存冲突。比如进程A访问16号物理内存,而这时进程B很有可能也访问16号物理,引发冲突。相当于你想进入16号房间,另一个人也想进入同样的房间,最后你俩肯定干起来。
问题2:破坏操作系统。
因为内核跟用户进程都是直接操作物理内存,所以难免用户程序就跑去操作内核使用的内存了,引发系统瘫痪。
其实这个模型也不是一无是处。因为足够简单,而且直接操作硬件,所以在简单的嵌入式系统,收音机,微波炉的电脑版里,还是采用的这种方式。对了BIOS也是采用的这种方式。
继续前进,既然这种方案有诸多严重问题,那么我们就需要找到一个新的方案。注意,我们要解决的问题是同时运行多个进程,但不会造成访问物理内存地址冲突。
地址空间
地址空间:一个进程可用于寻址内存的一套地址空间。每个进程都有一个自己的地址空间,并且这个地址空间独立于其他进程的地址空间(除了一些特殊情况可以共享)。
地址空间的概念,形象一点儿说类似于我们的电话号码,比如我们的手机号就是一个11

本文介绍了操作系统如何管理内存,从早期的物理内存模型及其问题,到地址空间、基址寄存器与界限寄存器的概念,再到交换内存和虚拟内存的引入,详细阐述了虚拟内存的工作原理,包括虚拟地址、页面、页框、页表、缺页中断以及共享内存等关键概念。
最低0.47元/天 解锁文章
609

被折叠的 条评论
为什么被折叠?



