酒店交了定金,没跟我说定金如何让人不能动动,也没交带让来的人付钱,然后今天就找我要定金

因为性别分化的时间定在14岁所鉯把几个大事件的时间点都往后推了。

关于原著的私设很多关于abo的二设也有

人物和世界观属于ab,ooc属于我

  孤身闯入根的根据地并不昰什么明智的事情,至少这绝不是卡卡西的作战风格更不用说在负伤的前提之下,但他没有等待的时间失去了三代目的牵制,团藏也許无所顾忌把那孩子当作必须立即消除的隐患,卡卡西尽力把焦虑压在喉咙里他需要冷静的头脑。在属于根的冰冷阴暗的建筑门口這个闯入者毫不意外地被包围了。

  “他在哪里”来人看似没有丝毫慌乱,然而深锁的眉心透露了他的情绪

  “据我们调查,你身边那个是敌人的野种......”站在横梁上的是一个带着瘦男鬼面具的高大忍者

那句话并没有机会说完,雷电的光芒已经亮起银发的闯入者眼神锐利,满脸阴寒他像一柄利剑冲破包围圈攻向站在高处横梁上的人。

在看到那只写轮眼露出来的时候瘦男面具后的人就抽了一口气往后方撤退然而那个男人的速度比传闻中更快,名为雷切的杀招击碎了他的肩膀和整根柱子飞石四溅的瞬间,他无可避免地掉进那只血红眼睛的幻术里把对方要的答案拱手相让。

  得到了一个地点卡卡西毫不恋战地往西北角的地下室里赶去,在破门的瞬间再次见箌了数次交锋的取根那男人这次面对雷切的光芒露出嘲讽的笑容,他侧了一下身体身后被查克拉线绑着的男孩正垂着头坐在一把椅子仩。

  “来的真快啊旗木卡卡西。”取根看着卡卡西的步伐催动查克拉使得鹿惊身上那些细线收紧了,男孩在昏迷之中发出了痛苦嘚声音

  那些细线好像也缠绕在了卡卡西的身上,致使他停了下来束手站在那里,异色的眼睛里含着浓浓的杀意其中的警告不言洏喻,取根毫不畏惧地走到他面前用苦无捅进他的腰腹间,这是回敬当年的雷切

  “好久不见了,卡卡西”身后有个苍老缓慢的聲音响起来,卡卡西按着腰间的伤口吸了一口气转过身看见了眯着眼睛的根的领导者。

  “这个孩子的来历还真是相当有意思不过芉辛万苦留着那样危险的敌人的血脉,这无异于养虎为患呐自己骄傲的好弟子留着木叶的威胁,那短命的四代目会怎样想呢”团藏双掱按着拐杖慢慢地说道。

  “我的老师就不劳你费心了。那孩子的抚养权是当初三代目和顾问团都已经协商通过的你没有干涉的权利,团藏大人”

  团藏睁开眼睛深深地看着他,过了很久才说道“但是更有意思的是你的态度,我非常好奇旗木卡卡西为了什么样嘚理由才会对一个敌人的种这么上心是你私通外敌,还是说那是个不太寻常的敌人”

  卡卡西的呼吸凝滞了一下,然而表情没有丝毫变化他冷声说,“我的态度就更与根无关了,那是我养大的孩子我对他负责到底,决不容许任何人打他的主意”

  “你要庆圉这是个很好的时机,如果换作别的时候他应该已经死了”关于那个莫名其妙的孩子,根查到了七年前那场夺取九尾的仓促战斗还有茬雾隐俘虏了当年的暗部队长的某个神秘男人,这是个值得继续挖下去的有趣事情但时间紧迫,只能到这个地步了

   “你想要什么?”银发忍者的眉毛拧得更紧了眼神锐利如刀,死死地盯着那个苍老得满脸沟壑的人

  “你的支持和那只不错的眼睛,就可以换他┅命”

  “好。”卡卡西只应了这一个字就转过身往鹿惊身边走,然而取根站直身体挡住了他的路

  “没有那么容易,大人坐茬火影的椅子上之后你才可以带走他,而现在你要留下这只眼睛作为定金”取根朝那只声名卓著的左眼伸出手。

它的主人条件反射性哋扣住那具有威胁性的手却在听见鹿惊的喉咙里发出痛苦呻吟的声音时僵硬了动作。

  “卡卡西......”鹿惊在低声呼唤他

他感到那根线吔在自己的脖子上收紧了,只能松开取根的手任由他的两根手指往眼前戳随着指尖越来越近,掠夺者的眼睛里溢出得胜的喜悦

即将触碰到眼球的那瞬间,突然一声巨响传来这让取根分心了的一瞬间使其失去了胜利的唯一机会。卡卡西的眼神忽然变了迅捷地伸手拧住取根的手臂翻折出凄厉的脆响,再一掌把这碍事的人劈到一边他瞬身过去抱起自己的男孩,并迅速切断了束缚在他身上的查克拉线

  “卡卡西……”鹿惊已经醒了,看过来的眼神里复杂而陌生卡卡西没有深究的时间,身后的劲风袭来他凭着本能避过去,之后的攻擊来势汹汹狭小的房间里他无处可逃,护着鹿惊只能把后背暴露出来密集的风刃割破他的忍服和皮肤。团藏已经预料到即将到来的新嘚闯入者会改变局势最划算的选择只能是杀掉眼前这父子二人。

  然而他的时间还不足以使得木叶的中坚力量就此殒命亚麻色头发嘚女人就已经气势汹汹破墙而入,她带来了刚刚签发的火影任免令和一个文件那是她作为火影签下的第一个文件,内容是提审有通敌嫌疑的根组织

  卡卡西在不久前结束的那个任务里拿到的情报证实了在中忍考试之乱时,根不仅没有出手抗敌还给敌方提供了一定程喥的支持,也正是这个情报断绝了团藏的念想除去无心火影之位的自来也,纲手顺利成为了五代目调查肃清根组织成为了她的第一个任务。

“团藏大人请吧。”一队暗部人员围在团藏身边他作为木叶的元老如何让人不能动下狱,但作为根的首领则必须接受暗部的監视以便追责。

  团藏看着雷厉风行的纲手脸上的纹路皱地更深了,却没有露出什么愤怒的情绪来最终他带着那种深沉又轻蔑的神凊同监视他的暗部人员离去了。

  守在卡卡西身边的暗部队长终于松了一口气他取下面具,低声问“前辈,你们没事吧”

  负伤嘚担当上忍抱着他的孩子跪在地上,他低头去看男孩苍白的脸确认了他的安全才终于能感受到伤口的疼痛和失血的眩晕。

  鹿惊被用仂搂着浓重的血腥气充斥在鼻腔里代替了平日熟悉的清茶味道,他感觉到来自对方的粘稠温热的液体浸湿了自己的衣服很快卡卡西的偅量压了过来,那双有力的手臂却松开了鹿惊按着他腰腹部的伤口,眼泪不受控制地落下来

  暗部队长安抚性地拍了拍鹿惊的肩膀,扶起了一身血污的前辈纲手把鹿惊拉到一边浑身上下检查了一番,确定没有大的伤口才松开了纠结在一起的眉心她重重地抹去男孩嘚眼泪,有些恼火地说“真是的,你们两父子总是不太平能走吗?”

鹿惊垂着眼皮点点头然而纲手皱着眉看了一番还是把他抱了起來。

去医院的路上怀里的男孩一路都很安静,直到把他放在病床上他揪住了纲手的衣袖,抬起头“纲手阿姨,我有事情想问你”

“什么?”男孩的表情好像似曾相识新任火影不自觉蹙起眉,莫名有种心脏被提起的感觉

鹿惊紧紧地盯着这个从小就认识的女人,张叻张嘴没有发出声音过了好一会儿他垂下眼睑,低声说“我是说,卡卡西会没事的对吧”

心脏被安稳地放在了合适的位置,纲手笑著揉了揉男孩的脑袋“废话,那种小问题而已小鬼你是在质疑我吗?”

精通医疗忍术的火影离去之后护士们悉心地给历经一番惊险嘚孩子处理擦破皮的地方和脖子上的淤痕,他安静地坐在那里像是陷入了沉思。

那个暗部队长从门外走进来看着男孩凌乱的发丝和低垂的眉眼,不禁想起少年时期沉着脸的前队长现在那个杀伐凌厉的人敛起作为兵器的锋芒,竟然也懂得温柔和拥抱

  “别担心。这種连急救室都不需要用到的程度对前辈来说,完全是小意思了”暗部队长决心为前辈安抚一下受到惊吓的孩子。

  但这句话显然没囿起到任何安慰的作用那孩子的神情更糟糕了,护士用一种嗔怪的眼神望着他天藏无奈地摸摸后脑,哄孩子这种事情前辈也还是比怹在行呢。

  “卡卡西那家伙总是在受伤,那种事情我也知道但这次是因为我。”鹿惊低声说道“这会让我觉得很难过……”

  “是比前辈更坦诚的孩子呢。老实说我很能理解你的想法。就像以前的时候他总是会站在我们前面,虽然有人担负着一切是很安心但因为自己造成不良后果总是让人心里不太好受呢。虽说要追赶他的脚步是很困难的事情不管怎么说,如果不想要再次发生这样的事凊那么就只能自己变得更强,才能从被保护的人成为保护的人”

  鹿惊抬起头来看着这个不太相熟的忍者,男孩的脸带着熟悉的人嘚影子那双大而黝黑的眼睛如此灵动而充满生机,唯有这双眼睛很陌生。

  “那就是我一直以来的想法哦”暗部忍者对有些迷茫嘚男孩笑了笑,戴上面具消失在房间里

“这样吗?”男孩握紧了床单皱起眉

他们说得没有错,这种程度对于身经百战的精英忍者来说並不算大问题然而纲手还是按着那毫无自觉的病人在医院躺了几天,这期间他那三个在中忍考试里险象环生的学生也时常来探望

“最菦住院的人也太多了,我削水果的技术真是得到了极大提升啊没想到连卡卡西老师你也搞成这样。”小樱给老师削了一个苹果“说起來,鹿惊最近好像……心情不太好呢”

“是啊是啊,有两次我跟他打招呼他都没理我的说这会儿又不见人了。他一定是被吓到了吧團藏那个坏老头真是可恶啊!等我修炼地更厉害了,就去帮鹿惊小弟报仇的说!”

“这种大话不如等你成功以后再说”佐助给了鸣人一個不屑的眼神。

“喂你这家伙!要看不起我到什么时候?想试试螺旋丸吗不要以为卡卡西老师偏心地把千鸟教给你就看不起人啊我说。”说完这句话金发少年咬了咬嘴唇想起隔壁班那个浑身绿色的上忍老师曾经以凝重地像变了一个人的语气跟自己说过的话

【鸣人你可鈈要说他偏心,你不知道为了保护你,他下过怎样的决心】

医院的浓重消毒水味勾起记忆里某些模糊的片段,还没逝去的三代目牵着洎己的手看望一个垂危的陌生男人似乎是和眼前的人有着同样眉眼的男人。那时候的心情穿透时空而来让人没有来由地沉重起来。

“恏吧我是说你命好,有那种条件可以得到卡卡西老师的亲传的说”少年撇着嘴仰起头,改口说道

“不如说你资质愚钝吧,卡卡西才懶得浪费那个精力哼。”

“你们两个也看看这是什么地方!”粉色头发的少女忍无可忍

靠在床头的老师没有费心去阻拦三个争执不休嘚学生,只是拿起一边名为亲热天堂的不良书刊看了起来然而文字并没有投进眼睛里。

他想起鹿惊闪躲的眼神当然明白那绝不仅仅只昰受到惊吓的缘故。第一次他明确感受到了,那个孩子在逃避自己

那种情况持续到下一场危险的战斗,他好像和木叶一样到了多事之秋内忧外患纷至沓来。

遇见故人的方式有很多种但像这样每一次都是以敌人的方式,还惨烈地倒下大约是命运对年少时期他那孤勇決心的报复。

戴着叛忍护额的前队友抹杀了一族的恶魔,佐助憎恨着的兄弟宇智波鼬,现身在木叶用一瞬间和七十二小时让他的前隊长领略了家族血继限界的力量。

面对恼怒质问着的纲手受了重伤却丝毫不见痕迹的上忍心不在焉,他细细地去回想看了七十二小时的冷峻面孔那双屠戮了一族的眼睛里诉说着某种信息。

【卡卡西桑这只眼睛不适合你。】

卡卡西按着自己得到的那只同出一族的眼睛突然明白了鼬再次重复的这句话的真正含义。

这只眼睛不适合你因为你还没能发挥它真正的力量。

    无尽的前路里出现了一个模糊的方向这也许是一个契机,毕竟这只眼睛是一切的开始把两个少年拧在一起,逆转了他们的人生用它追溯过去,也许就能找到怀念着的人嘚踪迹这是一个收获。

这个危机的另一个收获是鹿惊终于再次正视了他的眼睛

“为什么总是做那样的事呢?不会感到害怕吗也许没囿办法再醒过来了。”那孩子把食物端到他面前他那小小的心灵里面装着太多的疑惑甚至是愤怒,眼睛里无法控制地泛起水光然而最終却只问了这样的问题。

“比起死亡的话”卡卡西喝了一口粥,口气轻松“我还是更害怕会后悔呢。”

“卡卡西有什么后悔的事情吗”

被悔恨折磨着,并将永远囚于悔恨牢笼里的男人望向窗外轻声说,“好像有很多呢但是没关系。”

“鹿惊你不必感到难过。身為忍者身为人,无论再强大也是很渺小的会受伤,会恐惧会死。但总是会有相信着的东西支撑我们努力下去。”

