您的位置:首页 > 其它

程序 进程 线程

2011-11-15 14:44 281 查看
一,什么是进程?

CPU在一个瞬间只能运行一道程序。但是在一个时间段内可能会运行多道程序,这样就给了我们一种程序并行的概念。这就是“伪并行”:CPU在多道程序间快速的切换。这个和不是真正的并行——多CPU系统可以做到真正的并行。这种实际上顺序,表象上是并行的模型就是顺序进程模型,那我们常说的进程其实就是顺序进程。一个进程就是一个正在执行的程序,包括程序计数器、寄存器和变量的当前值,每个进程拥有一个虚拟的CPU,CPU在进程间快速切换,形成了多道程序的处理。

二,进程和程序(在这里指的是算法)的关系?

进程和程序的之间的区别很微妙,但却非常重要。

举例如下:一个厨师,正在准备制作冰淇淋蛋糕。厨房里有各种做蛋糕的原料,面 粉、鸡蛋、糖,冰淇淋等,还有制作工具,搅拌机、旋转托盘等。厨师手边还有一个《制作冰淇淋蛋糕的工艺流程说明手册》。那么这本手册其实就是“程序”,主要是某种计算机能识别的形式描述的算法;厨师就是CPU,主要是按照程序,对计算机其它软硬件设备进行操作;而制作蛋糕的原料就是所需的输入数据,制作蛋糕的工具就是计算机各种设备了。而进程就是制作蛋糕的整个过程:厨师阅读食谱,根据食谱使用蛋糕制作工具和原料,加工成可口的冰淇淋蛋糕。

那么,假如这个时候突然厨房另一段的某个灶炉着火了,那么厨师就会马上停止制作蛋糕;而开始根据《厨房安全突发事件处理手册》其中的灭火指南,拿起灭火器去灭火。那么其实这就是CPU从一个进程切换到了另外一个进程,而且每个进程都有各自的程序(《制作冰淇淋蛋糕的工艺流程说明手册》和《厨房安全突发事件处理手册》)。当火被扑灭后,厨师又会继续去制作他还未完成的冰淇淋蛋糕。

总结:一个进程是某种类型的一个活动,它有程序、输入、输出及状态。单个CPU被若干进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务。

三,进程和线程的关系?

在传统进程中,每个进程只存在一条控制线索和一个程序计数器。但是操作系统发展至今,已经能够支持到单个进程中多个控制线索。这些控制线索就是线程,也可以说是轻量线程。

进程是一个可执行的程序,由私有虚拟地址空间、代码、数据和其他操作系统资源(如进程创建的文件、管道、同步对象等)组成。一个应用程序可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主线程。线程是操作系统分时调度分配CPU时间的基本实体。一个线程可以执行程序的任意部分的代码,即使这部分代码被另一个线程并发地执行;一个进程的所有线程共享它的虚拟地址空间、全局变量和操作系统资源。之所以有线程这个概念,是因为以线程而不是进程为调度对象效率更高:

1、由于创建新进程必须加载代码,而线程要执行的代码已经被映射到进程的地址空间,所以创建、执行线程的速度比进程更快。

2、一个进程的所有线程共享进程的地址空间和全局变量,所以简化了线程之间的通讯。

很重要的一点:多线程经常不是程序员主动来使用的,而是在依赖操作系统时,已然是多线程了。即使用,也很有节制,滥用线程将适得其反。究竟什么地方应该使用多线程,并没有什么规则,将多线程用在该用的地方而已,当然不会刻意的使用它。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: