理解这个概念以前需要理解几个问题
1. 程序是以文件的形式存在于磁盘上的
2. 程序必须装入内存才能被运行
3. 磁盘是由一个个大小固定的块组成的,文件在磁盘上并不一定占据连续的块
4. 内存也是被划为一个个大小固定的页,程序装入内存后也不是占据连续的页,并且程序也不是完全加载进内存当中
5. 操作系统是多任务的,每个任务都是在执行一定时间后,让其他任务使用cpu资源,因为这段时间很短,用户感觉每个任务都是同时在运行
6. 程序运行的时候由操作系统来管理,每一个运行的实体称为进程,当然进程和程序是两个不同的概念,进程是动态的,程序是静态的,操作系统管理进程是通过一些数据结构来管理的,主要的两个数据结构是进程表和u区
假设页和块大小是相同的,大小都是1k
一个exe文件生成之后,其格式是固定的,一般有正文段,数据段,正文段含有指令,数据段含有执行时需要的数据,他们都存在于exe文件中,exe文件经编译之后其内部地址是连续的虚拟地址(假设从0开始,一直到文件大小为止),当然这个exe文件是位于磁盘上
要执行这个文件,操作系统是以创建进程的方式,将这个exe文件的内容加载到内存当中,关键问题是如何加载进内存,既然程序在内存中不是连续的存在,那么是如何进行内存管理的以及是如何执行程序的
操作系统以进程的方式来管理运行的程序,当然需要一些数据结构,其中最重要的是进程表,操作系统维护一个进程表,当进程创建的时候就会在进程表中占据一个表项,这个表很复杂&#x