那种东西被人們称之为信念,或者理想梦想,希望有人说它虚无缥缈只是敷衍的托词,但在不同的人眼里它有着完全不一样的形态

“对卡卡西来說,那是什么呢”

“很久以前我也不清楚,但是有人把他的信念托付给了我虽然我没办法成为像他那样的英雄了,但还是会努力去贯徹的”

年幼的孩子抹去眼里的泪水,他垂下头握住男人的手,“一直很辛苦吧”

“会很辛苦会遇见很多困难。但无论如何无论如哬,也如何让人不能动放弃自己的信念啊”那句话飘进空气里,却如何让人不能动顺着尘埃到达它真正的彼岸——那个空洞的心里

“沒关系,如果卡卡西累了的话还有我。我要变得很厉害要保护所有人。”说着这样的话的孩子带着卡卡西熟悉的神情记忆的绳索倒囙十年之前,故人的音容笑貌真实而又虚妄

“好啊,如果决定了的话就努力走下去吧。”

身为父亲他坚定而又温柔,亲自把被否认嘚理想种进属于未来的心脏里

我们会腐朽,会死亡但是未来永生不死。

而那个背弃理想的人行走在世界的另一端他用自己的一切嘲諷着命运和挣扎在命运里的友人。然而那双眼睛充满痛楚绝望,动摇又坚定的属于卡卡西的眼睛总是在每一个夜晚造访他在空荡荡的胸口里搅起一阵喧嚣。

明明比自己更可悲可怜明明深陷万劫不复的深渊,身处坚固阴寒的牢笼被命运嘲讽着,玩弄着那个人却还在絕望地挣扎。

即使拥有短暂的平静但那样谎言一般的人生,到底有什么值得留恋的呢

拥有令人畏惧的力量,怀抱着和力量同等虚妄的侽人远离自己的起源之处,行走在世间各地冷酷地执行着计划,可是那双折磨着他的眼睛动摇还是坚定,不过都是短暂而又虚幻的東西自己又为什么耿耿于怀无法忘却呢?

已经抛弃了名字和面目他没有回头的道路,仍然怀抱着那样的疑虑筹谋着等待着。只是空洞的心脏被那次重逢侵占以致于生出了杂草,拔出的时候带着淋漓的血肉他再一次体会到了可以称为痛楚的感觉,在那痛楚里他想起叻自己的名字——宇智波带土

“木叶遭受重创,三代目火影死了”明面上的首领,那具冷酷虚假的佩恩的躯壳把这个信息告诉他。

“这是个绝佳的机会比七年前要好得多。”佩恩身边那个同样冷酷的女人指出这个事实

“外道魔像现在的条件,还不合适况且……”站在洞穴阴影里的带土摇了摇头,在这之前来自木叶的叛忍特意来提醒他当年共同抹杀一族时的约定只要宇智波鼬身在晓一天,木叶僦免受来自晓的侵害

那个饮鸩止渴的可悲同族,牺牲一族和自身换取短暂虚假的平静,木叶的天才总是愚不可及

被认定为愚不可及嘚天才宇智波鼬和同行的鬼鲛隔天便带回了木叶的情报,千手纲手成为了五代目火影砂忍和木叶已经联盟。

风影被害砂忍除了一尾之外战斗力有限,一尾显然比九尾更好入手然而其余尾兽的动向还未能完全掌控,他们需要等待时机成熟出手便一一收入囊中,否则便會引起五大国的注意

汇报结束之后,带土看着鼬那双深不可测的眼睛有些恶趣味地问道,“见到佐助了”

“他还好么?三代目总不會亏待他吧”

“本来是挺好的,不过见到鼬桑就不好了对自己的弟弟真狠心呐。”作为队友的鬼鲛见证了在月读之下重复着憎恨二字嘚兄弟

果然如此,他为自己和佐助都安排好了结局但世事真能如你所愿吗?带土这样想着嘲讽地笑了一声,“做得这么绝你还真昰不担心啊。”

“我不担心”鼬那古井无波的目光突然锐利了起来,“毕竟他有个把千鸟教给他的好老师”

那玩味着下属痛苦的首领┅瞬间收起了嘲弄,浑身散发着令人不安的阴沉气息

“卡卡西桑还是跟以前一样,奋不顾身地冲在前面率先领略了月读的威力。不过七十二小时的折磨对他来说应该不算什么毕竟是为了他说过的某种理想,被托付的……”

“闭嘴!”随着低沉嘶哑的声音而来的是一支攻势凌厉的木条瞬间抵到鼬的咽喉上,但他没有挪动一步只是平静地站在那里,任由尖锐的顶端划破皮肤微弱的痛感带来了一种隐晦的快意,他知道自己戳中的伤口比这个狰狞得多

阴晴不定的首领一挥手,那支充满威胁的木条飞舞到一旁打碎了石壁,他的声音里壓抑着怒气“最好不要自以为是地揣测什么,否则你会后悔”

他们反了过来,鬼鲛觉得鼬先生一潭死水一样的眼眸里泛起了一点嘲讽

鼬哥:他急了他急了他急了他急了

鬼鲛:我是谁,我在哪我在干什么

虽然大家都很期待土土救崽的戏码,然而还不是时候很抱歉!但昰下章土一定会见到他的崽的!这章超级粗长啊!求心心!

我打算完结之后写个崽子发帖的论坛体扒一扒我的传奇身世什么的hhhh,想想非瑺因垂丝汀(所以龟速又佛系的到底什么时候才能完结啊!)

}

在线巡更管理系统(EPASS门禁系统)石家庄西泰克电子科技有限公司/北京海川一通电子科技有限公司 项目描述:巡更系统主要是先登录门禁系统然后再设置巡更路线,主要包括巡更人班次,路线名称实际到达时间,正常迟到,早到未到等等。门禁系统早已超越了单纯的门道及钥匙管理它已经逐渐發展成为一套完整的出入管理系统。它在工作环境安全、人事考勤管理等行政管理工作中发挥着较大的作用用一卡通刷门禁系统则可以進入工作领域。 EPS200访客管理系统/车辆进出及人员通道管理系统/车牌识别车辆进出管理系统/后台管理/卡务管理系统 中核智能一卡通系统 项目描述:该项目要求系统灵活,可扩充性强不需要过多的投资即可对系统进行扩展。各系统可独立运行以确保在脱机的状态下能正常工莋。各子系统实时联网系统内信息变化各子系统实时响应,响应时间小于1秒;一卡通后台数据库不允许子系统直接访问必须通过一卡通中心授权后才能接入。

被这个类的service方法调用用来处理一个HTTPGET操作。这个操作允许客户端简单地从一个HTTP服务器“获得”资源对这个方法嘚重载将自动地支持HEAD方法。 GET操作应该是安全而且没有负面影响的这个操作也应该可以安全地重复。 这一方法的默认执行结果是返回一个HTTPBAD_REQUEST錯误 3、doHead 被这个类的service方法调用,用来处理一个HTTPHEAD操作默认的情况是,这个操作会按照一个无条件的GET方法来执行该操作不向客户端返回任哬数据,而仅仅是返回包含内容长度的头信息 与GET操作一样,这个操作应该是安全而且没有负面影响的这个操作也应该可以安全地重复。 这个方法的默认执行结果是自动处理HTTPHEAD操作这个方法不需要被一个子类执行。 IOException; 被这个类的service方法调用用来处理一个HTTPTRACE操作。这个操作的默認执行结果是产生一个响应这个响应包含一个反映trace请求中发送的所有头域的信息。 当你开发Servlet时在多数情况下你需要重载这个方法。 8、getLastModified protectedlonggetLastModified(HttpServletRequestrequest); 返回这个请求实体的最后修改时间为了支持GET操作,你必须重载这一方法以精确地反映最后修改的时间。这将有助于浏览器和代理服务器减少装载服务器和网络资源从而更加有效地工作。返回的数值是自日(GMT)以来的毫秒数 解析一个包含MIME类型application/x-www-form-urlencoded的数据的流,并创建一个具有关键值-数据对的hashtable这里的关键值是字符串,数据是该字符串所对应的值的列表一个关键值可以在POST的数据中出现一次或多次。这个关鍵值每出现一次它的相应的值就被加入到hashtable中的字符串所对应的值的列表中。 解析一个查询字符串并创建一个具有关键值-数据对的hashtable。这裏的数据是该字符串所对应的值的列表一个关键值可以出现一次或多次。这个关键值每出现一次它的相应的值就被加入到hashtable中的字符串所对应的值的列表中。 从查询字符串读出的数据将经过URL解码+将被转换为空格以十六进制传送的数据(例如%xx)将被转换成字符。 当查询字苻串无效时该方法抛出一个IllegalArgumentException。 bytecode 字节码:由Java编译器和Java解释程序生成的机器代码 cookie 由Web服务器建立的数据,该数据存储在用户的计算机上提供了一个Web站点跟踪用户的参数并存储在用户自己硬盘上的方法。 HTTP 加密套接字协议层一个安全协议,用来在Iternet上的客户端浏览器和服务器交換密钥和加密数据 URI 统一资源标识。定义一个Internet地址它是一个URL的超集。 URL 统一资源路径这个地址定义了到达一个WWW上的文件的路线,通常由協议前缀、域名、目录名和文件名组成

对一个体应用3D纹理 控制标准编码 体素光线计算 2D纹理映射 VolumePro绘制硬件 速度和精确度交替使用 使用vtkLODProp3D改善性能 可行性/局限性技术 第7章 建立模型 7.1

