上QQ阅读APP看书,第一时间看更新
1.1 进程
从本质上讲,计算系统是为了高效运行用户应用程序而设计、开发和经常微调的。而进入计算平台的每个元素都旨在为运行应用程序提供有效且高效的方法。换句话说,计算系统的存在就是为了运行各种不同的应用程序。应用程序既可以作为专用设备中的固件来运行,也可以作为由系统软件(操作系统)驱动的系统中的一个“进程”来运行。
进程的核心是程序在内存中的一个运行实例。从程序到进程的转换过程发生在程序(在磁盘上)被读取到内存中执行时。
一个程序的二进制映像包含代码(所有的二进制指令)和数据(所有的全局数据),它们被映射到内存的不同区域,并具有适当的访问权限(读、写和执行)。除了代码和数据之外,进程还被分配了额外的内存区域,称为堆栈(用于分配具有自动变量和函数参数的函数调用帧),以及在运行时动态分配的堆。
同一个程序的多个实例可以在它们各自的内存分配中存在。例如,对于具有多个打开的选项卡(同时运行浏览器会话)的Web浏览器,每个选项卡都被内核视为一个进程实例,各自具有唯一的内存分配。
图1-1所示为内存中进程的布局。
图1-1