美文网首页
进程管理

进程管理

作者: Simon_Ye | 来源:发表于2020-03-06 12:11 被阅读0次

    进程概念

    内核的功用:

    进程管理、文件系统、网络功能、内存管理、驱动管理、安全功能等

    Process:

    运行中的进程的一个副本,是被载入内存的一个指令集合

    • 进程ID(Process ID,PID)号码被用来标记各个进程
    • UID、GID和SELinux语境决定对文件系统的存取和访问权限,通常从执行进程的用户来继承
    • 存在生命周期

    task struct:

    Linux内核存储进程信息的数据结构格式

    task list:

    多个任务的task struct组成的链表

    进程内存:

    • Page Frame:页框,用存储页面数据,存储Page 4k
    • LRU:Least Recently Used 近期最少使用算法,释放内
    • 存物理地址空间和线性地址空间
    • MMU:Memory Management Unit 负责转换线性和物理地址
    • TLB:Translation Lookaside Buffer 翻译后备缓冲器,用于保存虚拟地址和物理地址映射关系的缓存

    IPC:Inter Process Communication 进程间通讯

    • 同一主机:
      • signal:信号
      • shm:shared memory 共享内存
      • semaphore:信号量,一种计数器
    • 不同主机:
      • socket:IP和端口号
      • RPC:Remote Procedure Call 远程过程调用
      • MQ:消息队列,Kafka,ActiveMQ

    进程创建:

    • init:第一个进程
       父子关系
    • 进程:都由其父进程创建,CoW
       fork(),clone()

    进程状态

    • Linux内核:抢占式多任务

    进程类型:

    • 守护进程:daemon,在系统引导过程中启动的进程,和终端无关进程
    • 前台进程:跟终端相关,通过终端启动的进程

    注意:两者可相互转化

    进程状态:

    • 运行态:running
    • 就绪态:ready
    • 睡眠态:
      • 可中段:interruptable
      • 不可中断:uninterruptable
    • 停止态:stopped,暂停于内存,但不会被调度,除非手动启动
    • 僵死态:zombie,结束进程,父进程结束前,子进程不关闭

    进程的基本状态和转换

    进程的基本状态和转换.jpg
    • 创建状态:进程在创建时需要申请一个空白PCB(Process Control Block)进程控制块,向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
    • 就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行
    • 执行状态:进程处于就绪状态被调度后,进程进入执行状态
    • 阻塞状态:正则执行的进程由于某些事件(I/O请求,申请缓冲区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
    • 终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行

    状态之间转换六种情况

    • 运行 --> 就绪:
      1. 主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;
      2. 在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态。
    • 就绪 --> 运行:
      运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU
    • 运行 --> 阻塞:
      正在执行的进程因发生某等待时间而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求
    • 阻塞 --> 就绪:
      进程所等待的事件已经发生,就进入就绪队列
    以下两种状态是不可能发生的
    • 阻塞 --> 运行:
      即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取
    • 就绪 --> 阻塞:
      就绪态根本就没有执行,谈不上进入阻塞态

    进程优先级

    优先级:

    • 系统优先级:数字越小,优先级越高
      0-139(CentOS 4,5)
       各有140个运行队列和过期队列
      0-98,99(CentOS 6及之后)
    • 实时优先级:99-0,值最大优先级最高
    • nice 值:-20到19,对应系统优先级100-139或99

    Big O:时间复杂度,用时和规模的关系

    O(1)理想值,O(logn)慢速增长,O(n)线性增长,O(n^2)抛物线,O(2^n)指数型

    相关文章

      网友评论

          本文标题:进程管理

          本文链接:https://www.haomeiwen.com/subject/rosvrhtx.html