进程通常被定义为一个正在运行的程序的实例,它由两个部分组成
一个是操作系统用来管理进程的内核对象(对,进程本身也是一种内核对象,就像文件是一种内核对象一样)。内核对象也是系统用来存放关于进程的统计信息的地方。用面向对象的思想理解,系统就是一个管理器程序,他存放了“进程对象”以及他的一些信息。
另一个是地址空间,它包含所有可执行模块或 D L L模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。
进程是不活泼的。若要使进程完成某项操作,它必须拥有一个在它的环境中运行的线程,该线程负责执行包含在进程的地址空间中的代码。每个线程都有它自己的一组CPU寄存器和它自己的堆栈。每个进程至少拥有一个线程,如果没有线程来执行进程的地址空间中的代码,系统就将自动撤消该进程和它的地址空间。
若要使所有这些线程都能运行,操作系统就要为每个线程安排一定的CPU时间。它通过以一种循环方式为线程提供时间片(称为量程),造成一种假象,仿佛所有线程都是同时运行的一样。