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在内核栈的尾端分配.

     

  • 相关阅读:
    思岚 激光雷达 A3 使用官方sdk读取数据
    思岚激光雷达 开箱使用
    ubuntu 更新软件失败
    ubuntu 安装tftp
    Ubuntu 安装Telnet服务
    【博客搬至CSDN】
    【RabbitMQ】一文带你搞定springboot整合RabbitMQ涉及消息的发送确认,消息的消费确认机制,延时队列的实现
    基于JVisualVM的可视化监控
    LCN解决分布式事务原理解析+项目实战(原创精华版)
    springboot 用监听器统计在线人数案例分析
  • 原文地址:https://www.cnblogs.com/feisky/p/2433253.html
Copyright © 2011-2022 走看看