摘录自《程序员的自我修养》1.5节
早期的计算机中,内存有限,在运行多个程序时有如下问题:
1.地址空间不隔离:程序直接访问物理内存,程序间互相影响;
2.内存使用效率低:需要将整个程序载入内存,程序切换时候,在内存和磁盘间交换效率低下;
3.程序运行地址不确定:因为直接访问物理内存,使用的大多是固定地址,给程序编写造成一定的麻烦;
分段
段信息Descriptor:1.段基址Base;2.段界限Limit;3.段属性Attr;
增加了虚拟地址,映射到物理地址,解决了第一个和第三个问题。
分页
将地址空间人为的分成固定大小的页,一般是4kb,当程序需要某个页的时候,如果该页没有在内存中,就会发生页错误(page fault),然后操作系统就会装载这个页到内存,这样程序就不必要全部载入内存,按需装载即可。