高级会员

- 积分
- 514
- 金钱
- 514
- 注册时间
- 2012-3-21
- 在线时间
- 0 小时
|
发表于 2013-6-21 10:37:16
|
显示全部楼层
楼主,我来告诉你。以Linux为例,你用vim写一个Hello.c的程序如下:
#include <stdio.h>
int main()
{
printf("Hello World !\n");
return 0;
}
然后你编译:
$ gcc -Wall Hello.c -o Hello
并运行:
$ ./Hello
这时会在终端打印出 Hello World !
这个Hello文件,即经过编译、汇编、链接后的可执行的二进制文件,在操作系统中运行的过程就是一个进程来完成。也就是说当你敲入 ./Hello 后,OS就出现了一个叫进程的东西,这个叫作进程的里面有数据段、有代码段、有堆栈段、还有PCB(每个进程都有的一个东东,存储了进程相关的标识)。接着当终端打印出 Hello World !后,这个进程就退出了。那些各种段,还有PCB一并消失。这就是一个进程的完整周期,当然,进程的整个生命周期比我说的复杂的多。
现在你知道什么叫进程了吧?操作系统处理的任何任务都由进程完成,记住是任何任务!无论,你是用播放器欣赏日本爱情动作片,还是用微信勾搭妹子,你对PC的操作都被操作系统转化为进程来完成。进程有很多状态,有僵尸进程、内核空间进程、后台进程,这些你现在不需要知道。
总结下,你的老板让你做一个项目,它(修饰老板就用“它”,不用“他”)给你有很多资料、工具、经费让你去做项目,这些资料工具经费都归你管,别人不能用。你完成项目的过程就是一个进程。现在问题来了,你一个人做项目是不是太困难了,你需要一个帮手,然后你招了两个小弟,小弟们也和你做同样的项目,只不过他们完成该项目中的一小部分,当然了这些小弟和你共享那些资料、工具、经费。好了,小弟执行任务的过程就叫做--线程。那些资料工具经费叫做--共享资源。
现在你知道进程和线程的区别了吧。但,这只是皮毛。你有没有想过,为什么要找小弟呀?你项目做不完时把资料工具经费丢给另一个人,让他接着你的做,不就行了?你想过工作的交接有多复杂吗,TNND,交接你工作的人从来不会说你的好,他肯定背地里说你留了一个烂摊子...这种纠结的过程叫做--进程切换。正如人事交接的复杂性,计算机对进程的切换是非常耗费资源的。所以,才有了线程的必要性。
嵌入式系统中,一般都是用线程解决问题,你知道为什么了吧!
  S:mmu和进程、线程关系不大。
还有,打了那么多字,把我累的,给个好评的... |
|