引言
进程是大多数系统的工作单元,可以将进程看作执行的程序。虽然在传统操作系统中进程包括线程,但其实在一些RTOS中,线程、任务和进程的概念都很模糊,可以说进程≈线程=任务。但无论是在常规操作系统还是实时操作系统中,进程或者说线程和任务都是最重要的概念之一。
概念
什么是进程?
进程是现代分时操作系统的工作单元,在讨论操作系统时,如何称呼所有CPU活动是一个非常重要的问题。批处理系统执行作业,而分时系统使用用户程序或任务。即使是单用户系统,用户也能同时运行多个程序,即便用户一次只能执行一个程序,操作系统也需要支持本身的内部活动,所有这些活动在许多方面都相似,因此称为进程。 这里再强调一下,进程、作业、任务和线程在很多方面是由相似之处的,甚至概念相同,在开发和使用中一定要灵活使用,不要拘泥于名字。 进程是执行中的程序,进程的执行必须以顺序方式进行。另一个说法时,一个程序在一个数据集上的一次运行。
进程包括什么?
进程包括:
- 代码(或者称文本段、代码段)
- 当前活动:
- 程序计数器(PC):指向当前要执行的指令(地址)
- 堆栈(Stack):存放函数参数、临时变量等临时数据
- 数据(Data):全局变量,处理的文件
- 堆(Heap):动态内存分配
进程和程序的区别
- 进程是程序的一个实例,是程序的一次执行。
- 一个程序可对应一个或多个进程
- 一个进程可对应一个或多个程序
- 程序是进程的代码部分
- 进程是活动实体,程序静止(被动)实体
- 进程在内存,程序在外存
- 程序是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合。进程是动态的,是程序的一次执行过程(同一程序多次执行会对应多个进程)
- 当一个可执行文件被加载到内存时,这个程序就成为进程。
- 虽然两个进程可以与同一程序相关联,但是当作两个单独的执行序列。
- 进程本身也可做为一个环境,用于执行其他代码。
进程状态
进程在执行时会改变状态,进程状态,部分取决于进程的当前活动,每个进程可能处于以下状态:
- 新建:在创建进程
- 运行:指令在执行
- 等待:进程等待某些事件发生
- 就绪:进程等待分配处理器
- 终止:进程执行完毕
进程控制块
操作系统内的每个进程表示,采用进程控制块(PCB),也称为任务控制块。 PCB包含同进程有关的信息,包括:
- 进程状态:状态可以包括新的、就绪、等待、运行、等待等
- 程序计数器:计数器表示进程将要执行的下个指令的地址
- CPU寄存器:根据计算机体系结构的不同,寄存器的类型和数量也会不同。
- CPU调度信息:这类信息包括进程优先级、调度队列的指针和其他调度参数。
- 内存管理信息:根据操作系统使用的内存系统,这类信息可以包括基地址和界限寄存器的值、页表或段表。
- 记账信息:这类信息包括CPU时间、实际使用时间、时间期限、记账数据、作业和进程数量等
- I/O状态信息:这类信息包括分配给进程的I/O设备列表、打开文件列表等
PCB简单地作为这些信息地仓库,这些信息随着进程地不同而不同。
后续
如果想了解更多物联网、智能家居项目知识,可以关注我的公众号了解更多。
编写不易,感谢支持。