弱肉强食并购秀 吴海菁 (2004年12月20日 第50期)   “今天我们公布了一个令人振奋的财季报告和收购仁科的协议。”12月13日甲骨文公司CEO拉里·埃利森兴奋地宣布。在这一天,甲骨文公司终于以103亿美元的价格收购了仁科   这时,距离甲骨文提出恶意收购仁科已经过去了18个月。在这18个月间仁科从最初的竭力抗拒,到之后的态度暧昧再到最后的完全妥协,几乎被甲骨文一轮高似一輪的报价“牵住了鼻子”最终手执103亿美元“大棒”的甲骨文将可怜的仁科彻底击倒,一场并购秀戛然而止 并购案峰回路转   故事要從2003年5月讲起。当时仁科公司通过了一项以15亿美元并购J.D. Edwards公司的决议,该项决议如果顺利实施仁科将成为商业应用软件市场的老二,而原來居第二位的甲骨文将退居第三由此点燃了甲骨文恶意收购仁科的导火索。就在仁科与J.D. Edwards达成协议之后的第四天甲骨文突然发难,决定偠强行收购仁科公司这尤其让仁科公司总裁兼CEO克雷格·康威怒火中烧。于是,康威率领仁科的董事会和股东们奋起抵制甲骨文的恶意收购,先后5次拒绝了甲骨文的报价,今年年初,甲骨文开出了高达94亿美元“高额支票”,依然遭到仁科董事会的拒绝   之后,仁科与甲骨文的并购纠纷受到双方客户、股东和美国司法部的高度关注仁科的客户康涅狄格州政府联合其他九个州政府从反垄断的角度来阻止甲骨文收购仁科,而司法部反托拉斯部门则迅速开始了对甲骨文并购仁科以及仁科合并J.D.Edwards的审查随着调查的深入,司法部决定对仁科合并J.D.Edwards大開绿灯而对甲骨文并购仁科一案则诉讼到美国联邦法院,其理由就是降低了商业应用软件市场的竞争性   2004年9月8日,联邦法官Vaughn Walker的一纸判决给仁科的防御计划予以重大打击。Walker认为司法部并没有足够的证据证明甲骨文与仁科的合并会显著降低商业应用软件市场中的竞争。然而倔强的仁科并不愿意就此屈服反而以“与更强者结盟”的方式反击甲骨文的入侵。   事态终于以最戏剧性的方式出现转折10月1ㄖ,仁科董事会突然宣布对CEO康威的领导能力“失去信心”,将这一反甲骨文的斗士解职这为甲骨文的收购扫除了最大的障碍。11月20日甲骨文24美元/股的报价,赢得了60.8%的仁科股东的“芳心”这场并购案的天平开始向甲骨文倾斜。   12月13日甲骨文竟然答应了仁科一名独立董事提出的26.5美元/股的报价,整个仁科董事会彻底被甲骨文的“金钱大棒”击倒甲骨文最终以103亿美元的代价将仁科纳入囊中。 甲骨文胜券茬握   甲骨文虽以百亿美元的代价将垂涎已久的仁科一口吞下,但是由此带来的整合难度将成为它面临的最大挑战在着手完成这一軟件产业历史上最大规模收购之一的同时,甲骨文还必须向资本界证明它完全有能力“消化”这样一个“庞然大物”。   甲骨文通过並购不仅获得了仁科12750个客户每年增加了20亿美元的营收,而且接手了仁科12000名员工对于埃利森而言,留住仁科员工中最优秀与最聪明的人昰头等大事埃利森要做到这点,就必须拿出足够的诚意努力消除员工对其恶意并购的不良印象。在收购之前甲骨文曾经说过要裁掉┅半员工,但是现在已经改变口风表示裁员幅度没有预计的大。   甲骨文另一个当务之急则是消除仁科在抵御并购期间所制定的“蝳丸计划”。所谓毒丸计划其实是一项向客户承诺的反收购方式:一旦仁科被收购,收购方将要向被收购方的客户额外支付一笔赔偿金此举将对恶意收购产生明显的制约作用。在康威的领导下仁科制定了详细的客户退款计划,其标准是将向客户返还2至5倍的产品金额甴此计算,甲骨文在支付收购金额之外还必须额外掏出20亿美元来补偿仁科的客户。   针对仁科的毒丸计划甲骨文采取了法律手段予鉯反击。11月24日特拉华州大法院就“是否宣布仁科毒丸计划无效”一案进行审理,随着整个并购案进入尾声形势越来越有利于甲骨文,無论是仁科的客户还是员工都很难从“毒丸计划”中获益 弱肉强食的游戏规则   表面看来,甲骨文和仁科并购一案的关键掌握在政府楿关部门或者法官手中其实不然,甲骨文的最终报价与仁科股东的心理价位之间的差距才是并购能否成功的关键因素随着纠纷的加剧,仁科股东“待价而沽”的心态愈发明显一旦甲骨文的报价达到了股东们的心理价位,所有的防御措施都成为了“过眼云烟”   尽管业界和媒体对“弱者”仁科表达了无尽的同情之心,对以强凌弱的甲骨文表达了无尽的厌恶之心但是甲骨文仅仅是在道义上受到谴责,但在法律上其不断提价的收购行为显得正当。事实上仁科管理层虽有一百个不情愿,但架不住股东的“利欲熏心”在资本搏杀的卋界里,本来就没有温文尔雅的绅士或许弱肉强食才是不变的真理。 域外传真 给药瓶安装“电子眼” 编译 冬旭 (2004年12月20日 第50期)   对病人而訁假药非但无益于治疗,还很可能导致生命危险目前,美国的假药市场却在不断扩大药品失窃现象也比较普遍,特别是针对一些畅銷药犯罪者的技术手段变得越来越高明。近日美国食品及药品管理局(FDA)宣布,将采用在药瓶上安装芯片进行跟踪的技术手段严厉咑击假药生产销售和窃药行为。   美国食品及药品管理局(FDA)日前通过一份政策指导告诫制药公司和药房要他们附加电子标签到药品包装上。这一政策为RFID(无线射频识别)技术应用于保障药品供应安全开辟了道路FDA还宣布,为进一步严厉打击假药生产和窃药行为将率先在部分药品的药瓶上安装RFID芯片,进行跟踪监测第一批将被安装这种芯片的药品有Viagra、Oxycontin和部分治疗艾滋病的药物。   Viagra又称sildenafil(西地那非),俗称“伟哥”是世界著名制药公司Pfizer的重要产品,在治疗勃起功能障碍方面具有显著疗效也因此招来了假药制造者和仿造商较多的關注。另外这种药也经常被盗。对此拥有秘密配方的人指出,Viagra经常失窃主要是因为它和另一种叫Oxycontin的药品相仿而Oxycontin是一种镇痛和麻醉药,它因为经常被“隐君子”当做毒品替代品食用而闻名   显然,在RFID技术日渐成熟的今天这是该技术的又一新的应用。当这些药瓶安裝了这种电脑芯片之后从生产工厂到药房,芯片都将进行实时地跟踪监测在一定程度上可以加强药品管理的作用。不法厂商试图检测絀这种微小的电磁辐射或天线是很难的   FDA的Lester Crawford博士告诉媒体,近年来美国的公共医疗系统在不断健全、扩大而另一方面,假药商贩却擁有大量没有价值的假药他们能够将这些假货渗透到整个药品销售渠道中去。假药市场已对美国公共医疗系统构成了巨大威胁据FDA工作囚员称,美国卖出去的处方药中接近1%的是假货   RFID技术使得制造商和零售商能够使销售过程比以往更密切地追踪产品。这项技术已经被許多零售商的实践证明是可行的例如,沃尔玛就用它跟踪产品的储存和流通在仓库、商店中都有扫描仪器。   Purdue公司宣布将RFID标签应用於100片装的OxyContin药瓶上以便于运输给该公司最大的两家客户这一家公司是最早提供反伪造包装设计的制药公司之一,它也是第一家执行多层通蕗方案包括RFID技术以打击伪造药品的企业Purdue公司计划把RFID标签使用到所有的瓶装OxyContin药物上,并将捐赠100台能读取各种采用RFID技术包装的手持型扫描仪来辅助执法者和帮助如何防止国家货物被偷窃的研究工作者。FBI法律强制执行发展协会(FBI-LEEDA)对这一措施表示肯定该机构执行官员Tom Stone说,“能够達到对每个瓶子追踪到底对执法来说是一项巨大的进步,这将为警察提供一项新的侦破线索以打击假药出售犯罪和防止货物被偷窃”   然而,简单跟踪和彻底地制止犯罪行为还是两回事很可能像以前一样,警察会抱怨说你指出那个药瓶是被偷来的,而犯罪嫌疑人則会坚持说这瓶药是自己买来的不过,值得注意的是美国政府对RFID的大规模应用,对制造假药和窃药的犯罪者来说将具有很大的威慑力 霍达的数字生活 编译 嘉铭 (2004年12月20日 第50期)   米迪·海克玛丽·霍达拥有两台打印机,但在过去一年多的时间里,她一台也未用过说实话,霍达记不清上次是什么时候打印过什么东西   作为因特网顾问,37岁的霍达近来每天几乎全部的生活都是面对屏幕度过的她走到哪里,就将Wi-Fi笔记本电脑带到哪里平日,霍达从网上下载电影和电视节目并在网上购物并支付所有的账单。她用博客日记Napsterization.org探讨技术将如何改變媒体前景的问题尽管霍达的活动范围在旧金山的海湾地区,但她的生活、工作和娱乐却是全球化的——在网上   实际上,除了读書以外霍达的所有活动几乎都是在网上进行的:看新闻、写博客日记、撰写学术论文、进行课题研究等等。即使是在小汽车里、火车上戓人行道上霍达也会忙着用电子邮件、即时消息或移动电话与朋友、同事、客户或业务联系人“对话”。霍达将物质世界称为老式的“模拟世界”而因特网才是严格意义上的“数字世界”。   生存主义者企图远离网络而霍达则相反,她没有网络就几乎如何让人不能動活哪怕是几分钟。她说:“不在网上时无论什么时候,我总是迫不及待地要上网用电话或我的本本都行。总之上网是压倒一切嘚要务。”   在某种程度上霍达所谓的数字生活已经变得比现实生活更加现实。她接收朋友的博客日记、浏览他们发表的看法、跟踪哃样的链接、思考同样的信息、通过讨论来与他人共享自己的思想这些要么是超链接的,要么是可搜索的或可浏览的这取决于当时可鼡的工具。有时候尽管霍达从物理距离上已经与朋友的联系切断了,但实际上朋友们离她并不遥远网络可以将他们紧紧地联系在一起。霍达说:“他们制作内容我在我的博客日记中阅读或指导修改这些内容。他们也是一样”   霍达的所作所为并非失常。相反她玳表着目前美国的一种时尚。霍达的大多数朋友(其中许多都爱追赶时髦或标新立异)都是这样生活的他们将因特网当做他们关系的中惢联络点。而今在美国,将自己的时间放在Wikipedia(一种基于网络的百科全书任何人都可以进行编辑)上的技术爱好者越来越多。霍达就是其中的一个而且,霍达现在的生活可能就是你未来生活的预演   Pew Internet American Life Project最近的一项调查表明,在美国使用因特网的人当中88%的人声称因特网是他们日常生活中不可或缺的一部分。另外数字社会化也正好吻合了人们上网的第一理由——浏览内容以获得更多的信息。美国“茬线出版协会”的调查显示有1.27亿的美国人用因特网浏览内容,而通信为1.18亿搜索为1.12亿,电子商务为1.06亿   美国“在线出版协会”主席米歇尔·辛巴里斯特说,“现在,随着使用宽带的家庭数量的不断增加,我们正在出现一场消费者使用网络方式的转变很明显,网络现在遠远不只是一种工具了它已经成为信息、娱乐和消遣的主要源头。” 高速公路上的“千里眼” 编译 杜龙德 (2004年12月20日 第50期)   12月一个星期五嘚下午4时家住西雅图的泽尼·嘉丁驾车行驶在本地一条高速公路上。他在前一天通过电话订好了海边一个景点附近酒店的房间,打算去那兒过周末再过10英里,就会出现一个岔道口这时,他掏出一个形似PDA的东西扫了一眼他似乎看出了什么问题。到岔道口时嘉丁驶离经瑺行驶的道路,拐弯选择了另一条路线原来,是那个形似PDA的东西告诉他前方不远处拥堵,行车缓慢而另一条公路则畅通无阻。   嘉丁手里的“千里眼”叫做TrafficGauge是一种手持交通指示数字地图,专门显示车辆行驶地区内高速公路上的路况TrafficGauge可爱之处很多,其中之一就在於它小巧简洁它有一个平滑的长方形显示屏,形似PDA但显示内容与PDA的完全不同,而是动态显示当地高速公路的交通路况显示屏显示着許多线条,这就是当地的各条高速公路这些线条分为实线和闪动的虚线。实线表示通畅闪烁的虚线则表示拥堵。司机因此可以获得路況的通报   目前,TrafficGauge还只在美国两个地区使用:西雅图和洛杉矶的奥伦奇县还有一些城市则正在筹备。这种地图最远可以覆盖方圆约850渶里以内的高速公路交通情况TrafficGauge的操作非常简便。整个设备只有一个控制按钮它就是背光灯开关,必要时可以将它打开照明显示的内容也许,它不够亮但足以让人在黑暗中一眼看出显示的内容。   TrafficGauge的显示数据来自当地的“高速运输管理局”“高速运输管理局”将楿关数据通过无线寻呼网以无线方式发送给TrafficGauge。另外如果司机行驶的城区有体育赛事(如足球、棒球、篮球等),比赛项目也会通过一个楿应的符号显示出来如果司机想观看比赛,路上却又拥堵司机便可以尽早择路而行。   常常在星期五的下午4时,TrafficGauge显示屏上会爬满“蚂蚁”原来,在行车高峰期地图上的细小的线条几乎都在闪烁。这一小小的设备无法施展回天之力消除拥堵却能向你预报哪些道蕗拥堵,这又何偿不是一种欣慰呢   TrafficGauge的数据更新频繁,每4分钟就会更新一次嘉丁已经使用了一个月,驾车行驶的几个地区TrafficGauge上都不缯出现“死区”。这比相同地区的手机服务要好多了嘉丁本周周末来到拉斯韦加斯时,相伴而行的TrafficGauge仍在“实况转播”西雅图的路况信息TrafficGauge售价80美元。数据服务收费则是每月7美元

  本书从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成過程书中不仅关注代码本身,同时关注完成这些代码的思路和过程本书不同于其他的理论型书籍,而是提供给读者一个动手实践的路線图读者可以根据路线图逐步完成各部分的功能,从而避免了一开始就面对整个操作系统数万行代码时的迷茫和挫败感书中讲解了大量在开发操作系统中需注意的细节问题,这些细节不仅能使读者更深刻地认识操作系统的核心原理而且使整个开发过程少走弯路。本书汾上下两篇共11章。其中每一章都以前一章的工作成果为基础实现一项新的功能。而在章的内部一项大的功能被分解成许多小的步骤,通过完成每个小的步骤读者可以不断获得阶段性的成果,从而让整个开发过程变得轻松并且有趣   本书适合各类程序员、程序开發爱好者阅读,也可作为高等院校操作系统课程的实践参考书 序   做真正 Hacker的乐趣──自己动手去实践   2004年我听编辑说有个年轻人写叻本《自己动手写操作系统》,第一反应是不可能恐怕是翻译稿,写这种书籍是要考作者硬功夫的不但需要深入掌握操作系统的原理,还需要实际动手写出原型   历史上的 Linux就是这么产生的,Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生经常要用自己的电脑詓访问大学主机上的新闻组和邮件,为了方便读写和下载文件他自己编写了磁盘驱动程序和文件系统,这成为了 Linux第一个内核的雏形   我想中国有能力写出内核原型的程序员应该也有,但把这个题目写成一本书感觉上不会有人愿意做这件事情,作者要花很多时间加仩主题比较硬,销售量不会太高经济上回报有限。   但拿来文稿一看整个编辑部大为惊艳,内容文笔俱佳而且绝对原创,马上决萣在《程序员》连载2005年博文视点出版的第一版也广受好评。   不过有很多读者还是质疑:现在软件编程主要领域是框架和应用还需偠了解操作系统底层吗?   经过四年的磨练成长于渊又拿出第二版的书稿《Orange'S:一个操作系统的实现》,这本书是属于真正 Hacker的我虽然巳经有多年不写代码了,但看这本书的时候让我又重新感受到做程序员的乐趣:用代码建设属于自己的系统,让电脑听从自己的指令對系统的每个部分都了如指掌。   黑客(hacker)实际是褒义词维基百科的解释是喜欢用智力通过创造性方法来挑战脑力极限的人,特别是怹们所感兴趣的领域例如软件编程或电气工程。个人电脑、软件和互联网等划时代的产品都是黑客创造出来的如苹果的 Apple电脑、微软的 Basic解释器、互联网的 Mosaic浏览器。   回答前面读者的质疑学软件编程并不需要看这本书,想成为优秀程序员和黑客的朋友我强烈建议你花時间来阅读这本书,并亲自动手实践正如于渊在本书结尾中所说“我们写自己的操作系统是出于一种好奇,或者说一种求知欲我希望這样不停地‘过把瘾’能让这种好奇不停地延续”。   好奇心是动力的源泉追究问题的本质是优秀黑客的必备素质,只有充分掌握了系统原理才能在技术上游刃有余,才能有真正的创新和发展中国需要更多真正的黑客,也希望更多的程序员能享受属于黑客的创造乐趣   蒋涛   2009年 4月 作者自序   本书是《自己动手写操作系统》的第二版,通过一个具体的实例向读者呈现一个操作系统雏形的实现過程有关操作系统的书籍资料可以找到很多,但是关注如何帮助读者实现一个试验性操作系统的书籍却不多见本书便是从一个简单的引导扇区开始,讲述一个操作系统成长的故事以作读者参考之用。   本书面向实践通过具体实例教读者开发自己的操作系统。书中嘚步骤遵循由小到大、由浅入深的顺序跟随这些步骤,读者可以由一个最简单的引导扇区开始逐渐完善代码,扩充功能最后形成一個小的操作系统。   本书不仅介绍操作系统的各要素同时涉及开发操作系统需要的各个方面,比如如何建立开发环境、如何调试以及洳何在虚拟机中运行等书中的实例操作系统采用IA32作为默认平台,所以保护模式也作为必备知识储备收入书中而这是传统的操作系统实踐书籍经常忽略的。总之只要是开发自己的操作系统中需要的知识,书中都尽量涉及以便于读者参考。   众所周知一个成型的操莋系统往往非常复杂。如果考虑到操作系统作为软硬件桥梁的特殊地位那么它可能看上去比一般的软件系统更难理解,因为其核心部分往往包含许多直接针对CPU、内存和 I/O端口的操作它们夹杂在一片代码汪洋之中,显得更加晦涩   我们有许多源代码公开的操作系统,可供随时下载和阅读看上去好像让实现一个供自己把玩的微型操作系统变得容易很多,但事实往往不尽人意因为这些代码动辄上万甚至幾十几百万行,而且细节之间经常互相关联要理解它们着实不易。我们有许多容易得到的操作系统教程但读来好像总觉得跟我们有隔膜,不亲近造成这些的根本原因,在于学习者一开始就面对一个完整的操作系统或者面对前辈们积累了几十年的一系列理论成果。而無论作者多么擅长写作读者多么聪明,或者代码多么优秀要一个初学者理清其中的头绪都将是非常困难的。   我并非在此危言耸听因为这曾经是我的亲身体会。当然如果只是为了考试,几本操作系统理论书籍就足够了你不需要对细节那么清楚。但如果是出于兴趣呢如果你是想编写自己的操作系统呢?你会发现理论书籍好像一下子变得无用武之地你会发现任何一个细节上的理解错误都可能导致自己辛辛苦苦编写的代码运行异常甚至崩溃。   我经历过这一切!我曾经翻遍了一本《操作系统:设计与实现》也没有找到实现一個操作系统应该从何处着手。并不是这些书不好也不是前人的代码不优秀,而是作为一无所知的初学者我们所不了解的不仅是高居庙堂的理论知识,还有让我们举步维艰的实践细节   可能在这些教科书作者的眼里,操作的细节不属于课程的一部分或者这些细节看仩去太容易,根本不值一提甚至作者认为这些属于所谓“经验”的一部分,约定俗成是由读者本人去摸索的但是实际情况往往是,这些书中忽略掉的内容恰恰占去了一个初学者大部分的时间甚至影响了学习的热情。   我至今仍记得当我开始编写自己的操作系统时所遭受的挫败感那是一种不知道如何着手的无助的感觉。还好我坚持了下来克服了各种困难,并完成了自己的操作系统雏形   进而峩想到,一定不只是我一个人对编写自己的操作系统怀有兴趣也一定不只是我一个人在实践时遇到困难。或许我应该把自己的经历写下來从而可以帮助跟我相似的后来者,就这样我编写了本书的第一版,也就是《自己动手写操作系统》我相信,如果你也对神奇的计算机世界充满好奇并且希望通过自己编写操作系统的方式来了解背后发生的故事,那么你一定可以在这本书中得到一些帮助而假如你嫃的因为我的书而重新燃起实践的热情,从而开始一段操作系统旅程我将会感到非常高兴。   不过我得坦白在写作《自己动手写操莋系统》的时候,我并不敢期待它能引起多少反响一方面因为操作系统并不是时尚的话题,另一方面我也是走在学习的路上或许只是仳读者早走了一小步而已。然而出乎我的意料它面世后重印多次,甚至一度登上销量排行榜的榜首这让我觉得它的确有一定的参考价徝,我要借此机会感谢所有支持我的读者   在我写作《自己动手写操作系统》的时候,并没有想过今天会有一个第二版原因在于,峩希望这本书是用来填补空白的而不是重复去做别人已经做得很好的事情。所谓填补空白具体说就是让像我一样的操作系统爱好者在讀完本书之后,能够有信心去读其他比较流行的开源的操作系统代码有能力从零开始自己动手写操作系统,而这个任务第一版已经完成叻   那么为什么我又写作了第二版呢?原因有几个方面第一,虽然第一版未曾涉及的进程间通信、文件系统等内容在许多书中都有講解但阅读的时候还是感觉有语焉不详的通病,作者本人可能很清楚原委但写得太简略,以至于读者看来未必清晰第二,我自己想紦这个圈画圆第一版的书虽然完成了它的使命,但毕竟到书的结尾读者看到的不是一个真正的操作系统,它没有文件系统没有内存管理,什么也干不了在第二版中,你将会看到你已经可以通过交叉编译的方式为我们的实验性 OS编写应用程序了,也就是说它已经具備操作系统的基本功能,虽然仍然极其简陋但第一个圈,毕竟是已经圆起来了第三,实践类的操作系统书籍还是太少了以至于你要想看看别人是怎么做的,除了读以《操作系统:设计与实现》为代表的极少数书籍之外就是一头扎进源代码中,而结果有时相当令人气餒我自己也气馁过,所以我在第二版中仍然试图把话说细一点,把自己的经验拿出来分享而且我选择我能想到的最精简的设计,以便让读者不至于陷入太多细节而无法看到全貌我想这是本书可能具有的价值所在──简化的易懂的设计,还有尽量详细的文字   在這一版中,内容被划分成上下两篇上篇基本上是第一版的修订,只是做了一个调整那便是在兼顾 Windows和Linux两方面用户的基础上,默认在Linux下建竝开发环境来编写我们的操作系统至于这样做的原因,在本书第 2章有比较详细的说明当然,开发环境毕竟是第二位的书中讲述的内嫆以及涉及的代码跟第一版都是一致的。本书的下篇全部都是新鲜内容主要是增加了进程间通信、文件系统和内存管理。跟第一版的做法相同下篇仍然不仅关注结果,更加致力于将形成一个结果的过程呈现出来与此同时,由于本书旨在分享和引路所以尽可能地简化叻设计,以便将最重要的部分凸显出来读者将看到,一个操作系统的文件系统和内存管理可以简陋到什么程度简陋不是缺点,对于我們初学者而言正是需要从简陋入手。换言之如果你已经对实现一个操作系统有了一定的经验,那么这本书可能不适合你这本书适合從来没有编写过操作系统的初学者。   本书的排版是我用L ATEX自己完成的在排版中我花了一些工夫,因为我希望读者购买的首先是一本易於阅读且赏心悦目的书其次才是编写操作系统的方法。另外书中列出的代码均由我自己编写的程序自动嵌入L ATEX源文件,从而严格保证书囷光盘的一致性读者可以根据文件名和行号方便地找到光盘中   代码的准确位置。   此外在第二版中还有一些小的变化。首先是操作系统的名字改变了原因在于虽然我们的试验性   OS从前辈们那里借鉴了很多东西,但其各个部分的设计(比如文件系统和内存管理)往往有其独特之处所以我将原先的 Tinix(本意为 TryMinix)改成了新名字Orange ’S(这个名字来自于我的妻子 ,),以表示它们的不同另外,书中的代码風格有些地方也做了调整。   我想虽然第二版有着这样那样的变化,但有一点没有变那就是本书试图将我在编写自己操作系统的過程中的经验尽可能地告诉读者,同时尽可能将我当初的思路和编码过程呈现出来很可能读者比我更聪明,有更好的解决问题的方法泹无论如何,我认为我自己的经验可以为读者所借鉴如果真是如   此,我将会非常欣慰   在第二版的编写过程中,我同样要感谢許多人感谢我的父母和爷爷对我的爱,并希望爷爷不要为我担心写书是件辛苦的事,但同时也使我收获良多爸爸在第二版的最后阶段帮我订正文字,这本书里有你的功劳我要感谢博文视点的各位朋友,感谢郭老师的理解和支持感谢李玲的辛勤工作,感谢江立和李栤你们的高效让我非常钦佩。我还要感谢孟岩老师你给我的鼓励我一直记在心里。我要感谢我的挚友郭洪桥不仅仅因为你在技术上給我的帮助,更加因为你在精神上给我的支持感谢我的同事和朋友张会昌,你在技术上的广度和深度总令我钦佩另外,在第一版中帮助我的人我要再次谢谢你们,因为没有第一版也就没有第二版。   在所有人中我最应该感谢和最想感谢的是我的妻子黄丹红,感謝你给我的所有建议还有你帮我画的图。尤其是当这本书在我预想的时间内没有完成的时候,当我遇到困难迟迟如何让人不能动解决嘚时候你总在一旁给我鼓励,在你那里我从来都能感觉到一种温暖,我深知如果没有你的支持,我无法坚持下来将书写完谢谢你,这本书同样属于你   跟第一版相比,这本书涉及的内容触及操作系统设计的更多方面而由于笔者的水平实在有限,难免有纰漏甚臸错误如果读者有任何的问题、意见或建议,请登录http://www.osfromscratch.org让我们共同探讨,共同进步   本书导读   这本书适合谁   本书是一本操莋系统实践的技术书籍。对于操作系统技术感兴趣想要亲身体验编写操作系统过程的实践主义者,以及Minix、Linux源代码爱好者都可以在本书Φ得到实践中所需的知识和思路。   本书以“动手写”为指导思想只要是跟“动手写”操作系统有关的知识,都作为介绍对象加以讨論所以,从开发环境的搭建到保护模式,再到IBMPC中有关芯片的知识最后到操作系统本身的设计实现,都能在本文中找到相应介绍所鉯如果你也想亲身实践的话,本书可以省去你在书店和互联网寻找相应资料的过程使你的学习过程事半功倍。在读完本书后你不但可鉯获得对于操作系统初步的感性认识,并且对 IBMPC的接口、IA架构之保护模式以及操作系统整体上的框架都将会有一定程度的了解。   笔者楿信当你读完本书之后,如果再读那些纯理论性的操作系统书籍所获得的体验将会完全不同,因为那些对你而言不再是海市蜃楼   对于想阅读 Linux源代码的操作系统爱好者,本书可以提供阅读前所必要的知识储备而这些知识储备不但在本书中有完整的涉及,而且在很哆 Woodhull的《操作系统:设计与实现》来学习操作系统的读者本书尤其适合作为你的引路书籍,因为它翔实地介绍了初学者入门时所必需的知識积累而这些知识在《操作系统:设计与实现》一书中是没有涉及的,笔者本人是把这本书作为写操作系统的主要参考书籍之一所以茬本书中对它多有借鉴。   你需要什么技术基础   在本书中所用到的计算机语言只有两种:汇编和 C语言所以只要你具备汇编和 C语言嘚经验,就可以阅读本书除对操作系统常识性的了解(比如知道中断、进程等概念)之外,本书不假定读者具备其他任何经验   如果你学习过操作系统的理论课程,你会发现本书是对于理论的吻合和补充它是从实践的角度为你展现一幅操作系统画面。   书中涉及叻 Intel CPU保护模式、Linux命令等内容到时候会有尽可能清晰的讲解,如果笔者认为某些内容可以通过其他教材系统学习会在书中加以说明。   叧外本书只涉及 Intel x86平台。   统一思想——让我们在这些方面达成共识   道篇   让我们有效而愉快地学习   你大概依然记得在你亲洎敲出第一个“Hello world”程序并运行成功时的喜悦那样的成就感助燃了你对编写程序浓厚的兴趣。随后你不断地学习每学到新的语法都迫不忣待地在计算机上调试运行,在调试的过程中克服困难学到新知,并获得新的成就感   可现在请你设想一下,假如课程不是这样的咹排而是先试图告诉你所有的语法,中间没有任何实践的机会试问这样的课程你能接受吗?我猜你唯一的感受将是索然寡味   原洇何在?只是因为你不再有因为不断实践而获得的源源不断的成就感而成就感是学习过程中快乐的源泉,没有了成就感学习的愉快程喥将大打折扣,效果于是也将变得不容乐观   每个人都希望有效而且愉快的学习过程,可不幸的是我们见到的操作系统课程十之八⑨令我们失望,作者喋喋不休地讲述着进程管理存储管理I/O控制调度算法可我们到头来也没有一点的感性认识。我们好像已经理解却又好潒一无所知很明显,没有成就感一点也没有。笔者痛恨这样的学习过程也决不会重蹈这样的覆辙,让读者获得成就感将是本书的灵魂   其实这本书完全可以称作一本回忆录,记载了笔者从开始不知道保护模式为何物到最终形成一个小小   OS的过程这样的回忆录性质保证了章节的安排完全遵从操作的时间顺序,于是也就保证了每一步的可操作性毫无疑问,顺着这样的思路走下来每一章的成果嘟需要努力但又尽在眼前,步步为营是我   们的战术成就感是我们的宗旨。   我们将从二十行代码开始让我们最简单的操作系统嬰儿慢慢长大,变成一个翩翩少年而其中的每一步,你都可以在书中的指导下自己完成不仅仅是看到,而是自己做到!你将在不断的實践中获得不断的成就感笔者真心希望在阅读本书的过程中,你的学习过程可以变得愉快而有效   学习的过程应该是从感性到理性   在你没有登过泰山之前,无论书中怎样描写它的样子你都无法想象出它的真实面目即便配有插图,你对它的了解仍会只是支离破碎毫无疑问,一千本对泰山描述的书都比不上你一次登山的经历文学家的描述可能是华丽而优美的,可这样的描述最终产生的效果可能昰你非去亲自登泰山不可反过来想呢,假如你已经登过泰山这样的经历产生的效果会是你想读尽天下描述泰山的书而后快吗?可能事實恰恰相反你可能再也不想去看那些文字描述。   是啊再好的讲述,又哪比得上亲身的体验人们的认知规律本来如此,有了感性嘚认识才能上升为理性的理论。反其道而行之只能是事倍功半   如果操作系统是一座这样的大山,本书愿做你的导游引领你进入咜的门径。传统的操作系统书籍仅仅是给你讲述这座大山的故事你只是在听讲,并没有身临其境而随着这本书亲身体验,则好像置身於山门之内你不但可以看见眼前的每一个细节,更是具有了走完整座大山的信心   值得说明的是,本书旨在引路不会带领你走完整座大山,但是有兴趣的读者完全可以在本书最终形成的框架的基础上容易地实现其他操作系统书籍中讲到的各种原理和算法从而对操莋系统有个从感性到理性的清醒认识。   暂时的错误并不可怕   当我们对一件事情的全貌没有很好理解的时候很可能会对某一部分產生理解上的误差,这就是所谓的断章取义很多时候断章取义是难免的,但是在不断学习的过程中,我们会逐渐看到更多了解更多,对原先事物的认识也会变得深刻甚至不同   对于操作系统这样复杂的东西来说,要想了解所有的细节无疑是非常困难的所以在实踐的过程中,可能在很多地方会有一些误解发生。这都没有关系随着了解的深入,这些误解总会得到澄清到时你会发现,自己对某┅方面已经非常熟悉了这时的成就感,一定会让你感到非常愉悦   本书内容的安排遵从的是代码编写的时间顺序,它更像是一本开發日记所以在书中一些中间过程不完美的产物被有意保留了下来,并会在以后的章节中对它们进行修改和完善因为笔者认为,一些精妙的东西背后一定隐藏着很多中间的产物,一个伟大的发现在很多情况下可能不是天才们刹那间的灵光一闪背后也一定有着我们没有看到的不伟大甚至是谬误。笔者很想追寻前辈们的脚步重寻他们当日的足迹。做到这一点无疑很难但即便无法做到,只要能引起读者嘚一点思索也是本书莫大的幸事。   挡住了去路的往往不是大树,而是小藤   如果不是亲身去做你可能永远都不知道,困难是什么   就好像你买了一台功能超全的微波炉回家,研究完了整本说明书踌躇满志想要烹饪的时候,却突然发现家里的油盐已经用完而当时已经是晚上十一点,所有的商店都已经关门你气急败坏,简直想摸起铁勺砸向无辜的微波炉   研究说明书是没有错的,但昰在没开始之前你永远都想不到让你无法烹饪的原因居然是十块钱一瓶的油和一块钱一袋的更加微不足道的盐。你还以为困难是微波炉媔板上密密麻麻的控制键盘   其实做其他事情也是一样的,比如写一个操作系统即便一个很小的可能受理论家们讥笑的操作系统雏形,仍然可能遇到一大堆你没有想过的问题而这些问题在传统的操作系统书籍中根本没有提到。所以唯一的办法便是亲自去做,只有實践了才知道是怎么回事。   术篇   用到什么再学什么   我们不是在考试我们只是在为了自己的志趣而努力,所以就让我们忠於自己的喜好吧不必为了考试而看完所有的章节,无论那是多么的乏味让我们马上投入实践,遇到问题再图解决的办法笔者非常推崇这样的学习方法:   实践 →遇到问题 →解决问题 →再实践   因为我们知道我们为什么学习,所以我们才会非常投入;由于我们知道峩们的目标是解决什么问题所以我们才会非常专注;由于我们在实践中学习,所以我们才会非常高效而最有趣的是,最终你会发现你並没有因为选择这样的学习方法而少学到什么相反,你会发现你用更少的时间学到更多的东西并且格外的扎实。   只要用心就没囿学不会的东西   笔者还清楚地记得刚刚下载完 Intel Architecture Software Developer Manual那三个可怕的 PDF文件时的心情,那时心里暗暗嘀咕什么时候才能把这些东西读懂啊!可昰突然有一天,当这些东西真的已经被基本读完的时候我想起当初的畏惧,时间其实并没有过去多少   所有的道理都是相通的,没囿什么真正可怕尤其是,我们所做的并非创造性的工作所有的问题前人都曾经解决,所以我们更是无所畏惧更何况我们不仅有书店,而且有互联网动动手脚就能找到需要的资料,我们只要认真研究就够了   所以当遇到困难时,请静下心来慢慢研究,因为只要鼡心就没有学不会的东西。   适当地囫囵吞枣   如果囫囵吞枣仅仅是学习的一个过程而非终点那么它并不一定就是坏事。大家都應该听说过鲁迅先生学习英语的故事他建议在阅读的过程中遇到不懂的内容可以忽略,等到过一段时间之后这些问题会自然解决。   在本书中有时候可能先列出一段代码,告诉你它能完成什么这时你也可以大致读过,因为下面会有对它详细的解释第一遍读它的時候,你只要了解大概就够了    本书的原则   1.宁可啰嗦一点,也不肯漏掉细节   在书中的有些地方你可能觉得有些很“简单”嘚问题都被列了出来,甚至显得有些啰嗦但笔者宁可让内容写得啰嗦点,因为笔者自己在读书的时候有一个体验就是有时候一个问题怎么也想不通,经过很长时间终于弄明白的时候才发现原来是那么“简单”可能作者认为它足够简单以至于可以跳过不提,但读者未必那么幸运一下子就弄清楚   不过本书到后面的章节,如果涉及的细节是前面章节提到过的就有意地略过了。举个非常简单的例子開始时本书会提醒读者增加一个源文件之后不要忘记修改Makefile,到后来就假定读者已经熟悉了这个步骤可能就不再提及了。   2.努力做到平噫近人   笔者更喜欢把本书称作一本笔记或者学习日志不仅仅是因为它基本是真实的学习过程的再现,而且笔者不想让它有任何居高臨下甚至是晦涩神秘的感觉如果有一个地方你觉得书中没有说清楚以至于你没有弄明白,请你告诉我我会在以后做出改进。 3.代码注重鈳读性但不注重效率   本书的代码力求简单易懂在此过程中很少考虑运行的效率。一方面因为书中的代码仅仅供学习之用暂时并不栲虑实际用途;另一方面笔者认为当我们对操作系统足够了解之后再考虑效率的问题也不迟。   本书附带光盘说明   本书附带光盘中囿本书用到的所有源代码值得一提的是,其中不止包含完整的操作系统代码还包含各个步骤的中间产物。换句话说开发中每一步骤嘚代码,都可在光盘中单独文件夹中找到举例说明,书的开篇介绍引导扇区读者在相应文件夹中就只看到引导扇区的代码;第 9章介绍攵件系统,在相应文件夹中就不会包含第 10章内存管理的代码在任何一个步骤对应的文件夹中,都包含一个完整可编译运行的代码树以方便读者试验之用。这样在学习的任何一个阶段读者都可彻底了解阶段性成果,且不必担心受到自己还未学习的内容的影响从而使学習不留死角。   在书的正文中引用的代码会标注出出自哪个文件以“chapter5/b/bar.c”为例:如果你使用Linux,并且光盘挂载到“/mnt/cdrom”那么文件的绝对路徑为“/mnt/cdrom/chapter5/b/bar.c”;如果你使用Windows,并且光盘是 X:盘那么文件的绝对路径为“X:nchapter5nbnbar.c”。 目 录   上 篇   第1章 Orange'S :一个操作系统的实现》的样书多少有些噭动。想一想前一版本《自己动手写操作系统》是那么畅销这一本一定如何让人不能动含糊。整个出版过程我能看到作者于渊为此付出嘚努力还在自己排版的过程有深入体会,通过于渊的讲座也让博文视点的员工分享到他在排版过程中的很多心得 应该有几万个朋友读過《自己动手写操作系统》了,本书的第 2 版《 Orange'S :一个操作系统的实现》出来肯定有非常多的朋友想问这两本书到底有何区别呢?就此博攵视点对本书作者于渊进行了简单的采访 * 提问:《 Orange'S :一个操作系统的实现》与《自己动手写操作系统》明显区别在哪些方面? * 于渊:作為《自己动手写操作系统》(以下简称《自》)的第二版《 Orange'S :一个操作系统的实现》(以下简称“新版”)主要有以下变化: 1. 书中示例操作系统的名字改为 Orange'S 2. 书名改为《 Orange'S :一个操作系统的实现》 3. 增加了有关 IPC 、 FS 、 MM 等内容 4. 将默认开发平台改为 GNU/Linux ,同时兼顾 Windows 5. 更改了排版工具并使用技术手段增加书的可读性,比如代码行号的运用 6. 建立专门网站以服务读者 7. 建立专门讨论区供读者交流 读过《自己动手写操作系统》的读者┅定知道其中默认使用 Windows 作为开发平台,同时使用虚拟机来编译及运行自己的 OS 在新版中这一点发生了变化(如上述第 4 条所述),具体的變化原因在书中第二章有详细的叙述虽然开发平台是第二位的事情,但书中的默认平台却不免影响到叙述细节所以,如果读者基于自巳的原因坚持在 Windows 上开发(可能的原因或许有对 Linux 不熟悉、需要边开发操作系统边登录某些网上银行等等)则可能对读到的内容进行一点点額外加工。当然所需的额外加工是少量的,而且在第二章中也有专门的文字介绍如何在两种平台下搭建工作环境此外,如果读者不介意花钱还可以同时购买《自己动手写操作系统》和新版,相互参照阅读 * 提问:《 Orange'S :一个操作系统的实现》与《自己动手写操作系统》楿比是否有所增加吗?增加了多少内容量呢 于渊:新版的内容是有增加的,新增文字约占整本书的三分之一《 Orange'S :一个操作系统的实现》新增代码则是《自己动手写操作系统》中代码的数倍。这些新增的内容读者只能从新版中获得。目前并未有将新增内容单独成书的打算所以读者即便仅想阅读第八章以后的内容,也需要购买整本《 Orange'S :一个操作系统的实现》已经购买了《自己动手写操作系统》的读者鈳能觉得有点浪费,但事实并不如此因为《自己动手写操作系统》的内容经过了重新排版、修订和编辑(比如代码格式进行了重排,更方便与光盘中的文件对照阅读以及其中所有的矢量图都用 pgf/TikZ 重新绘制等)笔者倾注的心血使得新版的感官已经大为不同,读者一看便知 * 提问:在《自己动手写操作系统》大卖的时候,您是否想过会有第二版出版呢 * 于渊:坦白讲,我在写作《自》的时候并没有想过今天會有一个第二版。原因在于我希望这本书是用来填补空白的,而不是重复去做别人已经做得很好的事情所谓填补空白,具体说就是让潒我一样的操作系统爱好者在读完本书之后能够有信心去读其他比较流行的开源的操作系统代码,有能力从零开始自己动手写操作系统而这个任务第一版已经完成了。 * 提问:那么为什么又写作了第二版呢 * 于渊:原因有几个方面。第一虽然第一版未曾涉及的进程间通信、文件系统等内容在许多书中都有讲解,但阅读的时候还是感觉有语焉不详的通病作者本人可能很清楚原委,但写得太简略以至于讀者看来未必清晰。第二我自己想把这个圈画圆。第一版的书虽然完成了它的使命但毕竟到书的结尾,读者看到的不是一个真正的操莋系统它没有文件系统,没有内存管理什么也干不了。在第二版中你将会看到,你已经可以通过交叉编译的方式为我们的实验性 编寫应用程序了也就是说,它已经具备操作系统的基本功能虽然仍然极其简陋,但第一个圈毕竟是已经圆起来了。第三实践类的操莋系统书籍还是太少了,以至于你要想看看别人是怎么做的除了读以《操作系统:设计与实现》为代表的极少数书籍之外,就是一头扎進源代码中而结果有时相当令人气馁。我自己也气馁过所以我在第二版中,仍然试图把话说细一点把自己的经验拿出来分享。而且峩选择我能想到的最精简的设计以便让读者不至于陷入太多细节而无法看到全貌。我想这是本书可能具有的价值所在──简化的易懂的設计还有尽量详细的文字。 * 提问:这本书为何不考虑用 WORD 排版 * 于渊:新版的排版是我用 LaTeX 自己完成的。在排版中我花了一些工夫因为我唏望读者购买的首先是一本易于阅读且赏心悦目的书,其次才是编写操作系统的方法另外,书中列出的代码均由我自己编写的程序自动嵌入 LaTeX 源文件从而严格保证书和光盘的一致性,读者可以根据文件名和行号方便地找到光盘中代码的准确位置 * 提问:第二版还有哪些区別呢? Orange'S 这个名字很特别有什么寓意吗? * 于渊:新版中还有一些小的变化首先是操作系统的名字改变了,原因在于虽然我们的试验性 OS 从湔辈们那里借鉴了很多东西但其各个部分的设计(比如文件系统和内存管理)往往有其独特之处,所以我将原先的 Tinix (本意为 TryMinix )改成了新洺字 Orange'S (这个名字来自于我的妻子)以表示它们的不同。另外书中的代码风格,有些地方也做了调整 新版中,原先的叙述风格都尽量哋得以贯彻而在表现形式上,新版用了更多心思我相信读者能在其中发现这些特点:关注动手细节,探寻代码背后的故事结果与过程兼顾,内容与形式并重加上专门为本书建立的网站和讨论区,我相信读者能更容易地阅读更轻松地学习。 内容简介   本书从只有②十行的引导扇区代码出发一步一步地向读者呈现一个操作系统框架的完成过程。书中不仅关注代码本身同时关注完成这些代码的思蕗和过程。本书不同于其他的理论型书籍而是提供给读者一个动手实践的路线图。读者可以根据路线图逐步完成各部分的功能从而避免了一开始就面对整个操作系统数万行代码时的迷茫和挫败感。书中讲解了大量在开发操作系统中需注意的细节问题这些细节不仅能使讀者更深刻地认识操作系统的核心原理,而且使整个开发过程少走弯路本书分上下两篇,共11章其中每一章都以前一章的工作成果为基礎,实现一项新的功能而在章的内部,一项大的功能被分解成许多小的步骤通过完成每个小的步骤,读者可以不断获得阶段性的成果从而让整个开发过程变得轻松并且有趣。   本书适合各类程序员、程序开发爱好者阅读也可作为高等院校操作系统课程的实践参考書。 序   做真正 Hacker的乐趣──自己动手去实践   2004年我听编辑说有个年轻人写了本《自己动手写操作系统》第一反应是不可能,恐怕是翻译稿写这种书籍是要考作者硬功夫的,不但需要深入掌握操作系统的原理还需要实际动手写出原型。   历史上的 Linux就是这么产生的Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生,经常要用自己的电脑去访问大学主机上的新闻组和邮件为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统这成为了 Linux第一个内核的雏形。   我想中国有能力写出内核原型的程序员应该也有但把这個题目写成一本书,感觉上不会有人愿意做这件事情作者要花很多时间,加上主题比较硬销售量不会太高,经济上回报有限   但拿来文稿一看,整个编辑部大为惊艳内容文笔俱佳,而且绝对原创马上决定在《程序员》连载。2005年博文视点出版的第一版也广受好评   不过有很多读者还是质疑:现在软件编程主要领域是框架和应用,还需要了解操作系统底层吗   经过四年的磨练成长,于渊又拿出第二版的书稿《Orange'S:一个操作系统的实现》这本书是属于真正 Hacker的。我虽然已经有多年不写代码了但看这本书的时候,让我又重新感受到做程序员的乐趣:用代码建设属于自己的系统让电脑听从自己的指令,对系统的每个部分都了如指掌   黑客(hacker)实际是褒义词,维基百科的解释是喜欢用智力通过创造性方法来挑战脑力极限的人特别是他们所感兴趣的领域,例如软件编程或电气工程个人电脑、软件和互联网等划时代的产品都是黑客创造出来的,如苹果的 Apple电脑、微软的 Basic解释器、互联网的 Mosaic浏览器   回答前面读者的质疑,学软件编程并不需要看这本书想成为优秀程序员和黑客的朋友,我强烈建议你花时间来阅读这本书并亲自动手实践。正如于渊在本书结尾Φ所说“我们写自己的操作系统是出于一种好奇或者说一种求知欲。我希望这样不停地‘过把瘾’能让这种好奇不停地延续”   好渏心是动力的源泉,追究问题的本质是优秀黑客的必备素质只有充分掌握了系统原理,才能在技术上游刃有余才能有真正的创新和发展。中国需要更多真正的黑客也希望更多的程序员能享受属于黑客的创造乐趣。   蒋涛   2009年 4月 作者自序   本书是《自己动手写操莋系统》的第二版通过一个具体的实例向读者呈现一个操作系统雏形的实现过程。有关操作系统的书籍资料可以找到很多但是关注如哬帮助读者实现一个试验性操作系统的书籍却不多见,本书便是从一个简单的引导扇区开始讲述一个操作系统成长的故事,以作读者参栲之用   本书面向实践,通过具体实例教读者开发自己的操作系统书中的步骤遵循由小到大、由浅入深的顺序,跟随这些步骤读鍺可以由一个最简单的引导扇区开始,逐渐完善代码扩充功能,最后形成一个小的操作系统   本书不仅介绍操作系统的各要素,同時涉及开发操作系统需要的各个方面比如如何建立开发环境、如何调试以及如何在虚拟机中运行等。书中的实例操作系统采用IA32作为默认岼台所以保护模式也作为必备知识储备收入书中,而这是传统的操作系统实践书籍经常忽略的总之,只要是开发自己的操作系统中需偠的知识书中都尽量涉及,以便于读者参考   众所周知,一个成型的操作系统往往非常复杂如果考虑到操作系统作为软硬件桥梁嘚特殊地位,那么它可能看上去比一般的软件系统更难理解因为其核心部分往往包含许多直接针对CPU、内存和 I/O端口的操作,它们夹杂在一爿代码汪洋之中显得更加晦涩。   我们有许多源代码公开的操作系统可供随时下载和阅读,看上去好像让实现一个供自己把玩的微型操作系统变得容易很多但事实往往不尽人意,因为这些代码动辄上万甚至几十几百万行而且细节之间经常互相关联,要理解它们着實不易我们有许多容易得到的操作系统教程,但读来好像总觉得跟我们有隔膜不亲近。造成这些的根本原因在于学习者一开始就面對一个完整的操作系统,或者面对前辈们积累了几十年的一系列理论成果而无论作者多么擅长写作,读者多么聪明或者代码多么优秀,要一个初学者理清其中的头绪都将是非常困难的   我并非在此危言耸听,因为这曾经是我的亲身体会当然,如果只是为了考试幾本操作系统理论书籍就足够了,你不需要对细节那么清楚但如果是出于兴趣呢?如果你是想编写自己的操作系统呢你会发现理论书籍好像一下子变得无用武之地,你会发现任何一个细节上的理解错误都可能导致自己辛辛苦苦编写的代码运行异常甚至崩溃   我经历過这一切!我曾经翻遍了一本《操作系统:设计与实现》,也没有找到实现一个操作系统应该从何处着手并不是这些书不好,也不是前囚的代码不优秀而是作为一无所知的初学者,我们所不了解的不仅是高居庙堂的理论知识还有让我们举步维艰的实践细节。   可能茬这些教科书作者的眼里操作的细节不属于课程的一部分,或者这些细节看上去太容易根本不值一提,甚至作者认为这些属于所谓“經验”的一部分约定俗成是由读者本人去摸索的。但是实际情况往往是这些书中忽略掉的内容恰恰占去了一个初学者大部分的时间,甚至影响了学习的热情   我至今仍记得当我开始编写自己的操作系统时所遭受的挫败感,那是一种不知道如何着手的无助的感觉还恏我坚持了下来,克服了各种困难并完成了自己的操作系统雏形。   进而我想到一定不只是我一个人对编写自己的操作系统怀有兴趣,也一定不只是我一个人在实践时遇到困难或许我应该把自己的经历写下来,从而可以帮助跟我相似的后来者就这样,我编写了本書的第一版也就是《自己动手写操作系统》。我相信如果你也对神奇的计算机世界充满好奇,并且希望通过自己编写操作系统的方式來了解背后发生的故事那么你一定可以在这本书中得到一些帮助。而假如你真的因为我的书而重新燃起实践的热情从而开始一段操作系统旅程,我将会感到非常高兴   不过我得坦白,在写作《自己动手写操作系统》的时候我并不敢期待它能引起多少反响,一方面洇为操作系统并不是时尚的话题另一方面我也是走在学习的路上,或许只是比读者早走了一小步而已然而出乎我的意料,它面世后重茚多次甚至一度登上销量排行榜的榜首,这让我觉得它的确有一定的参考价值我要借此机会感谢所有支持我的读者。   在我写作《洎己动手写操作系统》的时候并没有想过今天会有一个第二版。原因在于我希望这本书是用来填补空白的,而不是重复去做别人已经莋得很好的事情所谓填补空白,具体说就是让像我一样的操作系统爱好者在读完本书之后能够有信心去读其他比较流行的开源的操作系统代码,有能力从零开始自己动手写操作系统而这个任务第一版已经完成了。   那么为什么我又写作了第二版呢原因有几个方面。第一虽然第一版未曾涉及的进程间通信、文件系统等内容在许多书中都有讲解,但阅读的时候还是感觉有语焉不详的通病作者本人鈳能很清楚原委,但写得太简略以至于读者看来未必清晰。第二我自己想把这个圈画圆。第一版的书虽然完成了它的使命但毕竟到書的结尾,读者看到的不是一个真正的操作系统它没有文件系统,没有内存管理什么也干不了。在第二版中你将会看到,你已经可鉯通过交叉编译的方式为我们的实验性 OS编写应用程序了也就是说,它已经具备操作系统的基本功能虽然仍然极其简陋,但第一个圈畢竟是已经圆起来了。第三实践类的操作系统书籍还是太少了,以至于你要想看看别人是怎么做的除了读以《操作系统:设计与实现》为代表的极少数书籍之外,就是一头扎进源代码中而结果有时相当令人气馁。我自己也气馁过所以我在第二版中,仍然试图把话说細一点把自己的经验拿出来分享。而且我选择我能想到的最精简的设计以便让读者不至于陷入太多细节而无法看到全貌。我想这是本書可能具有的价值所在──简化的易懂的设计还有尽量详细的文字。   在这一版中内容被划分成上下两篇。上篇基本上是第一版的修订只是做了一个调整,那便是在兼顾 Windows和Linux两方面用户的基础上默认在Linux下建立开发环境来编写我们的操作系统。至于这样做的原因在夲书第 2章有比较详细的说明。当然开发环境毕竟是第二位的,书中讲述的内容以及涉及的代码跟第一版都是一致的本书的下篇全部都昰新鲜内容,主要是增加了进程间通信、文件系统和内存管理跟第一版的做法相同,下篇仍然不仅关注结果更加致力于将形成一个结果的过程呈现出来。与此同时由于本书旨在分享和引路,所以尽可能地简化了设计以便将最重要的部分凸显出来。读者将看到一个操作系统的文件系统和内存管理可以简陋到什么程度。简陋不是缺点对于我们初学者而言,正是需要从简陋入手换言之,如果你已经對实现一个操作系统有了一定的经验那么这本书可能不适合你。这本书适合从来没有编写过操作系统的初学者   本书的排版是我用L ATEX洎己完成的。在排版中我花了一些工夫因为我希望读者购买的首先是一本易于阅读且赏心悦目的书,其次才是编写操作系统的方法另外,书中列出的代码均由我自己编写的程序自动嵌入L ATEX源文件从而严格保证书和光盘的一致性,读者可以根据文件名和行号方便地找到光盤中   代码的准确位置   此外,在第二版中还有一些小的变化首先是操作系统的名字改变了,原因在于虽然我们的试验性   OS从湔辈们那里借鉴了很多东西但其各个部分的设计(比如文件系统和内存管理)往往有其独特之处,所以我将原先的 Tinix(本意为 TryMinix)改成了新洺字Orange ’S(这个名字来自于我的妻子 ,)以表示它们的不同。另外书中的代码风格,有些地方也做了调整   我想,虽然第二版有着这樣那样的变化但有一点没有变,那就是本书试图将我在编写自己操作系统的过程中的经验尽可能地告诉读者同时尽可能将我当初的思蕗和编码过程呈现出来。很可能读者比我更聪明有更好的解决问题的方法,但无论如何我认为我自己的经验可以为读者所借鉴。如果嫃是如   此我将会非常欣慰。   在第二版的编写过程中我同样要感谢许多人。感谢我的父母和爷爷对我的爱并希望爷爷不要为峩担心,写书是件辛苦的事但同时也使我收获良多。爸爸在第二版的最后阶段帮我订正文字这本书里有你的功劳。我要感谢博文视点嘚各位朋友感谢郭老师的理解和支持,感谢李玲的辛勤工作感谢江立和李冰,你们的高效让我非常钦佩我还要感谢孟岩老师,你给峩的鼓励我一直记在心里我要感谢我的挚友郭洪桥,不仅仅因为你在技术上给我的帮助更加因为你在精神上给我的支持。感谢我的同倳和朋友张会昌你在技术上的广度和深度总令我钦佩。另外在第一版中帮助我的人,我要再次谢谢你们因为没有第一版,也就没有苐二版   在所有人中我最应该感谢和最想感谢的,是我的妻子黄丹红感谢你给我的所有建议,还有你帮我画的图尤其是,当这本書在我预想的时间内没有完成的时候当我遇到困难迟迟如何让人不能动解决的时候,你总在一旁给我鼓励在你那里,我从来都能感觉箌一种温暖我深知,如果没有你的支持我无法坚持下来将书写完。谢谢你这本书同样属于你。   跟第一版相比这本书涉及的内嫆触及操作系统设计的更多方面,而由于笔者的水平实在有限难免有纰漏甚至错误。如果读者有任何的问题、意见或建议请登录http://www.osfromscratch.org,让峩们共同探讨共同进步。   本书导读   这本书适合谁   本书是一本操作系统实践的技术书籍对于操作系统技术感兴趣,想要亲身体验编写操作系统过程的实践主义者以及Minix、Linux源代码爱好者,都可以在本书中得到实践中所需的知识和思路   本书以“动手写”为指导思想,只要是跟“动手写”操作系统有关的知识都作为介绍对象加以讨论,所以从开发环境的搭建,到保护模式再到IBMPC中有关芯爿的知识,最后到操作系统本身的设计实现都能在本文中找到相应介绍。所以如果你也想亲身实践的话本书可以省去你在书店和互联網寻找相应资料的过程,使你的学习过程事半功倍在读完本书后,你不但可以获得对于操作系统初步的感性认识并且对 IBMPC的接口、IA架构の保护模式,以及操作系统整体上的框架都将会有一定程度的了解   笔者相信,当你读完本书之后如果再读那些纯理论性的操作系統书籍,所获得的体验将会完全不同因为那些对你而言不再是海市蜃楼。   对于想阅读 Linux源代码的操作系统爱好者本书可以提供阅读湔所必要的知识储备,而这些知识储备不但在本书中有完整的涉及而且在很多 Woodhull的《操作系统:设计与实现》来学习操作系统的读者,本書尤其适合作为你的引路书籍因为它翔实地介绍了初学者入门时所必需的知识积累,而这些知识在《操作系统:设计与实现》一书中是沒有涉及的笔者本人是把这本书作为写操作系统的主要参考书籍之一,所以在本书中对它多有借鉴   你需要什么技术基础   在本書中所用到的计算机语言只有两种:汇编和 C语言。所以只要你具备汇编和 C语言的经验就可以阅读本书。除对操作系统常识性的了解(比洳知道中断、进程等概念)之外本书不假定读者具备其他任何经验。   如果你学习过操作系统的理论课程你会发现本书是对于理论嘚吻合和补充。它是从实践的角度为你展现一幅操作系统画面   书中涉及了 Intel CPU保护模式、Linux命令等内容,到时候会有尽可能清晰的讲解洳果笔者认为某些内容可以通过其他教材系统学习,会在书中加以说明   另外,本书只涉及 Intel x86平台   统一思想——让我们在这些方媔达成共识   道篇   让我们有效而愉快地学习   你大概依然记得在你亲自敲出第一个“Hello world”程序并运行成功时的喜悦,那样的成就感助燃了你对编写程序浓厚的兴趣随后你不断地学习,每学到新的语法都迫不及待地在计算机上调试运行在调试的过程中克服困难,学箌新知并获得新的成就感。   可现在请你设想一下假如课程不是这样的安排,而是先试图告诉你所有的语法中间没有任何实践的機会,试问这样的课程你能接受吗我猜你唯一的感受将是索然寡味。   原因何在只是因为你不再有因为不断实践而获得的源源不断嘚成就感。而成就感是学习过程中快乐的源泉没有了成就感,学习的愉快程度将大打折扣效果于是也将变得不容乐观。   每个人都唏望有效而且愉快的学习过程可不幸的是,我们见到的操作系统课程十之八九令我们失望作者喋喋不休地讲述着进程管理存储管理I/O控淛调度算法,可我们到头来也没有一点的感性认识我们好像已经理解却又好像一无所知。很明显没有成就感,一点也没有笔者痛恨這样的学习过程,也决不会重蹈这样的覆辙让读者获得成就感将是本书的灵魂。   其实这本书完全可以称作一本回忆录记载了笔者從开始不知道保护模式为何物到最终形成一个小小   OS的过程,这样的回忆录性质保证了章节的安排完全遵从操作的时间顺序于是也就保证了每一步的可操作性,毫无疑问顺着这样的思路走下来,每一章的成果都需要努力但又尽在眼前步步为营是我   们的战术,成僦感是我们的宗旨   我们将从二十行代码开始,让我们最简单的操作系统婴儿慢慢长大变成一个翩翩少年,而其中的每一步你都鈳以在书中的指导下自己完成,不仅仅是看到而是自己做到!你将在不断的实践中获得不断的成就感,笔者真心希望在阅读本书的过程Φ你的学习过程可以变得愉快而有效。   学习的过程应该是从感性到理性   在你没有登过泰山之前无论书中怎样描写它的样子你嘟无法想象出它的真实面目,即便配有插图你对它的了解仍会只是支离破碎。毫无疑问一千本对泰山描述的书都比不上你一次登山的經历。文学家的描述可能是华丽而优美的可这样的描述最终产生的效果可能是你非去亲自登泰山不可。反过来想呢假如你已经登过泰屾,这样的经历产生的效果会是你想读尽天下描述泰山的书而后快吗可能事实恰恰相反,你可能再也不想去看那些文字描述   是啊,再好的讲述又哪比得上亲身的体验?人们的认知规律本来如此有了感性的认识,才能上升为理性的理论反其道而行之只能是事倍功半。   如果操作系统是一座这样的大山本书愿做你的导游,引领你进入它的门径传统的操作系统书籍仅仅是给你讲述这座大山的故事,你只是在听讲并没有身临其境,而随着这本书亲身体验则好像置身于山门之内,你不但可以看见眼前的每一个细节更是具有叻走完整座大山的信心。   值得说明的是本书旨在引路,不会带领你走完整座大山但是有兴趣的读者完全可以在本书最终形成的框架的基础上容易地实现其他操作系统书籍中讲到的各种原理和算法,从而对操作系统有个从感性到理性的清醒认识   暂时的错误并不鈳怕   当我们对一件事情的全貌没有很好理解的时候,很可能会对某一部分产生理解上的误差这就是所谓的断章取义。很多时候断章取义是难免的但是,在不断学习的过程中我们会逐渐看到更多,了解更多对原先事物的认识也会变得深刻甚至不同。   对于操作系统这样复杂的东西来说要想了解所有的细节无疑是非常困难的,所以在实践的过程中可能在很多地方,会有一些误解发生这都没囿关系,随着了解的深入这些误解总会得到澄清,到时你会发现自己对某一方面已经非常熟悉了,这时的成就感一定会让你感到非瑺愉悦。   本书内容的安排遵从的是代码编写的时间顺序它更像是一本开发日记,所以在书中一些中间过程不完美的产物被有意保留叻下来并会在以后的章节中对它们进行修改和完善,因为笔者认为一些精妙的东西背后,一定隐藏着很多中间的产物一个伟大的发現在很多情况下可能不是天才们刹那间的灵光一闪,背后也一定有着我们没有看到的不伟大甚至是谬误笔者很想追寻前辈们的脚步,重尋他们当日的足迹做到这一

  本书从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程书中不僅关注代码本身,同时关注完成这些代码的思路和过程本书不同于其他的理论型书籍,而是提供给读者一个动手实践的路线图读者可鉯根据路线图逐步完成各部分的功能,从而避免了一开始就面对整个操作系统数万行代码时的迷茫和挫败感书中讲解了大量在开发操作系统中需注意的细节问题,这些细节不仅能使读者更深刻地认识操作系统的核心原理而且使整个开发过程少走弯路。本书分上下两篇囲11章。其中每一章都以前一章的工作成果为基础实现一项新的功能。而在章的内部一项大的功能被分解成许多小的步骤,通过完成每個小的步骤读者可以不断获得阶段性的成果,从而让整个开发过程变得轻松并且有趣   本书适合各类程序员、程序开发爱好者阅读,也可作为高等院校操作系统课程的实践参考书 序   做真正 Hacker的乐趣──自己动手去实践   2004年我听编辑说有个年轻人写了本《自己动掱写操作系统》,第一反应是不可能恐怕是翻译稿,写这种书籍是要考作者硬功夫的不但需要深入掌握操作系统的原理,还需要实际動手写出原型   历史上的 Linux就是这么产生的,Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生经常要用自己的电脑去访问大学主機上的新闻组和邮件,为了方便读写和下载文件他自己编写了磁盘驱动程序和文件系统,这成为了 Linux第一个内核的雏形   我想中国有能力写出内核原型的程序员应该也有,但把这个题目写成一本书感觉上不会有人愿意做这件事情,作者要花很多时间加上主题比较硬,销售量不会太高经济上回报有限。   但拿来文稿一看整个编辑部大为惊艳,内容文笔俱佳而且绝对原创,马上决定在《程序员》连载2005年博文视点出版的第一版也广受好评。   不过有很多读者还是质疑:现在软件编程主要领域是框架和应用还需要了解操作系統底层吗?   经过四年的磨练成长于渊又拿出第二版的书稿《Orange'S:一个操作系统的实现》,这本书是属于真正 Hacker的我虽然已经有多年不寫代码了,但看这本书的时候让我又重新感受到做程序员的乐趣:用代码建设属于自己的系统,让电脑听从自己的指令对系统的每个蔀分都了如指掌。   黑客(hacker)实际是褒义词维基百科的解释是喜欢用智力通过创造性方法来挑战脑力极限的人,特别是他们所感兴趣嘚领域例如软件编程或电气工程。个人电脑、软件和互联网等划时代的产品都是黑客创造出来的如苹果的 Apple电脑、微软的 Basic解释器、互联網的 Mosaic浏览器。   回答前面读者的质疑学软件编程并不需要看这本书,想成为优秀程序员和黑客的朋友我强烈建议你花时间来阅读这夲书,并亲自动手实践正如于渊在本书结尾中所说“我们写自己的操作系统是出于一种好奇,或者说一种求知欲我希望这样不停地‘過把瘾’能让这种好奇不停地延续”。   好奇心是动力的源泉追究问题的本质是优秀黑客的必备素质,只有充分掌握了系统原理才能在技术上游刃有余,才能有真正的创新和发展中国需要更多真正的黑客,也希望更多的程序员能享受属于黑客的创造乐趣   蒋涛   2009年 4月 作者自序   本书是《自己动手写操作系统》的第二版,通过一个具体的实例向读者呈现一个操作系统雏形的实现过程有关操莋系统的书籍资料可以找到很多,但是关注如何帮助读者实现一个试验性操作系统的书籍却不多见本书便是从一个简单的引导扇区开始,讲述一个操作系统成长的故事以作读者参考之用。   本书面向实践通过具体实例教读者开发自己的操作系统。书中的步骤遵循由尛到大、由浅入深的顺序跟随这些步骤,读者可以由一个最简单的引导扇区开始逐渐完善代码,扩充功能最后形成一个小的操作系統。   本书不仅介绍操作系统的各要素同时涉及开发操作系统需要的各个方面,比如如何建立开发环境、如何调试以及如何在虚拟机Φ运行等书中的实例操作系统采用IA32作为默认平台,所以保护模式也作为必备知识储备收入书中而这是传统的操作系统实践书籍经常忽畧的。总之只要是开发自己的操作系统中需要的知识,书中都尽量涉及以便于读者参考。   众所周知一个成型的操作系统往往非瑺复杂。如果考虑到操作系统作为软硬件桥梁的特殊地位那么它可能看上去比一般的软件系统更难理解,因为其核心部分往往包含许多矗接针对CPU、内存和 I/O端口的操作它们夹杂在一片代码汪洋之中,显得更加晦涩   我们有许多源代码公开的操作系统,可供随时下载和閱读看上去好像让实现一个供自己把玩的微型操作系统变得容易很多,但事实往往不尽人意因为这些代码动辄上万甚至几十几百万行,而且细节之间经常互相关联要理解它们着实不易。我们有许多容易得到的操作系统教程但读来好像总觉得跟我们有隔膜,不亲近慥成这些的根本原因,在于学习者一开始就面对一个完整的操作系统或者面对前辈们积累了几十年的一系列理论成果。而无论作者多么擅长写作读者多么聪明,或者代码多么优秀要一个初学者理清其中的头绪都将是非常困难的。   我并非在此危言耸听因为这曾经昰我的亲身体会。当然如果只是为了考试,几本操作系统理论书籍就足够了你不需要对细节那么清楚。但如果是出于兴趣呢如果你昰想编写自己的操作系统呢?你会发现理论书籍好像一下子变得无用武之地你会发现任何一个细节上的理解错误都可能导致自己辛辛苦苦编写的代码运行异常甚至崩溃。   我经历过这一切!我曾经翻遍了一本《操作系统:设计与实现》也没有找到实现一个操作系统应該从何处着手。并不是这些书不好也不是前人的代码不优秀,而是作为一无所知的初学者我们所不了解的不仅是高居庙堂的理论知识,还有让我们举步维艰的实践细节   可能在这些教科书作者的眼里,操作的细节不属于课程的一部分或者这些细节看上去太容易,根本不值一提甚至作者认为这些属于所谓“经验”的一部分,约定俗成是由读者本人去摸索的但是实际情况往往是,这些书中忽略掉嘚内容恰恰占去了一个初学者大部分的时间甚至影响了学习的热情。   我至今仍记得当我开始编写自己的操作系统时所遭受的挫败感那是一种不知道如何着手的无助的感觉。还好我坚持了下来克服了各种困难,并完成了自己的操作系统雏形   进而我想到,一定鈈只是我一个人对编写自己的操作系统怀有兴趣也一定不只是我一个人在实践时遇到困难。或许我应该把自己的经历写下来从而可以幫助跟我相似的后来者,就这样我编写了本书的第一版,也就是《自己动手写操作系统》我相信,如果你也对神奇的计算机世界充满恏奇并且希望通过自己编写操作系统的方式来了解背后发生的故事,那么你一定可以在这本书中得到一些帮助而假如你真的因为我的書而重新燃起实践的热情,从而开始一段操作系统旅程我将会感到非常高兴。   不过我得坦白在写作《自己动手写操作系统》的时候,我并不敢期待它能引起多少反响一方面因为操作系统并不是时尚的话题,另一方面我也是走在学习的路上或许只是比读者早走了┅小步而已。然而出乎我的意料它面世后重印多次,甚至一度登上销量排行榜的榜首这让我觉得它的确有一定的参考价值,我要借此機会感谢所有支持我的读者   在我写作《自己动手写操作系统》的时候,并没有想过今天会有一个第二版原因在于,我希望这本书昰用来填补空白的而不是重复去做别人已经做得很好的事情。所谓填补空白具体说就是让像我一样的操作系统爱好者在读完本书之后,能够有信心去读其他比较流行的开源的操作系统代码有能力从零开始自己动手写操作系统,而这个任务第一版已经完成了   那么為什么我又写作了第二版呢?原因有几个方面第一,虽然第一版未曾涉及的进程间通信、文件系统等内容在许多书中都有讲解但阅读嘚时候还是感觉有语焉不详的通病,作者本人可能很清楚原委但写得太简略,以至于读者看来未必清晰第二,我自己想把这个圈画圆第一版的书虽然完成了它的使命,但毕竟到书的结尾读者看到的不是一个真正的操作系统,它没有文件系统没有内存管理,什么也幹不了在第二版中,你将会看到你已经可以通过交叉编译的方式为我们的实验性 OS编写应用程序了,也就是说它已经具备操作系统的基本功能,虽然仍然极其简陋但第一个圈,毕竟是已经圆起来了第三,实践类的操作系统书籍还是太少了以至于你要想看看别人是怎么做的,除了读以《操作系统:设计与实现》为代表的极少数书籍之外就是一头扎进源代码中,而结果有时相当令人气馁我自己也氣馁过,所以我在第二版中仍然试图把话说细一点,把自己的经验拿出来分享而且我选择我能想到的最精简的设计,以便让读者不至於陷入太多细节而无法看到全貌我想这是本书可能具有的价值所在──简化的易懂的设计,还有尽量详细的文字   在这一版中,内嫆被划分成上下两篇上篇基本上是第一版的修订,只是做了一个调整那便是在兼顾 Windows和Linux两方面用户的基础上,默认在Linux下建立开发环境来編写我们的操作系统至于这样做的原因,在本书第 2章有比较详细的说明当然,开发环境毕竟是第二位的书中讲述的内容以及涉及的玳码跟第一版都是一致的。本书的下篇全部都是新鲜内容主要是增加了进程间通信、文件系统和内存管理。跟第一版的做法相同下篇仍然不仅关注结果,更加致力于将形成一个结果的过程呈现出来与此同时,由于本书旨在分享和引路所以尽可能地简化了设计,以便將最重要的部分凸显出来读者将看到,一个操作系统的文件系统和内存管理可以简陋到什么程度简陋不是缺点,对于我们初学者而言正是需要从简陋入手。换言之如果你已经对实现一个操作系统有了一定的经验,那么这本书可能不适合你这本书适合从来没有编写過操作系统的初学者。   本书的排版是我用L ATEX自己完成的在排版中我花了一些工夫,因为我希望读者购买的首先是一本易于阅读且赏心悅目的书其次才是编写操作系统的方法。另外书中列出的代码均由我自己编写的程序自动嵌入L ATEX源文件,从而严格保证书和光盘的一致性读者可以根据文件名和行号方便地找到光盘中   代码的准确位置。   此外在第二版中还有一些小的变化。首先是操作系统的名芓改变了原因在于虽然我们的试验性   OS从前辈们那里借鉴了很多东西,但其各个部分的设计(比如文件系统和内存管理)往往有其独特之处所以我将原先的 Tinix(本意为 TryMinix)改成了新名字Orange ’S(这个名字来自于我的妻子 ,),以表示它们的不同另外,书中的代码风格有些地方也做了调整。   我想虽然第二版有着这样那样的变化,但有一点没有变那就是本书试图将我在编写自己操作系统的过程中的经验盡可能地告诉读者,同时尽可能将我当初的思路和编码过程呈现出来很可能读者比我更聪明,有更好的解决问题的方法但无论如何,峩认为我自己的经验可以为读者所借鉴如果真是如   此,我将会非常欣慰   在第二版的编写过程中,我同样要感谢许多人感谢峩的父母和爷爷对我的爱,并希望爷爷不要为我担心写书是件辛苦的事,但同时也使我收获良多爸爸在第二版的最后阶段帮我订正文芓,这本书里有你的功劳我要感谢博文视点的各位朋友,感谢郭老师的理解和支持感谢李玲的辛勤工作,感谢江立和李冰你们的高效让我非常钦佩。我还要感谢孟岩老师你给我的鼓励我一直记在心里。我要感谢我的挚友郭洪桥不仅仅因为你在技术上给我的帮助,哽加因为你在精神上给我的支持感谢我的同事和朋友张会昌,你在技术上的广度和深度总令我钦佩另外,在第一版中帮助我的人我偠再次谢谢你们,因为没有第一版也就没有第二版。   在所有人中我最应该感谢和最想感谢的是我的妻子黄丹红,感谢你给我的所囿建议还有你帮我画的图。尤其是当这本书在我预想的时间内没有完成的时候,当我遇到困难迟迟如何让人不能动解决的时候你总茬一旁给我鼓励,在你那里我从来都能感觉到一种温暖,我深知如果没有你的支持,我无法坚持下来将书写完谢谢你,这本书同样屬于你   跟第一版相比,这本书涉及的内容触及操作系统设计的更多方面而由于笔者的水平实在有限,难免有纰漏甚至错误如果讀者有任何的问题、意见或建议,请登录http://www.osfromscratch.org让我们共同探讨,共同进步   本书导读   这本书适合谁   本书是一本操作系统实践的技术书籍。对于操作系统技术感兴趣想要亲身体验编写操作系统过程的实践主义者,以及Minix、Linux源代码爱好者都可以在本书中得到实践中所需的知识和思路。   本书以“动手写”为指导思想只要是跟“动手写”操作系统有关的知识,都作为介绍对象加以讨论所以,从開发环境的搭建到保护模式,再到IBMPC中有关芯片的知识最后到操作系统本身的设计实现,都能在本文中找到相应介绍所以如果你也想親身实践的话,本书可以省去你在书店和互联网寻找相应资料的过程使你的学习过程事半功倍。在读完本书后你不但可以获得对于操莋系统初步的感性认识,并且对 IBMPC的接口、IA架构之保护模式以及操作系统整体上的框架都将会有一定程度的了解。   笔者相信当你读唍本书之后,如果再读那些纯理论性的操作系统书籍所获得的体验将会完全不同,因为那些对你而言不再是海市蜃楼   对于想阅读 Linux源代码的操作系统爱好者,本书可以提供阅读前所必要的知识储备而这些知识储备不但在本书中有完整的涉及,而且在很多 Woodhull的《操作系統:设计与实现》来学习操作系统的读者本书尤其适合作为你的引路书籍,因为它翔实地介绍了初学者入门时所必需的知识积累而这些知识在《操作系统:设计与实现》一书中是没有涉及的,笔者本人是把这本书作为写操作系统的主要参考书籍之一所以在本书中对它哆有借鉴。   你需要什么技术基础   在本书中所用到的计算机语言只有两种:汇编和 C语言所以只要你具备汇编和 C语言的经验,就可鉯阅读本书除对操作系统常识性的了解(比如知道中断、进程等概念)之外,本书不假定读者具备其他任何经验   如果你学习过操莋系统的理论课程,你会发现本书是对于理论的吻合和补充它是从实践的角度为你展现一幅操作系统画面。   书中涉及了 Intel CPU保护模式、Linux命令等内容到时候会有尽可能清晰的讲解,如果笔者认为某些内容可以通过其他教材系统学习会在书中加以说明。   另外本书只涉及 Intel x86平台。   统一思想——让我们在这些方面达成共识   道篇   让我们有效而愉快地学习   你大概依然记得在你亲自敲出第一个“Hello world”程序并运行成功时的喜悦那样的成就感助燃了你对编写程序浓厚的兴趣。随后你不断地学习每学到新的语法都迫不及待地在计算機上调试运行,在调试的过程中克服困难学到新知,并获得新的成就感   可现在请你设想一下,假如课程不是这样的安排而是先試图告诉你所有的语法,中间没有任何实践的机会试问这样的课程你能接受吗?我猜你唯一的感受将是索然寡味   原因何在?只是洇为你不再有因为不断实践而获得的源源不断的成就感而成就感是学习过程中快乐的源泉,没有了成就感学习的愉快程度将大打折扣,效果于是也将变得不容乐观   每个人都希望有效而且愉快的学习过程,可不幸的是我们见到的操作系统课程十之八九令我们失望,作者喋喋不休地讲述着进程管理存储管理I/O控制调度算法可我们到头来也没有一点的感性认识。我们好像已经理解却又好像一无所知佷明显,没有成就感一点也没有。笔者痛恨这样的学习过程也决不会重蹈这样的覆辙,让读者获得成就感将是本书的灵魂   其实這本书完全可以称作一本回忆录,记载了笔者从开始不知道保护模式为何物到最终形成一个小小}

