八、Linux系统编程-进程(一)进程概念、进程数据结构、进程状态变迁、进程创建和撤销

一、什么是进程
从用户角度来说,进程是程序的一次动态执行过程;从操作系统的核心来看,进程是操作系统分配的内存、CPU时间片等资源的基本单位。每一个进程都有自己独立的地址空间与执行状态。
二、进程数据结构
进程包含以下结构:代码段+数据段+堆栈段+PCB(进程控制块)
八、Linux系统编程-进程(一)进程概念、进程数据结构、进程状态变迁、进程创建和撤销_第1张图片
PCB:用于描述进程情况及控制进程运行所需的全部信息。
代码段:是进程中能被进程调度程序在CPU上执行的程序代码段。
数据段:一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行后产生的中间或最终数据

三、进程与程序区别与联系
  • 进程是动态的,程序是静态的。
  • 进程的生命周期是相对短暂的,而程序是永久的。
  • 进程数据结构包含PCB。
  • 一个进程只能对应一个程序,一个程序可以对应多个进程。
四、进程状态变迁
一般操作系统的进程都包括以下基本运行状态。
八、Linux系统编程-进程(一)进程概念、进程数据结构、进程状态变迁、进程创建和撤销_第2张图片
可以概括为:进程因创建而产生,因调度而运行,因发生等待事件处于等待状态,因抢占而处于就绪状态。
Linux系统上的进程状态变迁:
八、Linux系统编程-进程(一)进程概念、进程数据结构、进程状态变迁、进程创建和撤销_第3张图片

五、PCB数据结构
(1)、进程描述信息
  • 进程标识符用于唯一的标识一个进程。进程PID一般是一个从0开始的整数,最大值可通过cat /proc/sys/kernel/pid_max查看。
(2)、进程控制信息
  • 进程当前状态(就绪,运行,等待)
  • 进程优先级(支持抢占)
  • 程序开始地址
  • 各种计时信息(CPU使用事件等)
  • 通信信息
(3)、资源信息
  • 占用内存大小及管理用数据结构指针
  • 交换区相关信息
  • I/O设备号、缓冲、设备相关的数结构
  • 文件系统相关指针
(4)、现场保护信息
  • 寄存器
  • PC
  • 程序状态字PSW
  • 栈指针
六、进程的创建和撤销
不同的操作系统所提供的进程创建原语的名称和格式不尽相同,但执行创建进程原语后,操作系统所做的工作却大致相同,都包括以下几点:
  1. 给新创建的进程分配一个内部标识,在内核中建立进程结构。
  2. 复制父进程的环境
  3. 为进程分配资源, 包括进程映像所需要的所有元素(程序、数据、用户栈等),
  4. 复制父进程地址空间的内容到该进程地址空间中。
  5. 置该进程的状态为就绪,插入就绪队列。
进程终止时操作系统做以下工作:
  1. 关闭软中断:因为进程即将终止而不再处理任何软中断信号;
  2. 回收资源:释放进程分配的所有资源,如关闭所有已打开文件,释放进程相应的数据结构等;
  3. 写记帐信息:将进程在运行过程中所产生的记帐数据(其中包括进程运行时的各种统计信息)记录到一个全局记帐文件中;
  4. 置该进程为僵死状态:向父进程发送子进程死的软中断信号,将终止信息status送到指定的存储单元中;
  5. 转进程调度:因为此时CPU已经被释放,需要由进程调度进行CPU再分配。


你可能感兴趣的:(Linux系统编程)