进程与线程

Posted kk_kk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程与线程相关的知识,希望对你有一定的参考价值。

1.进程概述

  进程是运行状态的程序,每个进程有一个进程控制块(PCB)作为进程的标识。PCB中包括进程标识信息,处理机现场保存信息和进程控制信息。进程控制块按进程的状态在链表中或索引表中存储。

2.三状态模型:

 进程状态分为五种:创建,就绪,运行,等待(阻塞),退出。这些状态都和CPU相关。

 1)引起进程创建的情况:

    i)系统初始化时;

    ii)用户请求创建一个新进程;

    iii)正在运行的进程执行了创建进程的系统调用    

 2)进程进入等待(阻塞)的情况:

  (只有进程自身才能知道何时需要等待某种事件的发生)

  i)请求并等待系统服务,无法马上完成

  ii)启动某种操作,无法马上完成,如磁盘的读写

  iii)需要的数据没有到达

 3)进程被抢占的情况(进入就绪状态):

  i)高优先级进程就绪

  ii)进程执行当前时间用完(每个进程有特定的时间占用资源)

 4)唤醒进程的情况(进入就绪状态):

  (不同于等待,进程只能被别的进程或操作系统唤醒)

  i)被阻塞进程需要的资源可被满足

  ii)被阻塞进程等待的事件到达

 5)进程结束的情况:

  i)正常退出(自愿的)

  ii)错误退出(自愿的)

  iii)致命错误(强制性的)

  iiii)被其他进程所杀(强制性的)

3.进程挂起模型

 进程的挂起状态与存储相关。挂起即把一个进程从内存转到外存。

  

  等待挂起状态:进程在外存并等待某事件的出现。

  就绪挂起状态:进程在外存,但只要进入内存,即可运行。

        (进不去内存的原因是内存不够或者进程优先级不高)

  从等待到等待挂起:没有进程处于就绪状态(?)或就绪进程要求更多内存资源。

  从就绪到就绪挂起:当有高优先级等待进程(系统认为很快就会就绪)和低优先级就绪进程时,低优先级就绪进程就会从就绪状态转为就绪挂起状态。

  从运行到就绪挂起:对抢先式分时系统,当有高优先级等待挂起进程因事件出现而进入就绪挂起状态,当前运行的状态就为了腾出空间进入就绪挂起状态。

  从等待挂起到就绪挂起:当有等待挂起进程因相关事件出现。

  激活:把一个进程从外存转到内存。

  就绪挂起到就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程。

  等待挂起到等待:当一个进程释放足够内存,并有高优先级等待挂起进程。

4.状态队列

  操作系统中有一组队列,不同队列表示不同的状态。进程状态的切换即是在不同队列中的删除与插入。

  

5.线程

  如果要并发运行,多进程可以实现。但如果要访问相同资源且并发运行,那多进程来回切换要消耗很多性能。所以在进程里加入多线程的概念,同一进程的多线程并发运行,进程中存储共享资源,每个线程保存描述指令流执行状态的寄存器和堆栈。

      

      

      

  

6.用户线程

  即通过高级程序设计语言的库函数来完成对线程的处理。

  

  

  

7.内核线程和轻权进程  

 

以上是关于进程与线程的主要内容,如果未能解决你的问题,请参考以下文章

Android中线程与线程,进程与进程之间如何通信?

JAVA线程与线程进程与进程间通信

OS——进程与线程

OS——进程与线程

OS——进程与线程

OS——进程与线程