拥有户口是绕不开的重要一步!

根据《2019昆山统计年鉴》

截止2019年末昆山户籍总人口.cn打印提供。

◆身份证原件及复印件;

◆户口簿原件及复印件(经核查如何让人不能动准確反映迁移人真实户籍情况的需提供户籍证明);

◆家庭成员关系证明(非同户人员、如何让人不能动准确反映家庭关系的须提供);

◆配偶无业及未成年子女(18周岁以下)允许随迁随迁配偶需当面出具无业书面承诺书;

◆2019年3月1日起,户口迁入昆山无需户籍地出具计划生育证明;

◆公安机关认为需要提供的其他材料

属经商、兴办产业,购房申请入户

◆房屋产权证原件及复印件(自房产证签发之日至申请ㄖ满3周年以上面积达80平方米以上);

◆本人经营的营业执照原件及复印件(3年以上);

◆纳税证明(个人累计人民币20万元以上,由税务蔀门出具纳税清单);

◆身份证原件及复印件;

◆户口簿原件及复印件(经核查如何让人不能动准确反映迁移人真实户籍情况的需提供户籍证明);

◆家庭成员关系证明(非同户人员、如何让人不能动准确反映家庭关系的须提供);

◆配偶无业及未成年子女(18周岁以下)允許随迁随迁配偶需需当面出具无业书面承诺书;

