存储管理
程序的装入和链接
用户程序要在系统中运行,必须先将它装入内存,然后再将其转变为一个可以执行的程序,通常都要经过以下几个步骤:
1)编译,由编译程序将用户源代码编译成若干个目标模块。
2)链接,由链接程序将编译后形成的一组目标模块,以及它们所需要的库函数链接在一起,形成一个完整的装入模块。
3)装入,由装入程序将装入模块装入内存。
虚拟内存
1、它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传递数据,通过这种方式,它高效地使用了主存。
2、它为每个进程提供了一致的地址空间,从而简化了内存管理。
3、它保护了每个进程的地址空间不被其他进程破坏。
段页式管理
程序在逻辑上分段,每一段在内存上分为若干页。
对于用户而言,当用户发出一个逻辑地址,用户希望访问到特定程序段的内存空间,而对于计算机而言,则希望用户发出的逻辑可以通过MMU转换成页框号和页内偏移量,从而直接去访问真实的内存空间。
为了解决这一问题引入了虚拟内存(就是通过一张段表完成地址映射转换):简单的说就是用户发出访问程序段的逻辑地址<段号,段内偏移量>,通过对这一逻辑地址的运算将其转换为访问页的虚拟地址<页号,页内偏移量>,再由MMU将其转换为内存的物理地址<页框号,页内偏移量>。通过这种方式,用户访问的就是虚拟内存,经过两次地址映射后,变成真实的物理地址。
页面置换算法
1、最佳置换算法(OPT )
理想状况下的页面置换算法,但 实际上是不可能实现的,思想是:发生缺页时,有些页面在内存中,其中有一页将很快被访问,而其他页面可能要等到 10,100,1000 条指令后才会被访问,每个页面都可以用在该页面首次被访问前所要
执行的指令数进行标记。最佳页面置换算法规定: 标记最大的页应该被置换。 。
2、先进先出置换算法(FIFO )
最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是, 总是选择在主存中停留时间最长(即最老)的一页置换,即 先进入内存的页,先退出内存 。理由是: 最早被调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。
3、最近最久未使用(LRU )算法
FIFO 算法和 OPT 算法之间的主要差别是,FIFO 算法利用页面进入内存后的时间长短作为置换依据,而 OPT 算法的依据是将来使用页面的时间,如果以最近的过去作为不久将来的近似,那么就可以把过去最长一段时间里不曾被使用的页面置换掉。 它的 实质 是:当需要置换一页时, 选择在最近一段时间里最近没有使用过的页面予以置换。