操作系统简单总结之进程简介

操作系统简单总结——进程简介

  • 什么是进程
  • 进程状态
  • 进程描述
  • 进程控制

什么是进程

进程:程序在一个数据集上的一次执行过程。

进程和程序的区别:

  • 程序是静态的,进程是动态的。进程可以创建其他进程。
  • 程序可对应一个进程,也可对应多个进程(只要进程使用的数据集不同)

举个例子,在你电脑里是可以运行两个QQ的,装在电脑里的QQ程序可以被多次执行,每次打开一个新的QQ,会根据不同的用户使用不同的用户的数据。

进程组成:

  • 程序代码
  • 数据集,内存堆栈
  • 进程控制块(PCB),是进程的唯一标识,OS根据PCB中的属性控制进程。

进程状态

  • 创建:OS为进程建立PCB,分配内存空间
  • 终止:回收内存,释放资源,销毁PCB

进程的五状态模型:

  • 新建:OS为进程分配需要的内存空间
  • 就绪:得到除了CPU以外的其他设备资源
  • 运行:得到CPU(被调度,有专门的的调度算法)
  • 阻塞:I/O或者其他事件发生
  • 退出:OS释放资源,回收内存,销毁PCB。


进程描述

首先要了解一下操作系统的控制结构,在操作系统里会构造并维护所管理的每个实体的信息表。这里的实体就是内存,各种I/O设备,文件,还有个进程。在操作系统简介这里讲了关于OS管理的对象。

信息表分4类:

  • 内存表:跟踪内存和虚拟内存
  • I/O表:管理I/O设备和通道
  • 文件表:文件属性
  • 进程表:PCB(进程属性描述)集合

说到这些信息表,那么我觉得大家应该能想到,在后面的关于OS进行管理,实际上就是根据这些表来进行管理。具体OS是怎么实现这些数据结构的,有时间一定要阅读一些LINUX内核源码,看看是怎么存储管理这些表的。

进程的控制结构PCB

OS进程表中包含所有进程的PCB,当一个新进程创建,OS会分配PCB给该进程。

每一个状态的进程都会对应一条进程队列。相同状态的PCB组成一个队列。阻塞队列会因为阻塞原因的不同而分不同的阻塞队列。


进程控制

进程控制这里,主要是涉及CPU的执行模式。特权指令时只能由操作系统内核使用的指令。

  • 用户态:只能执行非特权指令
  • 系统态(内核态):都能执行。执行系统调用(OS提供服务)或者发生中断启动系统态。

当CPU要执行特权指令时,会引发“trap陷入”,即模式切换(就是把PSW中的控制位调整),然后才能去执行OS内核的一段特权代码。

关于是怎么执行特权指令的,可以点击这里看看模式切换