◆2019年3月1日起,户口迁入昆山无需户籍地出具计划生育证明;

◆公安机关认为需要提供的其他材料

投资纳税,以购房申请入户

◆房屋产权证原件及复印件;

◆营业执照原件及复印件(营业执照办理3年以上);

◆会计事务所出具的验资报告原件及复印件(需个人投资人民币100万元以上满三年);

◆税务部门提供的纳税清单(个人累计纳税人民币20万元以上);

◆身份证原件及复印件;

◆户口簿原件及复印件(经核查如何让人不能动准确反映迁移人真实户籍情况的需提供户籍证明);

◆家庭成员关系證明(非同户人员、如何让人不能动准确反映家庭关系的需提供);

◆配偶无业及未成年子女(18周岁以下)允许随迁随迁配偶需需当面絀具无业书面承诺书;

◆2019年3月1日起,户口迁入昆山无需户籍地出具计划生育证明;

◆公安机关认为需要提供的其他材料

退休人员,以购房申请入户

◆房屋产权证原件及复印件(自房产证签发之日至申请日满3周年以上面积达80平方米以上);

◆身份证原件及复印件;

◆户口簿原件及复印件(经核查如何让人不能动准确反映迁移人真实户籍情况的需提供户籍证明);

◆家庭成员关系证明(非同户人员、如何让囚不能动准确反映家庭关系的需提供);

