操作系统之进程线程篇

进程

概念:运行中的程序称为进程。

状态:进程的活动期间最少具备3种基本状态,即运行状态、就绪状态、阻塞状态。

 图中各个状态的意义:

  运行状态:该时刻进程占用CPU

  就绪状态:可以运行,但因为其他进程正在运行而暂停

  阻塞状态:该进程正在等待某一事件发生而暂时停止运行,这时即使给它CPU资源,它也无法运行

当然进程还拥有2种基本状态:创建状态和结束状态

  创建状态:进程被创建时的状态

  结束状态:进程从系统中消失时的状态

另外,进程还有一种状态叫挂起状态,它表示进程没有占用物理内存空间,这和阻塞状态不一样,阻塞状态是等待某个事件的返回。


 

 操作系统用什么来描述进程?

  使用进程控制块(PCB)来描述进程。PCB是进程存在的唯一标识,也就是说一个进程存在,必然会有一个PCB,进程消失了,PCB随之消失。

 


 

PCB包括什么信息?

  进程描述信息:

    进程标识符:标识各个进程,每个进程都有一个并且唯一的标识符。

    用户标识符:进程所归属的用户。

  进程控制和管理信息:

    进程当前状态:如创建、就绪、运行等状态。

    进程优先级:进程抢占CPU的优先级。

  资源分配清单:

    有关虚拟地址空间的信息,所打开文件的列表和所使用的I/O设备信息。

  CPU相关信息:

    CPU中各个寄存器的值,当进程被切换时,CPU的状态信息都会被保存在相应的PCB中,以便进程重新执行时,能从断点处继续执行。(进程的上下文切换)

 

线程

概念:线程是进程当中的一条执行流程。

优点:

  1.一个进程中可以同时存在多个线程。

  2.各个线程之间可以并发执行。

  3.各个线程之间可以共享地址空间和文件等资源。

缺点:

  当进程中的一个线程崩溃,这个进程中的所有线程都会崩溃。

 


 

线程的实现方式:

  1.用户线程:在用户空间实现的线程,不是由内核管理的线程,是由用户态的线程库来完成线程的管理。

  2.内核线程:在内核中实现的线程,是由内核管理的线程。

  3.轻量级线程:在内核中来支持用户线程。

  

进程与线程的比较:

  1.进程是资源分配的单位,而线程是CPU调度的单位。

  2.进程拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈。

  3.线程同样拥有就绪、阻塞、执行三种基本状态,同样具有状态之间的转换关系。

  4.线程能减少并发执行的时间和空间开销。

 

  调度算法

1.先来先服务算法(FCFS)

  每次从就绪队列选择最先进入队列的进程,然后一直运行,直到退出或者阻塞,才会继续从就绪队列中选择第一个进程继续运行。

  特点:对长作业有利,不利于短作业。

2.最短作业优先调度算法(SJF)

  优先选择运行时间最短的进程来运行。

  特点:对短作业有利,不利于长作业(极端情况下,长作业不会被运行)。

3.高响应比优先调度算法(HRRN)

  每次进行进程调度时,先计算响应比优先级,然后运行响应比优先级最高的进程。

  

根据这个公式:

  如果两个进程等待的时间相同,要求服务时间越短,优先级越高,短作业容易被选中。

  如果两个进程要求服务时间相同,等待时间越长,响应比越高,长作业容易被选中。

4.时间片轮转算法(RR)

  最简单、最公平且使用最广的算法就是时间片轮转算法。每个进程被分配一个时间片,即允许该进程在该时间段中运行。

  时间片的长度是一个很关键的点:

    如果时间片过长可能引起短作业进程的响应时间变长。过短会导致频繁的切换进程,CPU效率降低。所以时间片的设为20ms~50ms

 

posted @ 2020-10-10 11:42  zzzgzx  阅读(128)  评论(0编辑  收藏  举报