冬Blog

醉心技术、醉心生活
posts - 88, comments - 674, trackbacks - 9, articles - 1
  博客园 :: 首页 :: 新随笔 ::  :: 订阅 订阅 :: 管理

内核的忙碌生活

Posted on 2008-02-18 19:23 冬冬 阅读(4382) 评论(39)  编辑 收藏

我,作为计算机的内核,也就是人们眼中所谓的操作系统,是不折不扣的幕后英雄!给大家说说都干了些什么,你们就知道我不是在吹牛了。

随着散热风扇的嗡嗡声响起,我的忙碌生活就开始了。BIOS大哥习惯做甩手掌柜,把里里外外扫一遍发现没什么意外后,就通知CPU,省下的事情,照旧——找内核。然后,睡大觉去了。

CPU是我们这儿的顶梁柱,脑子特好使,几乎从来不犯错误。不过这位同志的缺点就是太缺乏主观能动性,总是不断的问我:“下一步干什么?下一步干什么?”,他不觉得烦,我就要不厌其烦的告诉他。

于是我开始捣鼓硬盘:“小样,醒醒,把Shell给我”。硬盘这伙计懒,虽然记性没话说,但就是磨叽,找个东西要半天。对于我这个忙碌习惯了的人来说,实在受不了,所以我都是告诉他该找什么,然后该忙什么忙什么,反正找到了他会通知我(硬件中断)。或者有时候干脆让他和内存自己嘀咕去(DMA)。不过大家在一起时间长了,彼此也就了解了,有些合作的技巧:比如说我经常让他找东西的时候多找点,相关的、用得到的,一股脑给我(预读取),我都放到内存里(磁盘缓存),省得他麻烦,也省的自己老着急。

内存正好和硬盘正相反,反应快是没话说,但一歇班就全忘干净了。于是还要硬盘一点点的告诉他,累。

几位同事都准备好了,就开始干活。其实我是个演员,不对不对,是管理人员,而且只是个中层管理人员。所以上面还有几个老板(内核程序),还要伺候一大堆客户(用户程序)。

老板好说,所有领导的话都是对的(内核总是假定内核的程序没有错误)、都是重要的、紧急的(内核认为内核的要求都是合理的,应该尽快满足的)。所以都应该是尽量满足。客户的情况就复杂了,经常会有客户想干不能干的事情,而且客户还可能会犯错误。这些都要进行协调,能解决的就尽量解决,实在无可救药的,也只能舍小家,为大家了。(杀进程)

不管是老板还是客户,分配的任务也是五花八门:有的要求反应快,比如Shell和文本编辑程序,但是通常任务不重,也就是显示个字,存个盘啥的,我们管这叫交互式进程;也有任务重的,比如编译程序,但是快点慢点都成,这叫批处理进程;还要得要求隔一段时间就想做点儿什么的,比如计划任务啥的,算是实时进程。总之,根据不同的任务特点,也有不同的应对办法。但是这也要花心思,通过任务过去干过什么来确定他的特点,我们内部管这叫“基于过去行为的启发式算法”。

而我要做的事情就是尽可能地满足所有人的要求!为了完成这个impossible mission,我努力学习、不断总结经验教训,掌握了以下办法:

  1. 把任务切片。由于CPU同志从来不关心在做什么、也从来不知道下一步要做什么。所以我就让他这个时间段干这个任务,下个时间段干下个任务。这样CPU同志就会分身术了!
  2. 把内存分页。一个字节一个字节分配内存是会累死人的,而我的办法是把把内存分成4K、4K的一小块,然后按块分配。在此基础上,我还会用4K到4M不同大小的段来分配内存,以便解决内存的碎片问题,这就是著名的“伙伴算法”。
  3. 学会偷懒。有很多事情不一定立刻要做,比如说有的任务要求在内存里分配个地方,我的办法是让他觉得“貌似”已经分配完了就可以了,至于真正开辟内存空间,还是等他用到这块空间的时候再说吧,一个小小的缺页异常处理就可以搞定。
  4. 我还会能通过复杂的算法在固定的时间内决定下一个要处理的任务,这对付成百上千的任务时,效果相当好。
  5. ......

