操作系统——存储管理:分区、分页、分段、请求式分页和虚拟内存
1. 综述
突然把这么多概念弄到一起,让人有点儿困惑。自己的一些理解:
分区式管理:最简单直观的方式,在内存中分配一个区,将整个进程放入这个区。缺点是会产生外碎片,即时间长了会在分区之间产生难以被利用的小空间。
分页式管理:将内存分成固定大小的页,分配若干页将整个进程载入。页面可以不连续是其重要优点,不会产生外碎片,更有效地利用了内存,不过会产生一些内碎片,即分配给进程的最后一个页往往不能正好用完,不过在页面大小不是很大的时候可以接受。
分段式管理:将程序分为若干个段,如数据段和代码段,加以不同的保护。施加保护是分段式的优点,但其仍是向分区式管理一样的连续分配。
段页式管理:同样将程序分段,加以不同的保护,但是各段不再连续分配,而采用分页式离散分配。
以上四种全是实存管理。即进程要么全部载入内存中,要么就不能载入。
2. 请求式分页和虚拟内存
请求式分页:将进程放入虚拟内存中,由于一个进程的页面不会同时全部被用到,只将需要用到的页面调入物理内存。即进程并没有整个在物理内存中。
几个请求式分页的概念:(博客链接:请求式分页中的内存分配)
固定分配:物理内存中分配给进程的内存块数一定。
可变分配:物理内存先分配给进程一些内存块,如不够,可适当增加。
局部置换:发生在分配的内存块已用完,又发生了缺页时,只能置换本来就是自己的内存块。
全局置换:发生在分配的内存块已用完,又发生了缺页时,可以置换到操作系统保留的空闲页。这其实相当于增加了进程占有的内存块数。
三种分配方式:固定分配局部置换、可变分配全局置换、可变分配局部置换。固定分配、全局置换不能组合。