• 进程概念


    进程概念

    进程是一个动态的概念,程序是个静态的文件。

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

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

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

    task struct:Linux内核存储进程信息的数据结构格式
    task list:多个任务的的task struct组成的链表
    进程创建:

    init:第一个进程
    父子关系
    进程:都由其父进程创建,CoW(写实复制,即)
    fork(), clone()

    进程的基本状态

    创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态

    就绪状态:进程已经准备好,已分配到所需资源,只要分配到CPU就能够立即运行

    执行状态:进程处于就绪状态被调度后,进程进入执行状态

    阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用

    终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行

    状态之间转换六种情况

    运行——>就绪:1,主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;2,在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态。

    就绪——>运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU

    运行——>阻塞:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求

    阻塞——>就绪:进程所等待的事件已经发生,就进入就绪队列
    以下两种状态是不可能发生的:

    阻塞——>运行:即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取

    就绪——>阻塞:就绪态根本就没有执行,谈不上进入阻塞态

    时序型处理过程:

    进程优先级

    进程优先级:

    系统优先级:数字越小,优先级越高
    0-139(CentOS4,5)
    各有140个运行队列和过期队列

    0-98,99(CentOS6)
    实时优先级: 99-0 值最大优先级最高

    nice值:-20到19,对应系统优先级100-139或99

    进程内存

    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

    进程状态

    Linux内核:抢占式多任务

    进程类型:

    守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
    前台进程:跟终端相关,通过终端启动的进程
    注意:两者可相互转化
    进程状态:
    运行态:running
    就绪态:ready
    睡眠态:
    可中断:interruptable
    不可中断:uninterruptable
    停止态:stopped,暂停于内存,但不会被调度,除非手动启动
    僵死态:zombie,结束进程,父进程结束前,子进程不关闭

  • 相关阅读:
    5分钟搞定图片鉴黄web应用!
    Hibernate session FlushMode的五种设置
    一个不错的设计模式文章
    JVM调优
    PowerDesigner(CDM—PDM—SQL脚本的转换流程) 随笔
    JavaScript获取DOM元素位置和尺寸大小
    文件夹及文件操作
    oracle自定义类型 示例
    存储过程
    处理执行sql语句
  • 原文地址:https://www.cnblogs.com/momenglin/p/8485984.html
Copyright © 2020-2023  润新知