类似这样的工作技巧太多太多了,哎呀,又一个中断响了,我要去忙了,同志们再见!o(∩_∩)o...

Tag标签: 内核

Feedback

#1楼    回复  引用    

2008-02-18 20:05 by foolslanding [未注册用户]
不错,是原创么,怎么没人回呢。

#2楼    回复  引用    

2008-02-18 20:39 by 彪悍 [未注册用户]
好文!

#3楼    回复  引用    

2008-02-18 20:47 by coral [未注册用户]

#4楼    回复  引用  查看    

2008-02-18 20:53 by JYun      
好文啊,把操作系统该干的都做了介绍,风趣,有效果哦

#5楼    回复  引用    

2008-02-18 21:20 by xunhua [未注册用户]
nice, 不爱看书的人的看这个合适

#6楼    回复  引用  查看    

2008-02-18 21:22 by Justin      
非常好!挺有意思

#7楼    回复  引用  查看    

2008-02-18 21:25 by Anytao      
简直,帅呆了,行云流水,洒脱自如:-)

#8楼    回复  引用  查看    

2008-02-18 21:28 by 左岸之天行者      
非常有意思

#9楼    回复  引用  查看    

2008-02-18 21:31 by leoxu      
一口气写完的吧,牛

#10楼 [楼主]   回复  引用  查看    

2008-02-18 21:35 by 冬冬      
@foolslanding
是原创,呵呵。

@leoxu
你猜对了,一口气写完的。:)

@彪悍、@coral、@JYun、@xunhua、@Justin、@Anytao、@左岸之天行者
谢谢!:)

#11楼    回复  引用  查看    

2008-02-18 23:06 by 水煮 鱼      
偶也很喜欢用故事的方法说道理
不错.,喜欢!

#12楼    回复  引用  查看    

2008-02-18 23:25 by Jonny Yu      
写的真好,以拟人化角度描写内核,能很快的让人理解。
不过现在这个描述的还比较笼统,我觉得如果能像西游记
那样一回回的描述各个部分的具体工作细节以及算法,
那真的是水煮版的操作系统教材了。:D

#13楼    回复  引用    

2008-02-18 23:25 by RickyLin [未注册用户]
不错,不错。博主了得,还是文学青年,呵呵

#14楼    回复  引用    

2008-02-18 23:29 by 在线代理 [未注册用户]
好奇怪我打开这个网页居然会有弹出窗口被IE7给阻止了,记得cnblogs是没有弹窗广告的啊!

#15楼    回复  引用  查看    

2008-02-18 23:48 by van‘s      
好文,有意思!

#16楼    回复  引用    

2008-02-18 23:59 by 狒狒 [未注册用户]
不错啊 楼主好好写 继续下去

#17楼    回复  引用  查看    

2008-02-19 00:05 by Jamebo      
写的不错

#18楼    回复  引用  查看    

2008-02-19 00:22 by TT.Net      
很好很强大

#19楼    回复  引用  查看    

2008-02-19 06:52 by carysun      
很黄很暴力

#20楼    回复  引用  查看    

2008-02-19 08:16 by 专研.NET      
很好,很有才

#21楼    回复  引用  查看    

2008-02-19 08:32 by BlackCat      
Nice

#22楼    回复  引用    

2008-02-19 08:47 by ddee [未注册用户]
8错,支持一哈

#23楼    回复  引用  查看    

2008-02-19 08:49 by 老四      
不得不顶

#24楼    回复  引用  查看    

2008-02-19 08:55 by 一滴水      
好文,支持!

#25楼    回复  引用    

2008-02-19 09:02 by yudiefly [未注册用户]
写得很不错,很容易让人理解!

#26楼    回复  引用    

