中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

微软嵌入式

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 微软嵌入式 → 浏览主题: 【转帖】程序,进程,线程
发表新帖 回复该主题
回帖:1个,阅读:702 [上一页] [1] [下一页]
* 帖子主题:

【转帖】程序,进程,线程

分享到
870
lj5436
文章数:15
年度积分:50
历史总积分:870
注册时间:2009/11/22
发站内信
发表于:2010/2/5 0:10:33
#0楼
关于进程,程序,上面有几位已经说到了,再补充一下.
1.单进程,单线程:
设想这样一个情景,只有一个CPU(比如大家熟悉的单片机),要运行一个程序,如果仅仅只是这个程序占有这个CPU,那么很好想象,从这个程序开使运行,到程序结束运行,我们可以认为这是一个进程.事实上,现在大多单片机编程者都是使用这种方式进行单片机编程的.
2.多进程,单线程:
还是上面的情景,但是我们可以想象得到有这样一种情况,这个程序在运行过程中总是要依赖(等待)一定的条件才能继续运行.比如一个键盘的响应程序,其中很多时间都是在等待用户的按键动作.这个时间显然CPU是在做"无用功"的(它只是在空闲的等待着对它来说千年一遇的用户的动作),那么这个时间CPU完全可以暂时将这个等待扔在一边,转而可以利用这些时间去处理一些其它的事情.比如此时它还可以"抽空"来运行其它程序,比如显示程序....这样的处理方式显然是与前一种不同的,它带来了一种新的技术,即多进程设计.进程这个词来自"PROCESS",从词意本身就可看出其有"过程",进行等之意.
3.多进程,多线程:
类似的,现在假设我们的程序运行平台是多处理器(SMP)的(多核,或INTEL的超线程均类似).此时,我们当然可以按照"多进程,单线程"的方式让程序在这样的平台上运行,虽然有点浪费.但是,你可以想象一下,当一个程序在一个CPU上运行时,是不是其它的CPU我们也可以让它加入进来,别忘了,我们可不止一个CPU哦,为什么让它空闲在那呢!于是,我们想象者本来在一个进程中的任务,我们现在将其分成了多个子任务,让每个空闲的CPU去执行若干不同的子任务,当这些子任务完成后,整个任务也就完成了.于是,这又带来了多线程技术.线程这个词来自"THREAD",我不知道线程这个词翻译的好不好,反正也不明其意."THREAD"英文有"遍布,到处发生"之意,正说明了其线程的并发性.

无论进程,还是线程,其最终目的就是最大限度的提高程序的并行性(或着系统的吞吐量).对"单进程,单线程",一段时间段内,每个时刻都只有一个程序在运行,对"多进程,单线程",尽管在每个时刻,只有一个程序在运行,但是在一段时间段内,却有多个程序在运行,对"多进程,多线程",对每个时刻,每个时间段,都可能有多个程序在运行.它们的并行性程度大小为"单进程,单线程"<"多进程,单线程"<"多进程,多线程".

进程,线程技术如何实现,这些都离不了调度,而调度的可操作性,就需要将进程,线程抽象为可操作的数据结构,比如(进程描述符),而幸运的是这些进程,线程并非不可捉摸,在一定的时间,它都唯一的对应着一些"资源",比如(寄存器内容等等),这样对进程的操作(挂起,睡眠等)就转而成了对这些数据结构的操作了.
另外,linux中似乎并没有线程,而是全做进程看待。正在学习中。。。
匿名用户
文章数:N/A
年度积分:0
历史总积分:0
注册时间:2010/2/22
发站内信
发表于:2010/2/22 13:46:16
#1楼
该用户被锁定,回复内容不予显示!
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003