进程的经典定义是一个执行中的程序实例
系统中的每个程序都运行在某个进程的上下文中。
上下文是由程序正确运行所需的状态组成的。
这个状态包括存放在内存中的程序的代码(文本段)和数据,它的栈(包括临时数据,如函数参数、返回地址和局部变量)和数据段(包括全局变量)、通用目的寄存器的内容,程序计数器的值,环境变亮以及打开文件描述符的集合
进程提供了应用程序的关键抽象
一个独立的逻辑控制流,提供一个假象,好像我们的程序独占使用处理器(其实并不是这样的)
一个私有的地址空间,它提供一个假象,好像我们的程序主张的使用内存系统。(其实也不是这样的)
强调一下
程序本身不是进程,程序只是被动实体,如存储在磁盘上包含一系列指令的文件,通常称为可执行文件
相反,进程是活动的的实体,具有一个程序计数器用于下一条执行命令和一组相关资源,当一个执行文件被加载到内存时,这个程序就成了进程。加载可执行文件通常有两种方法冲击一个代表可执行文件的图标,或在命令行上输入可执行文件的名称。
两个进程可以与同一程序相关联,但是当作两个独立的执行序列。
例如同一用户可以调动web浏览器程序的多个副本,每个都是单独的进程,虽然文本段相同,但是数据堆和堆栈段不同。
进程在运行时也经常生成很多进程,进程本身也可以作为一个环境用于执行其他代码,例如Java虚拟机。
网友评论