2008-02-19 09:10 by 旺屋 [未注册用户]
呵呵,有意思。

#27楼    回复  引用    

2008-02-19 10:26 by dpzhoum@dfl.com.cn [未注册用户]
我的QQ空间中有一篇与这极为相似的文章《一块硬盘的爱情》
大家应该会喜欢~
http://user.qzone.qq.com/31767702

#28楼    回复  引用  查看    

2008-02-19 13:11 by chinablueker      
good!

#29楼    回复  引用  查看    

2008-02-19 14:43 by airwolf2026      

#10楼 [楼主]   回复  引用  查看    

2008-02-18 21:35 by 冬冬
@foolslanding
是原创,呵呵。
------------------------------------------------------------------------------
呃,我好像在哪里看过,所以昨晚看到摘要的时候,就想是看过的老文章了,没想到,今天看到既然那么多人回复,就觉得奇怪了.
真的是原创吗?还是人真的有预知能力?

#30楼    回复  引用  查看    

2008-02-19 14:48 by 留恋星空      
学习来着

#31楼 [楼主]   回复  引用  查看    

2008-02-19 14:52 by 冬冬      
@airwolf2026
真的是原创,因为最近在看《深入理解Linux内核》。这篇文章的灵感来自于书中,将Linux内核比作是服务员的一个比喻。

dpzhoum@dfl.com.cn提到的那篇《一个硬盘的爱情》和我这篇文章的风格十分相似,你看过的是不是这篇?

#32楼    回复  引用    

2008-02-19 17:12 by Whyce [未注册用户]
好文章!

#33楼    回复  引用    

