zoukankan      html  css  js  c++  java
  • Linux进程管理

    Linux进程管理

    1. 什么是进程
      • 进程是在处理器中执行的实例,内核调度各类资源来满足进程的需求。
      • 运行在Linux操作系统的进程都被task_struct这个结构体管理,task_struct也被称为进程描述符。
    2. 进程的生命周期
      • 一个进程创建一个线程,创建进程的进程使用名为fork()的系统调用,fork()被调用的时候,会为新创建的子进程获得一个进程描述符,并且设置新的进程ID。
      • 由于共享同样的地址空间,写入新进程的数据会引发页错误的异常。此时,内核给子进程分配新的物理页。这个延迟的操作叫做Copy On Write。
      • 当程序执行完成,子进程使用exit()系统调用终止。exit()会释放进程的大部分数据结构,并且把这个终止的消息通知给父进程。这时候,子进程被称为zombie process(僵尸进程)。
    3. 线程
      • 线程是单个进程中生成的执行单元。多个线程在同一个进程中并发运行。共享内存,地址空间,打开文件等。
      • 从性能的角度看,创建线程比创建进程更加低消耗。
    4. 进程优先级和nice级别
      • 进程优先级由动态优先级和静态优先级决定,它是决定进程在CPU中执行顺序的数字。优先级越高的进程被处理器执行的机会越大。
      • Linux支持的nice级别从19(最低优先级)到-20(最高优先级),默认只是0。只有root身份的用户才能把进程的nice级别调整为负数(让其具备较高优先级)。
    5. 切换上下文
      • 在进程执行过程中,进程的信息存放在处理器的寄存器和缓存中。这部分执行中进程存放在寄存器中的数据就叫做context。进程切换就叫做上下文切换(context switching)。
    6. 中断处理
      • 中断处理是最高优先级别的任务之一。中断通常由I/O设备产生。
      • Linux中有两类中断,硬中断是由设备产生的需要做出响应的中断,软中断用于任务处理。
    7. 进程状态
      • TASK_RUNNING:进程在CPU执行或者在运行队列中等待运行
      • TASK_STOPPED:进程处于挂起状态
      • TASK_INTERRUPTIBLE:进程挂起并且等待一个特定条件
      • TASK_UNINTERRUPTIBLE:常表示进程等待磁盘I/O操作
      • TASK_ZOMBIE:进程等待父进程收到通知并释放所有的数据结构
      • 僵尸进程:进程收到信号终止时,通常有一些时间来完成所有的任务,这个进程叫做僵尸
    8. 进程内存段
      进程内存区域包含:
      • 文本:存储可执行代码的区域
      • 数据:数据段由如下三个区域构成
      • Data:存储初始化数据,比如静态变量
      • BSS:存储初始化0数据,数据初始化为0
      • Heap(堆):根据需要使用malloc()分配动态内存。堆向高地址空间增长。

      • 该区域存储局部变量、函数参数和函数的返回地址。栈向低地址空间增长。
    9. Linux的CPU调度
      • Linux内核使用O(1)而不是O(n)来实现CPU调度。O(1)就是静态算法,意味着处理器选择和调用进程开始执行的时间是一个常数。
  • 相关阅读:
    python 产生token及token验证
    Django中间件
    docker学习笔记16:Dockerfile 指令 ADD 和 COPY介绍
    Docker 容器镜像删除
    linux查找nginx所在目录
    nginx启动访问
    nginx安装【linux下安装】
    QPS计算
    Jmeter压测问题_Non HTTP response code: org.apache.http.conn.ConnectTimeoutException
    Jmeter压测问题_Non HTTP response code: java.net.ConnectException
  • 原文地址:https://www.cnblogs.com/magicianyin/p/8529054.html
Copyright © 2011-2022 走看看