欢迎来到天天文库
浏览记录
ID:10912938
大小:267.00 KB
页数:4页
时间:2018-07-08
《基于linux的进程管理分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于的进程管理分析Linux崔峰,蔡尧,王新梅(西安电子科技大学ISN国家重点实验室,陕西西安710071)摘要:简要概括了Linux进程的一些简单概念,着重讨论了各进程状态间的相互转换关系及转换过程对应的数据在内存中的变化。关键词:Linux;进程中图分类号:TP316.81文献标识码:A文章编号:1006-6977(2007)09-0024-03StudyonprocessmanagementbasedonLinuxCUIFeng,CAIYao,WANGXin-mei(StateKeyLabofISN,Xidia
2、nuniversity,Xi’an710071,China)Abstract:Thisarticlebrieflyintroducesthenotionofprocess,andmainlydiscussesthetransformofpro-cessesineverystate.Wehavegiventhechangesofdataarchitecturehappenedinmemoryduringthetransform.Keywords:Linux;processCPU的系统,在某一时刻只能有一个进程运行。内核
3、通过分时调度各个进程运行。Linux系统中,一个进程可以在内核态(kernelmode)或用户态(usermode)下执行,因此,在Linux下内核堆栈和用户堆栈是分开的。用户堆栈用于进程在用户态下临时保存调用函数的参数、局部变量等数据。堆栈区含有程序执行函数调用时的信息。引言进程不是程序,虽然它由程序产生。程序只是一个静态的指令集合,不占用系统的运行资源;而进程(process)是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。一个程序可以启动多个进程。利用分时技术,在Linux操作系统上可同时运行多个进
4、程。分时技术的基本原理是把CPU的运行时间分成一个个规定长度的时间片。对于具有单个CPU的机器,某一指定时刻只能运行一个进程。但由于每个进程运行的时间片很短,所以表面上看起来好像所有进程在同时运行。对于Linux系统,除第一个进程是“手工”建立以外,其余进程都是使用系统调用fork创建的,被创建的进程称为子进程(childprocess),原进程称为父进程(parentprocess)。内核程序使用进程标识号(processid)标识每一个进程。进程由可执行代码、数据、堆栈组成。进程中的代码和数据部分分别对应执行文件
5、中的代码段和数据段。每个进程只能执行自己的代码,访问自己的数据及堆栈区。进程间的通信需要通过系统调用才能实现。对于只有一个1基本数据结构内核程序通过进程表管理进程,每个进程占进程表中一项。在Linux系统中,进程表项是一个task_struct任务结构指针。任务数据结构定义在in-clude/linux/sched.h中。主要包括进程当前运行的状2态信息、信号、进程号、父进程号、运行累计时间值、正在使用的文件和本任务的局部描述符以及任务状态段信息。structtask_struct{//进程标识号//父进程号//父进
6、程组号//会话话longpidlongfatherlongpgrplongsession图1进程间状态转移图//会话首领//用户标识号//有效用户id//保存的用户id//组标识号//有效组id//保存的组id进程的状态以及堆栈的内容称为该进程的上下文。longleaderunsigneduidunsignedeuidunsignedsuidunsignedgidunsignedegidunsignedsgid当内核需要切换至另一个进程时,它就需要保存当前进程的所有状态(即当前进程的上下文),以便再次执行进程时,能够
7、恢复到切换时的状态。当前进程上下文均保存在进程的任务数据结构中。在发生中断时,内核在被中断服务结束时恢复执行被中断的进程。volatitlelongstate//任务的运行状态:-1表示不可运行、0表示就绪、>0表示已停止longcounter//任务运行滴答数longpriority//运行优先数。任务初始时counter=priority进程运行状态及其转换关系一个进程在其生存期内,可处于一组的不同状态称为进程状态。进程状态保存在进程任务结构的state字段中。当进程正在等待系统中的资源而处于等待状态时,则称其处
8、于睡眠等待状态。Linux中的睡眠可分为可中断睡眠和不可中断睡眠。进程间状态转移图如图1所示。3//信号位图。每bit代表一种信号longsignal//信号执行属性结构structsignactionsigaction[32]longblocked//进程信号屏蔽码intexit_code//任务执行停止的退出码。由返回给父进程unsigne
此文档下载收益归作者所有