- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于的进程管理分析Linux崔 峰,蔡 尧,王新梅(
基于
的进程管理分析
Linux
崔 峰,蔡 尧,王新梅
(西安电子科技大学 ISN 国家重点实验室,陕西 西安 710071)
摘要:简要概括了 Linux 进程的一些简单概念,着重讨论了各进程状态间的相互转换关系及转换过
程对应的数据在内存中的变化。
关 键
词:Linux; 进程
中图分类号: TP316.81
文献标识码:A
文章编号:1006- 6977(2007)09- 0024- 03
Study on pr ocess management based on Linux
CUI Feng, CAI Yao, WANG Xin- mei
(State Key Lab of ISN, Xidian university, Xi’an 710071, China)
Abstr act:This article briefly introduces the notion of process,and mainly discusses the transform of pro-
cesses in every state.We have given the changes of data architecture happened in memory during the transform.
Key wor ds: Linux; process
CPU 的系统,在某一时刻只能有一个进程运行。内
核通过分时调度各个进程运行。
Linux 系统中,一个进程可以在内核态(kernel mode)或用户态(user mode)下执行,因此,在 Linux 下内核堆栈和用户堆栈是分开的。用户堆栈用于进 程在用户态下临时保存调用函数的参数、局部变量 等数据。堆栈区含有程序执行函数调用时的信息。
引言
进程不是程序,虽然它由程序产生。程序只是 一个静态的指令集合,不占用系统的运行资源;而 进程(process)是一个随时都可能发生变化的、动态 的、使用系统运行资源的程序。一个程序可以启动 多个进程。利用分时技术,在 Linux 操作系统上可同 时运行多个进程。分时技术的基本原理是把 CPU 的 运行时间分成一个个规定长度的时间片。对于具有 单个 CPU 的机器,某一指定时刻只能运行一个进 程。但由于每个进程运行的时间片很短,所以表面 上看起来好像所有进程在同时运行。
对于 Linux 系统,除第一个进程是“手工”建立 以外,其余进程都是使用系统调用 fork 创建的,被 创建的进程称为子进程(child process),原进程称为 父进程(parent process)。内核程序使用进程标识号
(process id)标识每一个进程。进程由可执行代码、 数据、堆栈组成。进程中的代码和数据部分分别对
应执行文件中的代码段和数据段。每个进程只能执 行自己的代码,访问自己的数据及堆栈区。进程间 的通信需要通过系统调用才能实现。对于只有一个
1
基本数据结构
内核程序通过进程表管理进程,每个进程占进 程表中一项。在 Linux 系统中,进程表项是一个 task_struct 任务结构指针。任务数据结构定义在 in- clude/linux/sched.h 中。主要包括进程当前运行的状
2
态信息、信号、进程号、父进程号、运行累计时间值、
正在使用的文件和本任务的局部描述符以及任务
状态段信息。
struct task_struct{
//进程标识号
//父进程号
//父进程组号
// 会话话
long pid
long father long pgrp long session
图 1 进程间状态转移图//会话首领//用户标识号//有效用户 id//保存的用户 id
图 1 进程间状态转移图
//会话首领
//用户标识号
//有效用户 id
//保存的用户 id
//组标识号
//有效组 id
//保存的组 id
进程的状态以及堆栈的内容称为该进程的上下文。
long leader
unsigned uid unsigned euid unsigned suid unsigned gid unsigned egid unsigned sgid
当内核需要切换至另一个进程时,它就需要保存当
前进程的所有状态(即当前进程的上下文),以便再 次执行进程时,能够恢复到切换时的状态。当前进 程上下文均保存在进程的任务数据结构中。在发生 中断时,内核在被中断服务结束时恢复执行被中断 的进程。
volatitle long state //任务的运行状态:- 1 表示不可运行、
0 表示就绪、0 表示已停止
long counter //任务运行滴答数
long priority //运
文档评论(0)