Chinaunix首页 | 论坛 | 博客
  • 博客访问: 257785
  • 博文数量: 35
  • 博客积分: 883
  • 博客等级: 准尉
  • 技术积分: 656
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-17 09:38
文章分类

全部博文(35)

文章存档

2013年(1)

2012年(34)

分类: LINUX

2012-05-27 17:37:02

上篇说到小明取钱后,回答家中收拾行李,准备出发。收拾的过程中,已经难掩内心的喜悦之情,恨不到马上就可以飞到二叔家,和家里的亲人一起团聚。脑中还时不时浮现出“一家人团聚”的美好景象。内心甭提有多高兴了,心想:生活是多么的美好,社会是多么的美好。真希望社会上所有的人和家庭都幸福健康。正如:系统中所有的进程都运行良好一样。果然,人说三句话不离本行,我这是三分钟的想法离不开Linux丫。其实,仔细想想,我们这个社会及这个地球,与计算机系统总有那么多相似之处。我想,这大概是由于计算机是人创造出来的吧,所以,他无处不显现着人类思维的踪迹。今天我们初说进程,所谓的初说,是因为进程这一块若是要说的话,内容还真不少,由于时间有限,本次先简要说一下,后面会不断地将进程的内容说完。
    话说人类社会得以持续运行,不断发展是由于人类的繁衍本质。不论是以前还是以后,各种形形色色的人都是由父母生出来的,在这里会由一个疑问,也就是“chicken and egg”问题,第一个或者一对人是如何产生的?这是一个哲学问题,很高深。按照宗教的说法是神创造出来的,按照进化论说法是猿人演变的,那么第一个猿人又是如何产生的呢?我想这个世界最初一个是某种化学或者物理变化,早就了产生了生物进而产生了人。但是,不论哪一种说法,第一个人或者演变成人得生物都应当是“凭空创造出来的”。在这个地球上的人分属于不同的人类社会,每个人都有自己的空间和资产,同时,也在使用着国家的公共资源。且每个人都有自己的人生轨迹。而这些特点与我们Linux系统中进程有着显著地对应的关系:
1、进程需要有一段程序让它运行。--》每个人都需要在走着自己的人生轨迹
2、进程需要有task_struct(任务控制块或进程控制块)来供系统调用及做财产登记。--》每个(成年)人或者家庭都有自己的户口本,就是我们的家庭成员关系及部分财产登记,当然,我们还有其他财产登记,例如:房产证及存折等等。但是,这些财产虽然在我们个人的家庭是分开的,相对零散的,但是,在政府那,一定会找到你的个人所有信息,那一定会登记着你这个人得财产,家庭子女情况及个人的一些行为轨迹。
3、进程需要有起码的系统空间的资源,例如:系统空间堆栈。--》我们每个人无形中都在用着国家或者政府分给我们的专有资源,例如:农民的土地,城市居民的房产。
4、需要有独立的用户空间。--》我们每个人同时还有属于自己的私有财产及私有空间,例如:车子等。
5、每个进程都是通过父进程fork(复制)产生的。除了系统启动之初的进程是Linux创造出来的--》每个人都是由父母双亲生养而成。除了我们最初的老祖宗外。
对于其中的第4点,若是某个进程不具备这样的特征我们称它为线程。在这里我们想说一下,其实,我更愿意这么理解进程:进程是一个家庭,而线程是这个家庭中没有成家、没有分家或者没有工作的一个未成年的孩子,他没有自己的财产,是和父进程公用财产的。而对于内核线程,这种在人类社会比较难找,完全为人民服务,没有自己的私有财产,所有的一切都是国家的。我们可以理解成雷锋、或者服役的战士。而对于整个地球村上的不同的国家,不同的人群的这样的人类社会,那可以理解成我们整个地球实际上是一个“异构多处理器计算机系统”。异构多处理器计算机系统:系统中有多个处理器,每个处理器上可能运行相同也可能运行不同的操作系统,一个操作系统可以运行在一个处理器上也可以运行在多个处理器上,整个系统能够运行良好。而对应我们的地球村,可以这么理解,一个国家制度体系就是一个操作系统,地球上有很多国家,也有不同的国家制度,也就是有多种操作系统。而我们的国家几亿个家庭或个人在生活,也就是有几亿个进程在运行。由于进程数量多,所以,我们国家对应的操作系统负载也就大,那么操作系统面临的挑战也就大。系统的关键资源,例如:土地、石油、银行等由政府领导者,各个进程就不断地请求获取资源,得到服务。国家中有多个办事部门,处理这些关键资源的生产、分配,我们就可以理解系统的处理器资源。另外,并不是所有人或者家庭都可以申请这些服务或者资源,人还有不同的状态,正常的人可以申请,像那些特殊的人群就可以,例如:囚犯等。而linux上各个进程也有自己的状态,如下:
#define TASK_RUNNING 0  //只差cpu的进程,运行条件已经就绪。对应着正在享受服务的人
#define TASK_INTERRUPTIBLE 1 //任务睡眠,可以被唤醒。对应着某人取钱领到票后,可以先玩玩手
                                 机,忙一下自己的事情,待工作人员召唤后,再办事
#define TASK_UNINTERRUPTIBLE 2 //任务睡眠,不可以被唤醒。某人领到号后,突然收到消息家中有
                                  急事,这时这个人立即离开,即使工作人员召唤也不能继续办事了
                                 ,先忙自己的事情,这时,工作人员只能换另一个人来办事了
#define TASK_ZOMBIE 4 //任务成为僵尸,进程已经过世了,而尚未销户
#define TASK_STOPPED 8 //任务停止运行,进程收到系统一个停止信号,则停止。对应着我
                                  们人正在过马路,被交警叫停。
人有不同的等级,而进程也有不同的优先级,优先级不同,或者资源的优先权也不同,至于占用资源多少,多长时间,要求系统策略来决定。我们是法制社会,人人公平的社会,再有特权,也要遵守法律制度是一样的。最后,每个进程都不是孤立存在的,都有其双亲和兄弟(姐妹),通过task_stuct中的指针来表示,而对应我们的户口本上的父亲、母亲及兄妹栏中来体现。还有很多可以联想对应的,时间有限,下次再分享。


阅读(1660) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~