登录
首页 嵌入式系统 微软嵌入式
回帖 发帖
正文

主题:【转帖】程序,进程,线程

点击:728 回复:1

关于进程,程序,上面有几位已经说到了,再补充一下.
1.单进程,单线程:
设想这样一个情景,只有一个CPU(比如大家熟悉的单片机),要运行一个程序,如果仅仅只是这个程序占有这个CPU,那么很好想象,从这个程序开使运行,到程序结束运行,我们可以认为这是一个进程.事实上,现在大多单片机编程者都是使用这种方式进行单片机编程的.
2.多进程,单线程:
还是上面的情景,但是我们可以想象得到有这样一种情况,这个程序在运行过程中总是要依赖(等待)一定的条件才能继续运行.比如一个键盘的响应程序,其中很多时间都是在等待用户的按键动作.这个时间显然CPU是在做"无用功"的(它只是在空闲的等待着对它来说千年一遇的用户的动作),那么这个时间CPU完全可以暂时将这个等待扔在一边,转而可以利用这些时间去处理一些其它的事情.比如此时它还可以"抽空"来运行其它程序,比如显示程序....这样的处理方式显然是与前一种不同的,它带来了一种新的技术,即多进程设计.进程这个词来自"PROCESS",从词意本身就可看出其有"过程",进行等之意.
3.多进程,多线程:
类似的,现在假设我们的程序运行平台是多处理器(SMP)的(多核,或INTEL的超线程均类似).此时,我们当然可以按照"多进程,单线程"的方式让程序在这样的平台上运行,虽然有点浪费.但是,你可以想象一下,当一个程序在一个CPU上运行时,是不是其它的CPU我们也可以让它加入进来,别忘了,我们可不止一个CPU哦,为什么让它空闲在那呢!于是,我们想象者本来在一个进程中的任务,我们现在将其分成了多个子任务,让每个空闲的CPU去执行若干不同的子任务,当这些子任务完成后,整个任务也就完成了.于是,这又带来了多线程技术.线程这个词来自"THREAD",我不知道线程这个词翻译的好不好,反正也不明其意."THREAD"英文有"遍布,到处发生"之意,正说明了其线程的并发性.
无论进程,还是线程,其最终目的就是最大限度的提高程序的并行性(或着系统的吞吐量).对"单进程,单线程",一段时间段内,每个时刻都只有一个程序在运行,对"多进程,单线程",尽管在每个时刻,只有一个程序在运行,但是在一段时间段内,却有多个程序在运行,对"多进程,多线程",对每个时刻,每个时间段,都可能有多个程序在运行.它们的并行性程度大小为"单进程,单线程"<"多进程,单线程"<"多进程,多线程".
进程,线程技术如何实现,这些都离不了调度,而调度的可操作性,就需要将进程,线程抽象为可操作的数据结构,比如(进程描述符),而幸运的是这些进程,线程并非不可捉摸,在一定的时间,它都唯一的对应着一些"资源",比如(寄存器内容等等),这样对进程的操作(挂起,睡眠等)就转而成了对这些数据结构的操作了.
另外,linux中似乎并没有线程,而是全做进程看待。正在学习中。。。
10-02-05 00:10
1楼
该帖内容不符合相关规定!
10-02-22 13:46

工控新闻

更多新闻资讯