zoukankan      html  css  js  c++  java
  • Linux 进程概念

      1.什么是进程?

      对用户来说,进程是正在运行的程序。  

      进程由程序,数据,和PCB组成。

      对操作系统来说,进程就是PCB,PCB包含了正在运行程序的全部信息。

      比如标识符,状态,优先级,内存指针,上下文数据等

      Linux下PCB叫task_struct。

     

      2.进程的描述信息

      内存指针: 程序和数据运行起来后被加载到内存中的位置

      标识符pid: 唯一标识系统中的各个进程

      上下文数据: 进程执行时的状态和资源

      程序计数器: 保存程序切换时的位置

      

     3.进程的状态

       三大基本状态 : 

       运行态:占有CPU,并在CPU上运行

       就绪态: 已经具备运行条件,但由于没有空闲CPU,而暂时不能运行

       阻塞态: 因等待某一事件而暂时不能运行

      

     4.特殊状态的进程

      1.僵尸进程: 处于僵死状态的进程

      产生:子进程先于父进程退出,为了保存退出原因,因此子程序资源不会被完全释放,操作系统检验到子进程退出,这时候通知父进程,这时候父进程可以获取子进程退出原因,允许操作系统释放资源,这种情况子进程资源才会被完全释放。如果父进程没有理这个通知,也就意味着父进程没有允许操作系统释放子进程的资源,那么这时候子进程将处于僵死状态成为僵尸进程。

          一个终止了但未被回收的进程称作僵尸进程。

      危害 :资源泄露

      避免 :  进程等待

      解决 : 父进程退出 (因为僵尸子进程的本质原因是要保存退出原因给父进程看的,然而父进程退出了,那么僵尸子进程也就没有存在的意义了,因此操作系统就直接释放了。)  

      2.孤儿进程: 父进程先于子进程退出,那么子进程就成为孤儿进程。(运行在后台)

      孤儿进程并不是没有父进程了,而是父进程变为init进程,意味着子进程退出后,将由init进程来处理它的身后事,而init进程就会直接允许操作系统释放资源,因此不会成为僵尸进程。

          3.守护进程: 特殊的孤儿进程。(运行在后台,并且跟终端以及会话完全脱离)

     

     5.进程的优先级  

      进程优先级决定了进程获取CPU资源的优先权
      优先级实际上就是一个数组, 这个值越小, 优先级越高。
        为什么要有优先级 : 让操作系统运行的更加合理。
        如何设置优先级 : 优先级无法直接设置, 但是可以通过设置nice值进而设置优先级的值
        PRI = PRI + NI  NI的取值范围 : -20~19
        设置命令 : renice - n ni_val - p pid   nice - n ni_val . / main               
       

     6.进程调度

       CPU调度是操作系统的基本功能,如果CPU空闲,操作系统会选择就绪队列的优先级高的程序执行

     7.进程的特点

       竞争性 : 因为操作系统上的进程都是一直在竞争资源, 因此进程之间具有竞争性
       独立性 : 为了使一个进程的操作不对另一个进程造成影响, 进程之间需要具有独立性
          并行 : CPU资源足够多的情况, 多个进程可以同时运行
       并发 : CPU资源不够的情况, 多个进程切换调度运行

     

       

  • 相关阅读:
    关于Java集合框架,这篇讲的还算不错了,建议大家看看!
    其实SQL优化调优,就跟吃饭喝水一样简单,教你抓住SQL的本质!
    深度分析ReentrantLock源码及AQS源码,从入门到入坟,建议先收藏!
    建议收藏,从零开始创建一个Activiti工作流,手把手教你完成
    这个厉害了,ssm框架整合全过程,建议收藏起来好好看看
    阿里技术专家深入讲解,SpringMVC入门到进阶,看这一篇就够了
    python3.6:AttributeError: 'generator' object has no attribute 'next'
    【转】modulenotfounderror: no module named 'matplotlib._path'问题的解决
    sublime中使用插件anaconda而在代码中出现方框
    Linux上用sublime编辑Python时候出现"SyntaxError: Non-ASCII character ‘xe5′ in file"的问题
  • 原文地址:https://www.cnblogs.com/Duikerdd/p/11452279.html
Copyright © 2011-2022 走看看