首页 > 编程笔记

进程是什么,进程和程序的区别

在未被 CPU 执行之前,程序做不了任何事。如前所述,执行的程序称为进程

分时系统的用户程序(如编译器)就是进程,PC 的单个用户运行的字处理程序也是进程。系统任务,如将输出发到打印机,也可以是进程(或至少是进程的一部分)。现在,进程可以作为作业或分时系统程序,但是以后进程的概念将会更广。

进程为了完成任务,需要一定的资源,包括 CPU 时间、内存、文件、I/O 设备等。这些资源可以在进程创建时赋予,也可以在执行进程时分配。除了创建时得到的各种物理和逻辑资源外,进程还可以接受传输过来的各种初始化数据(输入)。

例如,考虑这样一个进程,它要在终端或者屏幕上显示文件状态,而且需要有一个文件名作为输入。文件名的获得和信息的终端显示,可以通过适当指令和系统调用来进行。当进程中止时,操作系统就会收回所有可再利用的资源。

需要强调的是,程序本身不是进程,程序是个被动实体(passive entity),如同存储在磁盘上的文件内容,而进程是个主动实体(active entity)。单线程进程有一个程序计数器(program counter),指定了下一个所要执行的指令。这样一个进程的执行应是顺序的。CPU 一个接着一个地执行进程的指令,直至进程完成。

再者,在任何时候,每个进程最多只能执行一条指令。因此,尽管两个进程可能与同一个程序相关联,然而这两个进程都有各自的执行顺序。多线程进程有多个程序计数器,每一个指向下一个给定线程需要执行的指令。

进程是系统的工作单元。系统由多个进程组成,其中有的是操作系统进程(执行系统代码),其他的是用户进程(执行用户代码)。所有这些进程都会并发执行,例如通过在单 CPU 上采用多路复用来实现。

操作系统负责进程管理的以下活动:

推荐阅读