zoukankan      html  css  js  c++  java
  • 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在内核栈的尾端分配.

     

  • 相关阅读:
    linux拷贝软连接文件
    【知识点】Java常用类库
    Maven之pom.xml配置文件详解
    Java+Bigdata学习路线
    Hadoop界的Hello World!
    JavaEE三大框架的整合
    学完微型服务器(Tomcat)对其工作流程的理解,自己着手写个简单的tomcat
    【数据结构与算法】之链表
    JavaEE项目开发所需要的包(Struts2+Spring5+Hibernate5)
    在Linux(Centos7)系统上对进行Hadoop分布式配置以及运行Hadoop伪分布式实例
  • 原文地址:https://www.cnblogs.com/feisky/p/2433253.html
Copyright © 2011-2022 走看看