• 13-1 进程,系统性能和任务计划


    进程,系统性能和任务计划

    进程概念

    • 内核功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等
    • Process: 运行中的程序的一个副本,是被载入内存的一个指令集合
      • 进程ID(Process ID,PID)号码被用来标记各个进程
      • UID、GID、和SELinux语境决定对文件系统的存取和访问权限
      • 通常从执行进程的用户来继承
      • 存在生命周期
    • 进程创建:
      • init:第一个进程(CentOS7软连接到systemd)
      • 进程:都由其父进程创建,fork(),父子关系,CoW

    进程控制块PCB

    • 内核把进程存放在叫做任务队列(task list)的双向循环链表中 * 链表中的每一项都是类型为task_struct,称为进程控制块(Processing Control Block),PCB中包含一个具体进程的所有信息
    • PCB包含信息:
      • 进程id、用户id和组id
      • 程序计数器
      • 进程的状态(有就绪、运行、阻塞)
      • 进程切换时需要保存和恢复的CPU寄存器的值
      • 描述虚拟地址空间的信息
      • 描述控制终端的信息
      • 当前工作目录
      • 文件描述符表,包含很多指向file结构体的指针
      • 进程可以使用的资源上限(ulimit –a命令可以查看)
      • 输入输出状态:配置进程使用I/O设备

    Task struct和Task list

    task

    进程相关概念

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

    MMU

    程序在访问一个内存地址指向的内存时,CPU不是直接把这个地址送到内存总线上,而是被送到MMU(Memory Management Unit),然后把这个内存地址映射到实际的物理内存地址上.程序操作的地址称为虚拟内存地址
    MMU

    进程、线程和协程

    process

    用户和内核空间

    UserSpaceAndKernelSpace

    C代码和内存布局之间的对应关系

    c

    进程的基本状态和转换

    change

    进程的基本状态:

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

    状态之间转换六种情况:

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

    LRU算法

    内存调度算法之一:

    • 假设序列为 4 3 4 2 3 1 4 2物理块有3个,则
      LRU
    • 第1轮 4调入内存 4
    • 第2轮 3调入内存 3 4
    • 第3轮 4调入内存 4 3
    • 第4轮 2调入内存 2 4 3
    • 第5轮 3调入内存 3 2 4
    • 第6轮 1调入内存 1 3 2
    • 第7轮 4调入内存 4 1 3
    • 第8轮 2调入内存 2 4 1

    IPC进程间通信

    • IPC: Inter Process Communication
      • 同一主机:pipe 管道
        • socket 套接字文件
        • signal 信号
        • shm shared memory
        • semaphore 信号量,一种计数器
      • 不同主机:socket IP和端口号
        • RPC remote procedure call
        • MQ 消息队列,如:Kafka,RabbitMQ,ActiveMQ

    进程优先级

    pre

    CentOS优先级:
    centos

    • 进程优先级:
      • 系统优先级:数字越小,优先级越高
        • 0-139:各有140个运行队列和过期队列
      • 实时优先级: 99-0 值最大优先级最高
      • nice值:-20到19,对应系统优先级100-139
    • Big O:时间复杂度,用时和规模的关系
      • O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n)

    进程状态

    • Linux内核:抢占式多任务
    • 进程类型:
      • 守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
      • 前台进程:跟终端相关,通过终端启动的进程
        • 注意:两者可相互转化
    • 进程状态:
      • 运行态:running
      • 就绪态:ready
      • 睡眠态:
        • 可中断:interruptable
        • 不可中断:uninterruptable
      • 停止态:stopped,暂停于内存,但不会被调度,除非手动启动
      • 僵死态:zombie,结束进程,父进程结束前,子进程不关闭
  • 相关阅读:
    Leetcode 538. Convert BST to Greater Tree
    Leetcode 530. Minimum Absolute Difference in BST
    Leetcode 501. Find Mode in Binary Search Tree
    Leetcode 437. Path Sum III
    Leetcode 404. Sum of Left Leaves
    Leetcode 257. Binary Tree Paths
    Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
    Leetcode 226. Invert Binary Tree
    Leetcode 112. Path Sum
    Leetcode 111. Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/kjalbert/p/11733259.html
Copyright © 2020-2023  润新知