zoukankan      html  css  js  c++  java
  • 《深入理解linux内核》第三章 进程

    • 我的博客:www.shishangguan.net
    • 进程的七种状态 
      在内核源码的 include/linux/sched.h文件中:

      • task_struct的status可表示

        1 #define TASK_RUNNING            0  
        2 #define TASK_INTERRUPTIBLE      1
        3 #define TASK_UNINTERRUPTIBLE    2
        4 #define TASK_STOPPED            4
        5 #define TASK_TRACED             8
      • task_struct和exit_status均可标识

        #define EXIT_ZOMBIE             16
        #define EXIT_DEAD               32
    • 进程标识符
      一个线程组中的所有线程和该线程组的领头线程具有相同的pid。
      pid存放在task_struct结构的tgid字段中,但使用getpid()时返回的时tgid。
      线程组领头线程的pid和tgid是相同的。

    • linux进程切换实质
      1.切换页全局目录
      2.切换内核态堆栈和硬件上下文,即TSS段中的值。但linux是软件进程切换,所有的进程共享一个TSS段,使用mov指令手动装填TSS而非切换。
    • switch_to宏为什么是三个参数
      最后一个参数last用来存储上个运行进程,因为切换到新进程时,从堆栈中恢复的prev指针很可能不是目前该进程的真实前一个进程。
    • linux创建进程的关键技术
      1.写时复制
      2.线程的创建可以共享父进程的地址空间,打开文件等信息。
      3.vfork创建的进程共享整个父进程的地址空间,并且可以保证子进程比父进程有限执行。
  • 相关阅读:
    Android图片缩放方法
    网站建设底层知识Socket与Http解析
    802.11成帧封装实现(五)
    802.11成帧封装实现(四)
    802.11成帧封装实现(三)
    802.11成帧封装实现(二)
    802.11成帧封装实现(一)
    802.11n协议解析(二)
    802.11n协议解析(一)
    早期主流的wlan技术(二)
  • 原文地址:https://www.cnblogs.com/yamadie/p/3505516.html
Copyright © 2011-2022 走看看