Linux进程管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
八. Linux 的进程管理
(一)Linux 的进程结构
// 在文件 include/linux/task.h 中
#define NR_TASKS 512
//在文件 /kernal/ seched.c中
struct task_struct *task [ NR_TASKS ]
= { &init_task };
//在文件 /include/linux / seched.h 中struct task_struct { … } //Linux的PCB内容
Linux的PCB: struct task_struct { …} 结构
[ 见补充材料 p13]
(1) 进程状态
(2) 进程调度信息
(3) 进程标识
(4) 内部通信信息
(5) 进程链接指针
(6) 时间和定时器信息
(7) 文件系统信息
(8) 虚拟内存信息
(9) 进程上下文
1.Linux进程状态 long state;
2.进程调度信息:
进程普通进程——优先级调度
实时进程——先来先服务调度FCFS
时间片轮转调度 RR
(1) long counter ; 进程剩余时间片
(2) long priority; 优先级(同时还表示进程
时间片)当counter=0时,
priority =〉counter
(3) unsigned long policy;
SCHED_ OTHER 普通进程
调度策略 SCHED_ FIFO 实时进程
SCHED_ RR 实时进程
(4)unsigned long rt_priority;
实时优先级(调度程序求权重时用到它)
3.标识号
(1) int pid ; //进程标识号
(2) unsigned short uid,euid,suid,fsuid;
//用户标识,有效标识,备份标识,文件系统标识
(3) unsigned short gid,egid,sgid,fsgid;
//用户组标识,有效组标识,备份组
标识,文件系统用户组标识
4. 内部通信信息
(IPC —— Inter Process Communication)为使在同一任务上协调工作,进程间必须
作通信即:交流数据
信号
Linux 支持通信机制管道
共享内存
信号量
消息队列
(1) long signal; //进程接收到的信号(共
有32 种类型号:0~ 31表示)
(2) long blocked; //信号掩码
(3) struct signal_struct *sig;
// 信号处理函数结构指针
(4) struct sem_queue *semsleeping;
//与信号量相关的等待队列指针
(5) struct sem_undo * semundo;
//为避免死锁在信号量上设置取消操作
5.进程指针
可运行队列
进程链接信息队列指针各种等待队列
进程树(家属关系)
(1) struct task_struct *next_run
.. .. *prev_run
//可运行队列
(2) struct task_struct *next_task
.. .. *prev_task
(3) struct task_struct *p_opptr;
// ( original parent 祖先) .. .. *p_pptr
//( parent 双亲)
.. .. *p_cptr
// ( child 孩子)
.. .. *p_osptr
//( older sibling 左兄弟) .. .. *p_ysptr
//( younger sibling 右兄弟)
6.时间和定时器信息
(1) long start_time; //进程创建时间
(2) long utime;// 进程在用户态下耗费时间
stimr;// 进程在系统态下耗费时间
cutime;// 子进程在用户态下耗费时间 cstime;// 子进程在系统态下耗费时间
(3) long counter; // 进程剩余时间片
(4) unsigned long timeout;//进程申请延迟时间
Linux 允许进程创建三种定时器
实时定时器
虚拟定时器
概况定时器
每种定时器包含三项内容:
(5) unsigned long it_real_value,
it_virt_value, it_prof_value;
// 到期时间
unsigned long it_real_incr,
it_virt_ incr, it_prof_incr; //定时间隔,当定时间隔〉0,循环置定时值
第三项仅对实时定时器存在:
struct timer_list real_timer;
//实时定时器到期要触发的事件及到期时间结构[若有时,按到期时间,将所有进程此结构,挂入系统实时钟例程任务队列中 ]
7. 文件系统信息
(1)struct fs_struct *fs;
本进程可执行映像文件所在根目录(root)
本进程可执行映像文件所在当前目录(pwd)