1. 进程
进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占地使用硬件(实际上操作系统在不断进行进程切换),并发运行是指一个进程的指令与另一个进程的指令交错执行。操作系统实现这种交错执行的机制成为上下文切换。
上下文(操作系统保持进程运行所需要的全部信息,可理解为环境),例如PC和寄存器文件的当前值,或者主存的内容。在任何时刻,操作系统只能执行一个进程的代码。 当操作系统决定把控制权由当前进程转移到某个进程时,就会进行上下文切换(保存当前进程的上下文,恢复新进程的上下文),然后将控制权传递到新进程。具体切换过程如图1.1所示:
图1.1 进程切换
2. 线程
一个进程可由多个成为线程的执行单元组成,其运行在进程的上下文并且共享同样的代码和数据。
3. 虚拟内存
虚拟内存是一个抽象概念,它为每个进程提供了一个假象,即每个进程都在独占地使用主存。每个进程所看到的的内存都是一致的,成为虚拟地址空间(汇编文件中的内存地址为虚拟地址,其还需经过内存映射为物理内存)。Linux系统的虚拟地址空间如图3.1所示:
图3.1 进程的虚拟地址空间