赞
踩
进程是操作系统提供的最古老的也是最重要的抽象概念之一,即使可以使用的CPU只有一个,但它们也具有支持(伪)并发操作的能力。
进程和程序间的区别是很微妙的:
想象有一位厨艺非凡的科学家正在为他的女儿制作蛋糕。他有做蛋糕的食谱,厨房里面有需要的原料:面粉,鸡蛋,糖等。
上面的例子中:做蛋糕的食谱就是程序(用适当形式描述的算法),科学家就是处理器,而做蛋糕的各种原料就是输入数据,进程就是科学家阅读食谱,取来各种原料以及制作蛋糕等一系列动作的总和。
现在假设科学家的儿子哭着跑了进来,说他的头被蜜蜂蛰了。科学家就记录下他照着食谱做到哪了(保存进程的当前状态),然后拿出一本急救手册,按照里面的指示处理儿子的蛰伤。这里,处理器就从一个进程(做蛋糕)切换到了另一个高优先级的进程(医疗救治)。每个进程拥有各自的程序(食谱和急救手册),当儿子的伤处理完了之后,科学家又回到厨房继续做蛋糕,从他离开时的那一步继续做下去。
这其中的关键思想:
一个进程是某种类型的一个活动,它有程序,输入,输出以及状态,单个处理器可以被若干进程共享,它使用某种调度算法来决定何时停止一个线程的工作,转而为另一个进程提供服务。
进程两个特点:
资源所有权:进程包括存放进程映像的虚拟地址空间;进程映像是程序,数据,栈和进程控制块中定义的属性集;进程总具有对资源的控制权,这些资源包括内存,IO通道,IO设备,文件等。
调度/执行:进程执行时采用一个或多程序的执行路径;不同进程的执行过程会交替进行。
简单来说,线程就是存在一个进程里面的诸多的“迷你进程”。
而多线程是指操作系统在单个进程内支持多个并发执行路径的能力。下图展示了线程和进程:
下图从进程管理的角度说明了线程和进程的区别:
多线程环境下,进程仍然只有一个与之关联的进程控制块和用户地址空间,但每个线程现在会有许多单独的栈和一个单独的控制块,控制块中包含寄存器值,优先级和其他线程相关的状态信息。所以进程中的所有线程共享该进程的状态和资源,所有线程都驻留在同一块地址空间中,并可访问相同的数据。
线程分为两大类:
用户级线程(ULT)
内核级线程(KLT)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。