操作系统之进程

Posted 跋扈洋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统之进程相关的知识,希望对你有一定的参考价值。

操作系统之进程

引言

进程是大多数系统的工作单元,可以将进程看作执行的程序。虽然在传统操作系统中进程包括线程,但其实在一些RTOS中,线程、任务和进程的概念都很模糊,可以说进程≈线程=任务。但无论是在常规操作系统还是实时操作系统中,进程或者说线程和任务都是最重要的概念之一。

概念

什么是进程?

进程是现代分时操作系统的工作单元,在讨论操作系统时,如何称呼所有CPU活动是一个非常重要的问题。批处理系统执行作业,而分时系统使用用户程序或任务。即使是单用户系统,用户也能同时运行多个程序,即便用户一次只能执行一个程序,操作系统也需要支持本身的内部活动,所有这些活动在许多方面都相似,因此称为进程。
这里再强调一下,进程、作业、任务和线程在很多方面是由相似之处的,甚至概念相同,在开发和使用中一定要灵活使用,不要拘泥于名字。
进程是执行中的程序,进程的执行必须以顺序方式进行。另一个说法时,一个程序在一个数据集上的一次运行。

进程包括什么?

进程包括:

  • 代码(或者称文本段、代码段)
  • 当前活动:
  1. 程序计数器(PC):指向当前要执行的指令(地址)
  2. 堆栈(Stack):存放函数参数、临时变量等临时数据
  3. 数据(Data):全局变量,处理的文件
  4. 堆(Heap):动态内存分配

进程和程序的区别

  1. 进程是程序的一个实例,是程序的一次执行。
  2. 一个程序可对应一个或多个进程
  3. 一个进程可对应一个或多个程序
  4. 程序是进程的代码部分
  5. 进程是活动实体,程序静止(被动)实体
  6. 进程在内存,程序在外存
  7. 程序是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合。进程是动态的,是程序的一次执行过程(同一程序多次执行会对应多个进程)
  8. 当一个可执行文件被加载到内存时,这个程序就成为进程。
  9. 虽然两个进程可以与同一程序相关联,但是当作两个单独的执行序列。
  10. 进程本身也可做为一个环境,用于执行其他代码。

进程状态

进程在执行时会改变状态,进程状态,部分取决于进程的当前活动,每个进程可能处于以下状态:

  1. 新建:在创建进程
  2. 运行:指令在执行
  3. 等待:进程等待某些事件发生
  4. 就绪:进程等待分配处理器
  5. 终止:进程执行完毕

进程控制块

操作系统内的每个进程表示,采用进程控制块(PCB),也称为任务控制块。
PCB包含同进程有关的信息,包括:

  1. 进程状态:状态可以包括新的、就绪、等待、运行、等待等
  2. 程序计数器:计数器表示进程将要执行的下个指令的地址
  3. CPU寄存器:根据计算机体系结构的不同,寄存器的类型和数量也会不同。
  4. CPU调度信息:这类信息包括进程优先级、调度队列的指针和其他调度参数。
  5. 内存管理信息:根据操作系统使用的内存系统,这类信息可以包括基地址和界限寄存器的值、页表或段表。
  6. 记账信息:这类信息包括CPU时间、实际使用时间、时间期限、记账数据、作业和进程数量等
  7. I/O状态信息:这类信息包括分配给进程的I/O设备列表、打开文件列表等

PCB简单地作为这些信息地仓库,这些信息随着进程地不同而不同。

后续

如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏和软硬结合专栏。
欢迎关注公众号了解更多。

编写不易,感谢支持。

以上是关于操作系统之进程的主要内容,如果未能解决你的问题,请参考以下文章

Linux之更多bash shell命令

Java多线程之线程创建

当 Promise 永远不会解决时会发生啥? [复制]

为啥我的输入通过管道发送到进程时会延迟?

并发编程之多进程

多线程开发之GCD