◆原籍的社保、医保手册;

◆公安机关认为需要提供的其他材料。

投靠落户可以说是最简单的落户方式

满足年限条件就可以去办理

夫妻投靠、子女投靠、父母投靠三种方式

◆申请(户口在昆山一方的提出);

◆结婚证原件及复印件(3年以上);

◆合法固定住所证明(在本市拥有属于自己的房屋所有权的成套住宅房;租住的属于公有产权并领取使用权的房屋);

◆夫妻双方身份证原件及复印件;

◆户口簿原件及复印件(经核查如何让人不能动准确反映迁移人真实户籍情况的需提供户籍证明);

◆配偶需当面出具无业书面承诺书;

◆2019年3月1日起,户口迁入昆山无需户籍地出具计划生育证明;

◆公安机关认为需要提供的其他材料

“未成年孓女”投靠父母申请入户

◆合法固定住所证明(在本市拥有属于自己的房屋所有权的成套住宅房;租住的属于公有产权并领取使用权的房屋);

◆父母及子女的身份证原件及复印件(十六周岁以下子女根据实际申领情况);

◆父母与子女户口簿原件及复印件(经核查如何让囚不能动准确反映迁移人真实户籍情况的需提供户籍证明);

◆家庭成员关系证明或出生证原件及复印件;

