进程可以看做是正在执行的程序。进程需要一定的资源(如CPU时间、内存、文件和I/O设备)来完成其任务。这些资源在创建进程或执行线程时分配。
进程是执行的程序,这是一种非正式的说法。进程不只是程序代码,程序代码有时称为文本段。进程还包括当前活动,通过程序计数器的值和处理器寄存器的内容来表示。另外,进程通常还包括进程堆栈段(包含临时数据,如方法参数、返回地址和局部变量)和数据段(包含全局变量)。
程序本身不是进程;程序只是被动实体,如存储在磁盘上的文件内容,而进程是活动实体,它有一个程序计数器用来表示下一个要执行的指令和相关资源集合。
进程在执行时会改变状态。
新的:进程正在被创建。
运行:指令正在被执行。
等待:进程等待一定事件的出现(如I/O完成或收到某个信号)。
就绪:进程等待被分配给某个处理器。
终止:进程已完成执行。
每个进程在操作系统内用进程控制块(process control block,PCB也称为任务控制块)来表示。
进程状态:状态可包括新的、就绪、运行、等待、停止等。
程序计数器:计数器表示这个进程要执行的下个指令的地址。
CPU寄存器:根据计算机体系结构的不同,寄存器的数量和类型也不同。它们包括累加器、索引寄存器、堆栈指针、通用寄存器和其他条件码信息寄存器。与程序计数器一样,这些状态信息在出现中断时也需要被保存,以便进程以后能正确地继续执行。
CPU调度信息:这类信息包括进程优先级、调度队列的指针和任何其他调度参数。
内存管理信息:这类信息基址寄存器和界限寄存器的值、页表或段表。
记账信息:这类信息包括CPU时间、实际使用时间、时间界限、记账数量、作业或进程数量等。
I/O状态信息:这类信息包括分配给该进程的I/O设备列表、打开文件的列表等。