您的位置:首页 > 理论基础 > 数据结构算法

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

2015-03-14 11:27 691 查看
一、什么是进程
从用户角度来说,进程是程序的一次动态执行过程;从操作系统的核心来看,进程是操作系统分配的内存、CPU时间片等资源的基本单位。每一个进程都有自己独立的地址空间与执行状态。
二、进程数据结构
进程包含以下结构:代码段+数据段+堆栈段+PCB(进程控制块)



PCB:用于描述进程情况及控制进程运行所需的全部信息。
代码段:是进程中能被进程调度程序在CPU上执行的程序代码段。
数据段:一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行后产生的中间或最终数据

三、进程与程序区别与联系

进程是动态的,程序是静态的。
进程的生命周期是相对短暂的,而程序是永久的。
进程数据结构包含PCB。
一个进程只能对应一个程序,一个程序可以对应多个进程。
四、进程状态变迁

一般操作系统的进程都包括以下基本运行状态。



可以概括为:进程因创建而产生,因调度而运行,因发生等待事件处于等待状态,因抢占而处于就绪状态。
Linux系统上的进程状态变迁:



五、PCB数据结构

(1)、进程描述信息

进程标识符用于唯一的标识一个进程。进程PID一般是一个从0开始的整数,最大值可通过cat /proc/sys/kernel/pid_max查看。

(2)、进程控制信息

进程当前状态(就绪,运行,等待)
进程优先级(支持抢占)
程序开始地址
各种计时信息(CPU使用事件等)
通信信息

(3)、资源信息

占用内存大小及管理用数据结构指针
交换区相关信息
I/O设备号、缓冲、设备相关的数结构
文件系统相关指针

(4)、现场保护信息

寄存器
PC
程序状态字PSW
栈指针

六、进程的创建和撤销

不同的操作系统所提供的进程创建原语的名称和格式不尽相同,但执行创建进程原语后,操作系统所做的工作却大致相同,都包括以下几点:

给新创建的进程分配一个内部标识,在内核中建立进程结构。
复制父进程的环境
为进程分配资源, 包括进程映像所需要的所有元素(程序、数据、用户栈等),
复制父进程地址空间的内容到该进程地址空间中。
置该进程的状态为就绪,插入就绪队列。

进程终止时操作系统做以下工作:

关闭软中断:因为进程即将终止而不再处理任何软中断信号;
回收资源:释放进程分配的所有资源,如关闭所有已打开文件,释放进程相应的数据结构等;
写记帐信息:将进程在运行过程中所产生的记帐数据(其中包括进程运行时的各种统计信息)记录到一个全局记帐文件中;
置该进程为僵死状态:向父进程发送子进程死的软中断信号,将终止信息status送到指定的存储单元中;
转进程调度:因为此时CPU已经被释放,需要由进程调度进行CPU再分配。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: