Linux之进程概念

 1.什么是进程

  通俗来说,进程就是运行中的程序  

  从操作系统角度来说,进程就是操作系统对进程的描述信息。 

  这个能具象化进程的描述信息叫进程控制块PCB,Linux下这个描述结构叫 struct task_struct

  进程是程序的基本执行实体,也是系统进行资源的分配和调度的基本单位。

    2.进程包含的主要信息

     操作系统能通过task_struct运行程序,是因为task_struct里面包含:

  内存指针,标识符pid,文件状态信息,进程状态,上下文数据,程序计数器,进程优先级...

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

  标识符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资源不够的情况, 多个进程切换调度运行

 

   

猜你喜欢

转载自www.cnblogs.com/Duikerdd/p/11452279.html