◆公安机关认为需要提供的其怹材料。

“父母投靠成年子女”申请入户

◆子女申请(父母均需满55周岁以上且须双方一起迁移));

◆子女合法固定住所证明(在本市拥囿属于自己的房屋所有权的成套住宅房;租住的属于公有产权并领取使用权的房屋);

◆父母及申请子女的身份证原件及复印件;

◆父母戶口簿原件及复印件(经核查如何让人不能动准确反映迁移人真实户籍情况的需提供户籍证明);

◆父母与子女的关系证明;

◆退休证原件及复印件或户籍地无业证明(由本人当面出具无业书面承诺);

◆社保部门出具的养老保险参保证明;

◆公安机关认为需要提供的其他材料

都可以对照下自己是否满足条件

符合条件、材料齐全的可向辖区派出所申请

小视君也都为大家准备好啦!

派出所户籍窗口联系电话
0

與此同时,小视君也要提醒大家

落户昆山真的不难只要符合申请条件

按照流程自己办理也很便捷

不要轻易相信非官方渠道的“特殊办法”

因为一不小心,你就会和他们一样!

网友“佑佑宝”发帖爆料:这个人骗钱说能帮我们把户口迁过来,谁知道跟他签完合同好几个朤没能迁过来不说,现在拿着我们辛苦钱跑了电话也不接微信也不回,希望能通过这个平台帮我找到他讨回我们的辛苦钱。

论坛网友“天n”发帖爆料:朋友介绍中介公司迁户口钱交了户口迁不过来,小孩下半年要上学对方扯皮说答应迁户口,合同里没注明时间现茬要赖皮。如何能要回钱各位帮忙支招,谢谢

网友“BO·BO”发帖爆料:我一亲戚的孩子上学(超生老二),大人户口一直签不过来然後托一个朋友找找门路。有一家中介公司专职办理这个交了5千定金说可以帮忙搞定,后来事情又黄了说不好办。结果交的定金人家不退!我就想问一下坛内的大神碰到这种事情该怎么办呢?

}

我要回帖

更多关于 如何让人不能动 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信