在操作系统中,线程与进程是非常重要的概念,深刻地理解它们很有必要。那么,什么是线程,什么是进程呢?它们之间又有什么区别什么联系呢?
进程是具有独立功能的程序关于某个数据集合的一次运行活动,可以申请和运行资源,是系统资源分配和调度的最小单位。一个程序可以对应一个或多个进程,一个进程可以对应一个程序或一段程序。进程由程序(描述进程要完成的功能)、数据集合(程序在执行时所需要的数据和工作区)、PCB控制块(包含进程的描述信息和控制信息,进程存在的唯一标志)组成,在进程创建时,创建PCB,进程结束时,撤销PCB。
PCB包含进程标识信息(进程的内部(系统分配给它的标示)和外部标示符(name of a person)),处理机状态信息(通用寄存器值,指令计数器值,程序状态字PSW值,用户栈指针值),进程调度信息(进程状态,进程优先权,进程调度的其他信息),其他信息(程序及数据指针,进程同步和通讯机制,资源清单,连接指针)。
进程的状态分为就绪(准备执行),执行(Running:占用处理机,单处理机环境中,某一时刻仅一个进程占用处理机),阻塞(Blocked:等待某事件发生才能执行,如等待I/O完成等),新建(进程已经创建,但未被OS接纳为可执行进程),终止(Terminated:因停止或取消,被OS从执行状态释放)5个状态。
进程的调度:
调度是指,在一个队列中,按照某种方法(算法),选择一个合适的个体的过程。
进程调度的算法:
FCFS(先来先服务算法):同时适合于三种调度。非剥夺调度方式,实现简单,看似公平。注意:后进入队列的运行时间较短的进程或者IO型进程而言,可能需要较长时间的等待。对段进程不公平。
短进程优先(对FCFS的改进):非剥夺。难以准确预测进程的执行时间。可能导致长进程饥饿。采用非剥夺调度方式,未考虑进程的紧迫程度,不适合于分时系统和事务处理系统
时间片轮转调度法:用户数多时进程急剧增加。时间片大小会影响处理性能。进程切换会增加系统额外开销。太长太短都不好。综合考虑系统最大用户数,响应时间,系统效率等因素
基于优先级的调度算法。
反馈调度法。
实时系统(Real-Time System)。
线程:线程是CPU分配和调度最小的单位,一个进程可以有一个或者多个线程(最少有一个)。引入线程是为了减少程序并发执行时系统所付出的额外开销,使系统具有更好的并发性。线程自身基本上不拥有系统资源,只拥有少许运行中必不可少的私有资源,线程可与同属一个进程的其他线程共享进程的全部资源。进程中的所有线程共享该进程的状态。三种基本状态:就绪执行阻塞