存储管理是操作系统的一个重要任务。存储管理主要指对内存的管理,即如何分配内存给不同的进程。
1.物理内存。
这是最简单的方式,进程直接使用物理地址,实现很简单,但是不利于多程序系统,因为一个程序对某一物理地址的修改可能影响到其他的进程,甚至是操作系统,造成严重后果,虽然有一些措施可以避免,比如加上保护位,但是仍会引发一些问题。
2.地址空间。
这个概念的思想是,每一个进程都有自己的逻辑地址空间,与其他进程互不干涉。最后执行时,有操作系统把逻辑地址转换成物理地址,保证不冲突。这里借助了逻辑地址的概念成功避免了直接使用物理地址导致冲突的弊端。一个实现时借助基地址寄存器和界寄存器,前者是进程逻辑地址转成物理地址的偏移量,后者指明了其使用的地址的范围,避免越界。过程大致是,进程生成了逻辑地址空间,然后根据逻辑地址的大小设置界寄存器,同时分配一块未使用的物理地址空间,根据这个物理地址空间设置基地址寄存器。
3.交换。
仍然借助地址空间的概念。思想是把不执行的内存中的进程置换到磁盘上,为需要执行的进程腾出空间。提高了空间利用率。置换是针对整个进程而言的。
管理内存的方法有:
(1)位图,选择特定大小的单元来管理,用01表示使用未使用。
(2)链表,每一个节点代表一块区域,或者为某个进程分配,或者空闲。
4.分页。
只调入进程的部分进入内存。以页为单位。因此IO的量较小,相比于交换技术需要置换整个进程。