易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux 进程管理剖析

文章来源:http://www.ibm.com/developerworks/cn/linux/l-linux-process-management/
级别: 中级
M. Tim Jones, 顾问工程师, Emulex Corp.
2009 年 1 月 20 日
Linux® 的用户空间进程的创建和管理所涉及的原理与 UNIX® 有很多共同点,但也有一些特定于 Linux 的独特之处。在本文中,了解 Linux 进程的生命周期,探索用户进程创建、内存管理、调度和销毁的内核内幕。
Linux 是一种动态系统,能够适应不断变化的计算需求。Linux 计算需求的表现是以进程 的通用抽象为中心的。进程可以是短期的(从命令行执行的一个命令),也可以是长期的(一种网络服务)。因此,对进程及其调度进行一般管理就显得极为重要。
在用户空间,进程是由进程标识符(PID)表示的。从用户的角度来看,一个 PID 是一个数字值,可惟一标识一个进程。一个 PID 在进程的整个生命期间不会更改,但 PID 可以在进程销毁后被重新使用,所以对它们进行缓存并不见得总是理想的。
在用户空间,创建进程可以采用几种方式。可以执行一个程序(这会导致新进程的创建),也可以在程序内,调用一个 fork 或 exec 系统调用。fork 调用会导致创建一个子进程,而 exec 调用则会用新程序代替当前进程上下文。接下来,我将对这几种方法进行讨论以便您能很好地理解它们的工作原理。
在本文中,我将按照下面的顺序展开对进程的介绍,首先展示进程的内核表示以及它们是如何在内核内被管理的,然后来看看进程创建和调度的各种方式(在一个或多个处理器上),最后介绍进程的销毁。
进程表示
阅读 developerWorks 上 Tim Jones 所撰写的更多文章
Tim 的剖析…… 系列文章
在 Linux 内核内,进程是由相当大的一个称为 task_struct 的结构表示的。此结构包含所有表示此进程所必需的数据,此外,还包含了大量的其他数据用来统计(accounting)和维护与其他进程的关系(父和子)。对 task_struct 的完整介绍超出了本文的范围,清单 1 给出了 task_struct 的一小部分。这些代码包含了本文所要探索的这些特定元素。task_struct 位于 ./linux/include/linux/sched.h。
清单 1. task_struct 的一小部分

struct task_struct {
volatile long state;
void *stack;
unsigned int flags;
int prio, static_prio;
struct list_head tasks;
struct mm_struct *mm, *active_mm;
pid_t pid;
pid_t tgid;
struct task_struct *real_parent;
char comm[TASK_


相关文档:

Linux Shell 下的输出重定向


Linux Shell 环境中支持输入输出重定向,用符号<和>来表示。0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出,比如 2>a.txt 表示将错误信息输出到文件a.txt中。
同时,还可以在这三个标准输入输出之间实现重定向,比如将错误信息重定向到标准输出,可以用 2> ......

linux内核的PAE后缀

yum update 更新系统之后,内核版本出现了两种,一种是PAE,另外一种并没有PAE。
何谓PAE呢?全称:Physical Address Extension
其实就是使32位系统支持超过4G内存,最大可达64G内存。
对于Linux来说,内核从2.6版本开始全面支持PAE[3]
,这使得在32位的机器上可以访问64GB的内存。启用了PAE的Linux内核还需要同样支持P ......

linux线程的挂起与恢复

#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
pthread_mutex_t wqy_mutex_pause = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t wqy_cond_pause = PTHREAD_COND_INITIALIZER;
bool wqy_pthread_pause = false;
void wqy_pthread_suspend(void)
{
if ......

高效使用Linux系统的在线文档系统

Linux相比于Windows一个比较好的地方在于Linux提供了非常丰富的在线文档,更重要的是这些都是free的(下面的说明是针对debian发行版,其他的发行版情况可能会有所不同)。
Linux的在线文档大概可以分为以下几类:
(1)Man格式的手册,默认存放于/usr/share/man目录,用man命令查看。
(2)Info 格式的手册,默认存放 ......

PHP5在Linux下安装


Linux下安装PHP5的主要步骤:
1.下载php5;地址:http://cn.php.net/downloads.php
2.解压软件包后进入该目录
(转者注:
可能会需要先解压php-5.*.tar.bz2 ,先执行bzip2 -d php-5.*tar.bz2

tar -xvf php-5.*.tar.gz
cd php-5.*
3.php安装mysql的模块的一些准备工作
ln -s /usr/local/mysql/lib/mysql /usr/l ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号