2008-02-19 21:12 by 世风日下 [未注册用户]
  我是一条内存,我在一台台式电脑里工作,但是我记不得我是从哪里来的,是什么牌子,因为我健忘。我的上司是CPU大哥,他是我们的老大。都说他是电脑的脑子,可是我看他的脑子实在是太小了,比我还要健忘。每天他总是不停的问我,某某页某某地址存的是什么?我总是不厌其烦的告诉他,可是不出一秒钟他又忘记了,又要问一遍,一次我说大哥你烦不烦,你就不能记住点有用的东西?他说“内存兄弟,我有苦衷啊,每天都在不停地做题,头晕眼花的,我也难啊。”

  其实我不愿意跟他计较,因为他脑子小,思维也很简单。虽然说他是我的上司,可是每次睡觉醒来,他连要干什么都不记得了,总是急急忙忙地找BIOS兄弟,“嘿,哥们,今天干什么来着”。BIOS总是很不耐烦地把每天必做的工作说一遍,然后就去睡觉了。接下来就轮到我和C哥瞎忙了。

  在机箱里的兄弟中,我最喜欢硬盘。他脑子大,记得东西多,而且记得牢。他说话的速度很慢,而且很少说错,这说明他很有深度,我这么感觉。CPU也这么想,不过他很笨,每次都忘了硬盘是谁。开机自检的时候总要问:嘿,那家伙是谁?

  \"st380021a!\"我总要重复一遍。

  硬盘很喜欢忧郁,我觉得像他这样忧郁的人不适合做技术活,迟早会精神分裂的,但是他不信。

  其实睡着的时候我总是把几乎所有的东西都忘记掉,但是我从来都不会忘记朋友。

  有一块地方叫做CMOS,那是我记忆的最深处,保存着硬盘、光驱的名字。有些东西应该很快忘掉,而有些东西应该永远记得。我再梦中总是这么想着。

  BIOS是一个很奇怪的家伙,他老是睡觉,但是却总是第一个醒过来。让我们自检,启动,然后接着睡觉。我知道如果我在CMOS里头把BIOS Shadow选项去掉,他就睡不成了,但是看着他晕晕乎乎的样子,也就不忍心这么做了。他对人总是爱搭不理,没有什么人了解他。但是这次硬盘恋爱的事,却使我重新认识了他。

  那是很久以前的事了,机箱里似乎来过一块笔记本硬盘,很可爱,说实话我也喜欢她。不过现在除了记得他可爱,别的都忘记了。这就是我比硬盘幸运的地方,我把所有应该忘记的都忘记了,但是他却什么都记得。

  自从笔记本硬盘走了之后,硬盘就变得很不正常。每次他的磁头经过一些地方的时候,我们都能感觉到电流很不正常。

  “硬盘这是怎么了?”我问CPU.

  “谁是硬盘?”

  我就知道和CPU没有办法交流,倒是BIOS没好气地说:“那个傻瓜恋爱了”。我不知道什么是恋爱,因为我记不住东西,似乎有一些人或者事在我生命中留下过痕迹,但是我都轻率地把他们忘记了。

  BIOS对我说:“对你来说记忆太容易了,所以你遗忘得更快,生命中能够永刻的记忆都带着痛楚。”我不懂,但是我知道BIOS曾经被刷写过,那时他很痛,像要死了一样。我的记忆是轻浮的,不像他们……我很羡慕他们,因为他们拥有回忆,而我没有,从此我也学会了忧郁,因为我在CMOS里面写下了“忧郁”两个字。

  硬盘一天比一天不对劲,终于有一天,CPU对我说:下条指令是什么来着?

  我一看,吓了一跳:“FORMAT”

  “是什么?”CPU很兴奋,这个没脑子的家伙。

  我还是告诉了他。我不知为什么这么做。

  硬盘犹豫了很久,终于说了一句 track 0 bad, disk unusable.

  电停了,很久很久,我在黑暗中数着时钟。

  一个月后硬盘回来了,也许最后的挣扎也没有使他摆脱残酷的命运,他被低格了。

  他什么也不记得了,如同一个婴儿,我们很难过,但是这未必不是一件好事,他以后不用痛苦了。

  为了恢复数据,笔记本硬盘回来了。\"Hi,st\",她说,\"你不认识我了?“

  硬盘没有说话,似乎低格对他的伤害很大。

  过了一会,他说:“对不起,好像我们没有见过吧……”。

  笔记本硬盘显得很伤心,我能感觉到她带泪的电流。“想不到连你也这么健忘”。

  “哦……”。硬盘没有回答。

  我很难过,笔记本硬盘的心里依然记着他,而他把一切都忘了,而那正是他最不希望忘却的。究竟是幸运,还是痛苦,我说不上来,只是觉得造化弄人,有一种淡淡的悲凉。

  这时从BIOS传来一阵奇怪的电流,我感觉到硬盘的表情在变化,由漠然到兴奋,由兴奋到哀伤,由哀伤到狂喜……

  “IBM,你回来了……”。
  ………………
  ………………
  ………………
  ………………
  ………………

  后来BIOS对我说,其实他并没有睡觉,自从硬盘把那些文件藏起来以后,他就料到会有这样的结局,于是偷偷地把其中一些文件放到了备份里。

  “幸好我是DUAL BIOS,虽然藏得不多,还足够让他想起来……”。

  我想BIOS保存这些东西的时候一定很疼,“为什么这么做呢?”

  “呵呵,我们是朋友嘛”。

#34楼    回复  引用    

2008-02-20 09:38 by awen177 [未注册用户]
文笔很好,赞一个

#35楼    回复  引用  查看    

2008-02-21 14:56 by 念时      
好文 机箱里也有爱情 以后我再面对机箱时 会多一份温情

#36楼    回复  引用  查看    

2008-02-25 17:27 by Clark Zheng      
好文,推荐给朋友看看

#37楼    回复  引用  查看    

2008-02-28 09:39 by Jeason      
不错不错,值得鼓励

#38楼    回复  引用  查看    

2008-03-06 09:13 by floodpeak      
这种文章注定是受欢迎的
既能传授知识,又能寓教于乐

#39楼    回复  引用    

2008-05-05 09:02 by cxf [未注册用户]
你很彪!!

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-03-06 15:50 编辑过
 
另存  打印