进程是什么,进程和程序的区别
在未被 CPU 执行之前,程序做不了任何事。如前所述,执行的程序称为进程。
分时系统的用户程序(如编译器)就是进程,PC 的单个用户运行的字处理程序也是进程。系统任务,如将输出发到打印机,也可以是进程(或至少是进程的一部分)。现在,进程可以作为作业或分时系统程序,但是以后进程的概念将会更广。
进程为了完成任务,需要一定的资源,包括 CPU 时间、内存、文件、I/O 设备等。这些资源可以在进程创建时赋予,也可以在执行进程时分配。除了创建时得到的各种物理和逻辑资源外,进程还可以接受传输过来的各种初始化数据(输入)。
例如,考虑这样一个进程,它要在终端或者屏幕上显示文件状态,而且需要有一个文件名作为输入。文件名的获得和信息的终端显示,可以通过适当指令和系统调用来进行。当进程中止时,操作系统就会收回所有可再利用的资源。
需要强调的是,程序本身不是进程,程序是个被动实体(passive entity),如同存储在磁盘上的文件内容,而进程是个主动实体(active entity)。单线程进程有一个程序计数器(program counter),指定了下一个所要执行的指令。这样一个进程的执行应是顺序的。CPU 一个接着一个地执行进程的指令,直至进程完成。
再者,在任何时候,每个进程最多只能执行一条指令。因此,尽管两个进程可能与同一个程序相关联,然而这两个进程都有各自的执行顺序。多线程进程有多个程序计数器,每一个指向下一个给定线程需要执行的指令。
进程是系统的工作单元。系统由多个进程组成,其中有的是操作系统进程(执行系统代码),其他的是用户进程(执行用户代码)。所有这些进程都会并发执行,例如通过在单 CPU 上采用多路复用来实现。
操作系统负责进程管理的以下活动:
分时系统的用户程序(如编译器)就是进程,PC 的单个用户运行的字处理程序也是进程。系统任务,如将输出发到打印机,也可以是进程(或至少是进程的一部分)。现在,进程可以作为作业或分时系统程序,但是以后进程的概念将会更广。
进程为了完成任务,需要一定的资源,包括 CPU 时间、内存、文件、I/O 设备等。这些资源可以在进程创建时赋予,也可以在执行进程时分配。除了创建时得到的各种物理和逻辑资源外,进程还可以接受传输过来的各种初始化数据(输入)。
例如,考虑这样一个进程,它要在终端或者屏幕上显示文件状态,而且需要有一个文件名作为输入。文件名的获得和信息的终端显示,可以通过适当指令和系统调用来进行。当进程中止时,操作系统就会收回所有可再利用的资源。
需要强调的是,程序本身不是进程,程序是个被动实体(passive entity),如同存储在磁盘上的文件内容,而进程是个主动实体(active entity)。单线程进程有一个程序计数器(program counter),指定了下一个所要执行的指令。这样一个进程的执行应是顺序的。CPU 一个接着一个地执行进程的指令,直至进程完成。
再者,在任何时候,每个进程最多只能执行一条指令。因此,尽管两个进程可能与同一个程序相关联,然而这两个进程都有各自的执行顺序。多线程进程有多个程序计数器,每一个指向下一个给定线程需要执行的指令。
进程是系统的工作单元。系统由多个进程组成,其中有的是操作系统进程(执行系统代码),其他的是用户进程(执行用户代码)。所有这些进程都会并发执行,例如通过在单 CPU 上采用多路复用来实现。
操作系统负责进程管理的以下活动:
- 在 CPU 上调度进程和线程;
- 创建和删除用户进程和系统进程;
- 挂起和重启进程;
- 提供进程同步机制;
- 提供进程通信机制;
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算