问题描述
我想知道分页区域是在硬盘上的特定位置还是数据块也分布在整个硬盘上?
以及更多:当加载包含我的代码和数据的进程时,基于预准备,只有部分代码被加载到RAM中,其余部分被加载到硬盘驱动器上,或者所有内容都完全存储在硬盘中。首先是RAM?
状态为“就绪”的进程(即即将到期的进程)是否也可能在后台存储器中完全换出?
解决方法
总体答案是取决于您的系统。
根据历史记录,某些系统需要专用的磁盘或鼓作为交换区域,某些专用的分区以及以后可以动态添加和删除的文件。与基于文件的交换相比,专用的交换区域在延迟,性能和简单性方面具有优势。但是后者要灵活得多。
理论上,不需要加载任何代码或数据。它所需要的只是一组与可执行文件中的偏移量关联的页表。实际上,引用这些页面中的某些页面是为了获取负载模块头和对共享库的依赖关系,因此不保留它们就没有任何好处。仔细阅读mmap(2),这是它的主力军。
cpu的调度不需要知道有关可执行文件中内存页状态的任何信息。所以理论上是。实际上,这是不可能的。无论哪种方式,尝试运行它都会导致其页面恢复原状。
顺便说一句,后台内存更可能是后备存储区,它标识页面存在的位置(不在ram中),或者如果从ram中驱出则将存储该页面。