概述
存储器分为内存和外存。主存就是内存,外存也称为辅存,就是磁盘,磁带机等外部设备。主存是和CPU通过总线相连的,CPU执行指令需要从内存(即主存,后文同理)从中访问指令和数据。内存被分为了两部分,一部分是系统区(内核子程序占用),一部分是用户区(用户程序、数据)。通常主存的低地址段分给操作系统,高地址段分给用户。我们今天的问题是,操作系统磁盘中的数据怎么装载进内存中呢?
对于系统区,当机器开机时,系统上电,通过硬件会到系统的BIOS中,BIOS中会调用一段程序,检测硬件有无错误,同时到磁盘的一个固定的位置,把操作系统的一些关键的内核代码(仅仅是部分代码)读入到内存中的系统区;对于用户区,怎么样分配?怎么回收?怎么使得内存利用率最大?内存中同一时刻的进程个数决定操作系统的并发度,那么采取什么样的内存分配策略增大操作系统的并发度?所以,本篇博客将对这些问题进行分析。
源程序如何装入内存
一个源程序怎么装载入内存呢?首先得编译变成目标模块,源程序就变成若干个相对0地址开始编址的程序段(逻辑地址),由于每个目标代码都是从0开始编址,所以它们目前并不能执行。下一步要进行链接,把它们合并为一个整体,最后才能装入进入内存之中。
那么这个过程看似简单,怎么样把目标模