Linux进程管理(1)

简介:

进程是执行期间的程序及其它所包含的资源的总称。

 

进程通过fork()系统调用产生,该系统调用通过复制一个现有进程来创建一个全新的进程。fork()调用一次返回两次:一次回到父进程、一次回到新创建的子进程。

 

进程描述符及任务结构

 

内核把进程放在task list的双向循环链表中,其中每一项都是一个task_struct结构(即进程描述符)。task_struct结构比较大(32位机器上约1.7K),包含了内核管理进程所需的全部信息。

 

Linux通过slab分配器分配task_struct结构,以达到对象复用和缓存着色的目的。

 

每个进程通过pid来标识,默认最大值为32768,可以通过/proc/sys/kernel/pid_max修改。

 

thread_info结构

 

struct thread_info {

     struct task_struct     *task;           /* main task structure */

     struct exec_domain     *exec_domain;     /* execution domain */

     unsigned long          flags;          /* low level flags */

     unsigned long          status;          /* thread-synchronous flags */

     __u32               cpu ;          /* current CPU */

     int               preempt_count ;     /* 0 => preemptable, <0 => BUG */

 

 

     mm_segment_t          addr_limit ;     /* thread address space:

                                 0-0xBFFFFFFF for user-thead

                                 0-0xFFFFFFFF for kernel-thread

                              */

     void               *sysenter_return;

     struct restart_block    restart_block ;

 

     unsigned long           previous_esp;   /* ESP of the previous stack in case

                                 of nested (IRQ) stacks

                              */

     __u8               supervisor_stack [0];

};

 

该结构在内核栈的尾端分配。

 

如何查找当前正在运行进程的进程描述符

 

 

 

为什么要屏蔽掉低13位(当THREAD_SIZE为8192时):

 

内核中的栈是从高地址到低地址,thread_info和内核栈(内核态堆栈)共享同一块内存而每个任务的thread_info在内核栈的尾端分配.

 本文转自feisky博客园博客,原文链接:http://www.cnblogs.com/feisky/archive/2012/04/05/2433253.html,如需转载请自行联系原作者


相关文章
|
2月前
|
网络协议 Linux
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
144 2
|
2月前
|
Linux Python
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
47 2
|
7天前
|
Linux Shell
6-9|linux查询现在运行的进程
6-9|linux查询现在运行的进程
|
2月前
|
消息中间件 Linux 开发者
Linux进程间通信秘籍:管道、消息队列、信号量,一文让你彻底解锁!
【8月更文挑战第25天】本文概述了Linux系统中常用的五种进程间通信(IPC)模式:管道、消息队列、信号量、共享内存与套接字。通过示例代码展示了每种模式的应用场景。了解这些IPC机制及其特点有助于开发者根据具体需求选择合适的通信方式,促进多进程间的高效协作。
78 3
|
2月前
|
消息中间件 Linux
Linux进程间通信
Linux进程间通信
35 1
|
2月前
|
C语言
Linux0.11 系统调用进程创建与执行(九)(下)
Linux0.11 系统调用进程创建与执行(九)
25 1
|
2月前
|
存储 Linux 索引
Linux0.11 系统调用进程创建与执行(九)(上)
Linux0.11 系统调用进程创建与执行(九)
48 1
|
2月前
|
Web App开发 Linux
在Linux中,如何杀死一个进程?
在Linux中,如何杀死一个进程?
|
2月前
|
域名解析 监控 安全
在Linux中,什么是守护进程,它们是如何工作的?
在Linux中,什么是守护进程,它们是如何工作的?
|
2月前
|
消息中间件 Linux
在Linux中,进程间通信方式有哪些?
在Linux中,进程间通信方式有哪些?
下一篇
无影云桌面