Linux进程管理剖析创建、管理、调度和销毁

Linux进程管理剖析创建、管理、调度和销毁

ID:41561166

大小:63.67 KB

页数:9页

时间:2019-08-27

Linux进程管理剖析创建、管理、调度和销毁_第1页
Linux进程管理剖析创建、管理、调度和销毁_第2页
Linux进程管理剖析创建、管理、调度和销毁_第3页
Linux进程管理剖析创建、管理、调度和销毁_第4页
Linux进程管理剖析创建、管理、调度和销毁_第5页
资源描述:

《Linux进程管理剖析创建、管理、调度和销毁》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Linux进程管理剖析创建、管理.调度和销M.TimJones,顾问工程师,ErnulexCorp.2009年1月20HLinux?的用户空间进程的创建和管理所涉及的原理与UNIX?有很多共同点,但也有一些特定于Linux的独特之处。在本文中,了解Linux进程的生命周期,探索川户进程创建、内存管理、调度和销毁的内核内幕。Linux是一种动态系统,能够适应不断变化的计算需求oLinux计算需求的表现是以进程的通用抽象为中心的。进程可以是短期的(从命令行执行的一个命令),也可以是K期的(一种网络服务)。因此,对进程及其调度进行一般管理就显得极为重

2、要。在用户空间,进程是由进程标识符(PID)表示的。从用户的角度來看,一个PID是一个数字值,可惟一标识一个进程。一个PID在进程的整个牛命期间不会更改,但PID可以在进程销毁后被重新使用,所以对它们进行缓存并不见得总是理想的。在用户空间,创建进程可以采用儿种方式。可以执行一个程序(这会导致新进程的创建),也可以在程序内,调用一个fork或exec系统调用。fork调用会导致创建一个子进程,而exec调川则会川新程序代替当前进程上下文。接下来,我将对这儿种方法进行讨论以便您能很好地理解它们的工作原理。在本文中,我将按照下面的顺序展开对进程的介绍

3、,首先展示进程的内核表示以及它们是如何在内核内被管理的,然后來看看进程创建和调度的各种方式(在-•个或多个处理器上),最后介绍进程的销毁。进程表示阅读developerWorks上TimJones所撰写的更多文章Tim的剖析……系列文章在Linux内核内,进程是由相当大的一个称为task_struct的结构表示的。此结构包含所有表示此进程所必需的数据,此外,还包含了人量的其他数据川来统计(accounting)和维护与其他进程的关系(父和子)。对task.struct的完整介绍超出了本文的范围,清单1给出了task.struct的一小部分。这些

4、代码包含了本文所耍探索的这些特定元素。task_s(mct位于./linux/include/linux/sched.h<>清单1.task_struct的一小部分structtask_struct{volatilelongstate;void*stack;unsignedintflags;intprio,static_prio;structlist_headtasks;structnun_struct*active_mm;pid_tpid;pid_ttgid;structtask_stfuct*real_parent;charcomm[TAS

5、K_COMM_LEN];structthread_structthread;structfiles_struct*files;在清单1中,可以看到儿个预料之中的项,比如执行的状态、堆栈、-•组标志、父进程、执行的线程(可以有很多)以及开放文件。我稍后会对其进行详细说明,这里只简单加以介绍。state变量是一些表明任务状态的比特位。最常见的状态有:TASK_RUNNING表示进程正在运行,或是排在运行队列中正要运行;TASKJNTERRUPTIBLE表示进程正在休眠、TASK.UNINTERRUPTIBLE表示进程止在休眠但不能叫醒;TASK_S

6、TOPPED表示进程停止等等。这些标志的完整列表可以在./linux/include/linux/sched.h内找到。flags定义了很多指示符,表明进程是否正在被创建(PF_STARTING)或斟(PF.EXITING),或是进程当前是否在分配内存(PF.MEMALLOC)o可执行程序的名称(不包含路径)占用comm(命令)字段。每个进程都会被赋了优先级(称为static_prio),但进程的实际优先级是基于加载以及其他儿个因索动态决定的。优先级值越低,实际的优先级越高。tasks字段提供了链接列表的能力。它包含一个prev指针(指向前一•

7、个任务)和一个next指针(指向下一个任务)。进程的地址空间由mm和active_mm字段表示。mm代表的是进程的内存描述符,而active_mm则是前一个进程的内存描述符(为改进上下文切换吋间的一种优化)。thrcad_sti-uct则用来标识进程的存储状态。此元素依赖于Linux在其上运行的特定架构,在./linux/include/asm-i386/processor.h内有这样的一个例子。在此结构内,可以找到该进程自执行上下文切换后的存储(硬件注册表、程序计数器等)。冋页首进稈管理最人进程数在Linux内虽然进程都是动态分配的,但述是需

8、耍考虑故大进程数。在内核内最大进程数是由一个称为max_threads的符号表示的,它可以在./linux/kernel/fork.c内找到。可以通过

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。