八、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再分配。
从用户角度来说,进程是程序的一次动态执行过程;从操作系统的核心来看,进程是操作系统分配的内存、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再分配。
相关文章推荐
- [Linux]C语言Linux系统编程创建进程
- linux系统编程之进程(八):守护进程详解及创建,daemon()使用
- Linux系统进程控制编程(一)————基本概念和函数getpid的使用
- linux系统编程之进程(八):守护进程详解及创建,daemon()使用
- linux系统编程之进程(八):守护进程详解及创建,daemon()使用
- linux系统编程之进程(八):守护进程详解及创建,daemon()使用
- [linux] C语言Linux系统编程进程基本概念
- Linux系统编程之--守护进程的创建和详解【转】
- LINUX系统编程之进程状态
- linux系统编程之进程(八):守护进程详解及创建,daemon()使用
- 基于visual c++之windows核心编程代码分析(57)监控系统的每一个进程的创建
- Linux的进程编程-之一-基本概念
- 获取linux系统的各服务进程与CPU、内存、硬盘空间使用状态
- Linux系统编程--进程
- Linux进程编程基本概念
- 【linux 编程】linux/unix 进程的创建
- Linux系统进程控制编程(二)——fork系统调用
- Linux系统进程控制编程——wait和waitpid函数
- linux系统中进程的状态
- Linux下C语言编程--进程的创建