在没有虚拟存储器之前
源程序在gcc –o 后生成的文件是可执行目标程序a.out,每条指令都有一个逻辑地址 32位。它存在硬盘上。
要执行时,只需找到该文件,将其装入内存。
装入的方式可以有多种,比如分页,分段等等。但是,必须将该程序完全装入内存。
分页:将一个进程的逻辑地址空间(32位)分成若干大小相等的页。
使用分页方式时有一个问题,必须清楚:
os是根据文件系统找到的a.out,跟a.out的逻辑地址没有一点关系
假如a.out是3个页大小,
就将这3个页分别装入内存,
装入内存的过程中将逻辑地址转换为物理地址。
如果内存为1G 每个程序的大小是100M,那么该os最多只能装10个程序。
虚拟存储器的定义:
具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储系统。
即,程序在运行之前,没必要全部装入内存,
仅把当前要运行的页装入即可,当程序运行时,如果需要其它页面,再进行页面调入或者置换。
这样 假如内存为1G,硬盘为200G,每个程序的大小为2G。
那么该os可以同时装100个程序进内存(甚至可以更多,此处是100,是因为硬盘大小的限制)。而此前的os一个程序也装不下。
也就是说,在