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


    1、操作系统基础
      调用:kernel通过给应用程序提供system call的方式来提供硬件资源;
        注意:应用程序也包括库文件;
        库文件是运行在ring0上一段程序代码,不对客户直接提供应用;

      中断、保存现场

    2、进程运行原理(一个进程和多个进程)
      一个进程:首先我们需要把硬盘中的程序代码加载到内存(复制),再将这段程序放到CPU上运算,此时,这段程序就会调用(同时也会自动生成)很多的进程;由这些进程来完成程序锁指定的问题。
      在这个过程中:我们就需要去解决数据输入与输出,还有存储的问题!

      (不讨论多核、CPU多线程的情况)
      多个进程:在电脑中一般都是存在多个进程的,为CPU却只有一个,我们使用time space的方式来给进程分配固定时间,来运行,某个进程只有在轮到自己运行的时候才会被放到CPU上去执行,时间一到,就会自动被踢下来,CPU则会执行下一个进程;
        问题:
          1、进程谁先谁后的问题?
            进程优先级
          2、如果进程没有运行完就被踢下来怎么办?
            进程的数据存储
          3、进程造反了怎么办?
          4、进程正常结束了怎么办?

    3、进程优先级
      0-139
        0-99 实时进程,越大越优先
        100-139 非实时进程,越小越优先
        【特性:普通用户可以转让自己的优先级】
          nice值 定义普通进程的优先级,-19-20

      轮了一圈以后怎么办?
        在我们内存上,会提供一个空间;这个空间会专门用来存放运行过后的进程;
        当所有的进程运行完成一遍之后,这个空间,就会和原有空间对调;再提供给CPU读取;
        一直轮换,直到进程运行完成;

    4、进程数据怎么办?
      进程的数据存储--task strut
        1、程序数据
        2、输入数据输出数据(运行到一半留下的数据)
        3、进程原数据
          tast struct 数据结构体:它定义了进程数据的存储格式;我们将进程数据以及进程元数据存储于taststruct中,这种结构下,方便CPU快速存储与读取;

        物理地址空间--线性地址空间
        进程在运行后的一些数据通过线性地址对应的物理地址,存储到内存(页框page);MMU(内存管理单元)就是用来将不连续的物理地址转换为连续的线性地址;
          这些分开的页框的数据有两种组织形式:1、链表型数据 2、双向型数据

    5、进程造反了怎么办?
      linux结构下进程也是树形结构--pstree
      内核不会去直接管理;一般所有的进程都由上一级进程管理--父子进程概念;
      最大的进程--init,有权限去管理所有的进程;

      正常情况:
        1、如何生成子进程
          写实复制;
          父进程在需要完成一项工作的时候自己无法完成,则需要生成对应的子进程来完成这项工作,并且把自己的内存空间中的数据复制一份交给子进程,用来存储子进程所运行数据;--这个过程就叫做写实复制。

        2、子进程完成任务以后,如何关闭
          子进程任务完成,功成身退,交出所有占用的资源;再由父进程关闭子进程,这个周期就结束了。

    6、进程的通讯原理
      1、主机内的进程通讯
        single信号通讯
        共享内存
        管道形式
      2、主机间的进程通讯
        streams -- rpc
        socket

    7、进程类型
      守护进程 -- 维护系统的正常运行
      普通进程 -- 提供应用

      另外一种分类方式:根据占用资源的不同
      占用CPU多进程 -- 后台运行进程
      占用内存多的进程 -- 前台要显示进程

    8、进程的状态
      进程和程序比较起来,进程是有生命周期的,他会死去
      1、running 运行状态
      2、sleeping 睡眠状态
      3、stop 停止状态
      4、zombie 僵死状态
      5、中断

     

  • 相关阅读:
    JVM底层原理 内存模型+GC垃圾回收
    新Socket与网络小结
    Redis五大数据结构及基本指令用法
    MySql高级汇总-事务,索引,SQL调优,分库分表,读写分离
    笔试错题整理
    设计模式(思路)
    网络编程
    linux
    基础算法--KMP匹配字符串
    基础算法--整数二分
  • 原文地址:https://www.cnblogs.com/4443056bdH/p/11431713.html
Copyright © 2011-2022 走看看