操作系统之内存管理

之前在说进程的时候,我们就说过CPU只能访问内存,从内存中取指令和数据。对于磁盘(即外存,只是为了永久存储数据和程序的地方)。
介绍
程序是指令和数据的静态集合,存储在磁盘上,当操作系统把这些指令和数据加载到内存中对其的抽象表示为进程。关于进程相关的问题已经说过了。现在要说的问题是:操作系统按照什么样的方式加载程序,可以加载几个进程,这些进程之间的数据安全问题怎么保护?

物理内存管理

物理内存指的就是我们买的真实内存,我们买的内存有多大,这个空间就由多大。管理则是指怎么让这些直接在内存中的进程更好的工作,或者加载更多的程序。
程序在物理内存上是什么意思?就是把程序的代码直接存放到真实的物理内存位置上。比如把程序A的指令和数据直接存放到真实内存的fffffffffff00000~fffffffffff10000位置上,则只要有程序访问这些位置就可以读取相应的数据(这里先不考虑进程的安全问题)。
难说还有不存放在物理内存上的内存?没有,所有用户进程都是都是加载到内存中才可以执行,但是有虚拟内存概念,指的是操作系统也把一个程序加载到物理内存上,但是对于该进程来说,操作系统给这个进程提供一个假象:内存中只有它一个进程,即对进程来说是它在“虚拟出的内存”中。

对内存管理的要求

物理内存的要求简介(历史):
历史就是从开始的一次只能有一个进程(作业)到有多个进程,但是多个进程中如果有相同的进程,为了减少内存使用,则把不可变的指令和数据共享。又由于内存中有多个进程,不能让其他进程随意读取和更改自己的指令和数据则需要系统提供保护机制。有时内存不够用了,但是进程还没有执行完成,需要先把它“放回到磁盘”上,下次加载它时由于不能保证还在原来的位置,所以还要保证重新加载后的该进程可以继续执行。。。

还有一点就是多个进程的数据不能太过分散了,如果多个进程的数据交叉存放在存在中,则CPU寻找需要消耗许多性能。

通过上面提出的问题,我们则可以知道对于物理内存管理的要求有:

  • 重定位:保证进程换出到磁盘后又重新加载到内存时可以继续执行之前的任务,包括符号引用的转换。
  • 保护:为了防止其他进程读写自己的数据
  • 共享:减少共享数据占用的内存。
  • 逻辑组织:这个是要求程序对自己指令和数据的组织成线性地址空间,这个就是为了方便CPU寻找数据。
  • 物理组织:这个要求是对计算机存储器的要求,其至少被组织成两级结构,即内存和外村。内存提供高速的临时存储,外村(通常是硬盘)提供永久的存储空间。

物理内存配分的策略

连续内存分配

分段

分页

多级分页

虚拟内存管理

什么是虚拟内存

页面置换策略

系统抖动


   转载规则


《操作系统之内存管理》 吴欢庆 采用 知识共享署名 4.0 国际许可协议 进行许可。
 本篇
操作系统之内存管理 操作系统之内存管理
之前在说进程的时候,我们就说过CPU只能访问内存,从内存中取指令和数据。对于磁盘(即外存,只是为了永久存储数据和程序的地方)。程序是指令和数据的静态集合,存储在磁盘上,当操作系统把这些指令和数据加载到内存中对其的抽象表示为进程。关于进程相关
2019-12-13
下一篇 
进程调度算法 进程调度算法
进程调度算法是操作系统对进程执行的管理以达到更好的CPU利用率或者响应。
2019-12-04
  目录