目录
最短剩余时间优先(Shortest Remaining Time Next)
进程和线程
进程
一个进程是某种类型的一个活动,它有程序,输入,输出以及状态。单个处理器可以被若干进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务。
在任何多到程序设计系统中,CPU由一个进程快速切换至另一个进程,使得每个进程各运行几十或几百毫秒。由于CPU在各个进程之间的快速切换,因此每个进程的执行速度是不确定的,进程的执行顺序也是不确定的。对于单处理器系统,由于在一个CPU上的快速切换,因此每个瞬时,只有一个进程在运行,这种情况就是所说的伪并行。
进程状态
* 运行态,即该时刻进程实际在占用cpu
* 就绪态,可运行,但因为其他进程正在运行而暂时终止
* 阻塞态,除非某种外部事件发生,否则进程不能运行
* 终止态,进程停止运行(可能完成,也可能因错误被动结束),移除调度
进程实现
操作系统为了执行进程间的切换,维护一张表格,这张表就是 进程表(也被称为进程控制块)。每个进程占用一个进程表项。该表项包含了进程状态的重要信息,包括程序计数器,堆栈指针,内存分配状况,所打开文件的状态,账号和调度信息,以及其他在进程由运行态转换到就绪态或阻塞态时所必须保存的信息,从而保证该进程随后能再次启动,就像从未被中断过一样。
线程
-
拥有共享同一个地址空间和所有可用数据的能力
-
线程比进程更轻量级,容易创建,容易撤销
-
性能方面的原因。如果多个线程都是cpu密集型的,那么并不能获得性能上的增强,但是如果存在大量的计算和大量的I/O处理,拥有多个线程能在这些活动中彼此重叠进行,从而加快程序的执行速度。
进程模型基于两种独立的概念,资源分组处理与执行。引入线程使得我们将资源和处理执行分开。即进程用于把资源集中到一起,而线程则是在CPU上被调度执行的实体。也就是说进程负责准备运行所需的虚拟环境,线程负责完成任务。
线程实现
同一个进程中的所有线程共享进程提供的虚拟环境内容,每个线程内部又会存在各自独立的堆栈空间,程序计数器等,这些独立的数据保证了线程的正确切换,也就是说这些独立内容就是线程切换时需要保存的内容。
线程状态
和进程一样,线程也存在以下状态:运行,阻塞&#x