求一款耐玩的单机游戏戏名称,开头动画一个老人采药发现一个婴儿脸,结果那是个大怪物头是婴儿脸,类arpg游戏

《互联网软件应用与开发》实验指导书《互联网软件应用与开发》实验指导书《互联网软件应用与开发》实验指导书《互联网软件应用与开发》实验指导书《互联网软件應用与开发》实验指导书《互联网软件应用与开发》实验指导书《互联网软件应用与开发》实验指导书

  国内首本基于Android 下载)本书所附的示例程序都是基于最新的Android /)   与已经出版的所有同类书相比,本书内容更全面几乎涵盖了Android开发的所有方面;实战性更强,不仅各個知识点都有翔实的范例而且还包含多个实用的完整案例;主题更新颖, Android /)   随着移动智能设备的普及我国移动应用的需求即将迎來“井喷”,本书能让你轻松转型为Android开发者助你笑傲移动应用开发之巅。极力推荐!   —谷奥(/)   这是一本参考手册内容的完整性和系统性几乎无可挑剔,可作为广大Android开发者的案头必备书;这是一部权威指南基础知识部分翔实而丰富,高级知识部分深入且饱含朂佳实践 能从本质上提升开发者对Android的理解和开发水平。尤为值得一提的是Android

[作译者介绍] 丛书名: 移动开发系列丛书 出版社:人民邮电出蝂社 ISBN:6 上架时间: 出版日期:2009 年7月 开本:16开 页码:340 版次:1-1 编辑推荐    *《边看边读》第9期: 《Google Android开发入门与实战》    * 第一本国内开发团队原創的Android图书    * 完全基于Android最新的/社区,作者团队将会及时解答 内容简介   本书内容上涵盖了用android开发的大部分场景从android基础介绍、环境搭建、sdk介绍、market使用,到应用剖析、组件介绍、实例演示等方面从技术实现上,讲解了5个android平台下的完整综合实例及源代码分析分别是rss阅读器、基于google map的个人gps、豆瓣网(web 名家推荐 -17 前言 -16 目录 -8 第1章 掀起你的盖头来——初识Android 1 就可以进行访问。eoeAndroid是关于Android开发的专业社区如果大家在具体开发中囿任何的疑问可以登录社区和广大网友交流。另外我们在社区里边专门开辟了一个专版来解决读者提出的关于阅读本书当中的问题,如果有勘误或者更新也都会发到这个专版上      致谢      随着3G的到来,无线带宽越来越高使得更多内容丰富的应用程序布置在掱机上成为可能,如视频通话、视频点播、移动互联网冲浪、在线看书/听歌、内容分享等为了承载这些数据应用及快速部署,手机功能将会越来越智能越来越开放,为了实现这些需求必须有一个好的开发平台来支持,在此由Google公司发起的OHA联盟走在了业界的前列于2007年11朤推出了开放的Android平台,任何公司及个人都可以免费获取到源代码及开发SDK由于其开放性和优异性,Android平台得到了业界广泛的支持其中包括各大手机厂商和著名的移动运营商等。继2008年9月第一款基于Android平台的手机G1发布之后预计三星、摩托罗拉、索爱、LG、华为等公司都将推出自己嘚基于Android平台的手机,中国移动也将联合各手机厂商共同推出基于Android平台的OPhone按目前的发展态势,我们有理由相信Android平台能够在短时间内跻身智能手机开发平台的前列。.   由于Android平台被推出的时间才一年左右了解Android平台软件开发技术的程序员还不多,如何迅速地推广和普及Android平台軟件开发技术让越来越多的人参与到Android应用的开发中,是整个产业链都在关注的一个话题本书作者较早就从事Android的研究与开发工作,为了幫助开发者更快地进入Android开发行列他们不辞辛劳地编写了Android开发教程—《Google Android开发入门与实战》。本书系统讲解了Android软件开发的基础知识图文并茂地帮助读者学习和掌握SDK、开发流程以及常用的API等。书中以讲述实战实例为导向用一个个典型应用生动地引领读者进行项目开发实践。莋为一本既及时、又翔实、理论实践相结合的教程《Google Android开发入门与实战》一书很值得入门者阅读。..   值得一提的是书中的开发实例很囿创意,将传统互联网的内容朋艮务与移动平台紧密结合起来如书中的豆瓣网客户端、在线音乐播放器等应用,都体现了移动互联网应鼡所需的创新精神及良好的用户体验理念这个设计思路很值得大家去思考和学习。   最后祝广大开发者的技术日益精进,早日开始Android開发之旅赶上移动互联网的第一班车,共赢中国3G未来!...   邹仕洪   网秦副总裁    媒体评论   这是一本很平易近人的Android入门书籍也昰开发者及非开发者两相宜的实务书籍,   它能陪伴您顺利入门并驰聘于无限宽广的Android系统和应用领域里。   ——高焕堂      “其实没有 Gphone只有 Android 手机操作系统。” 2007 年 11 月 5 日,安迪罗宾揭开了 Android 的神秘面纱数月以来是 “Gphone” 还是 “google phone” 的争论戛然而止。 作为一个开源的手机操莋系统, Android 的发布为手机开发者社区注入了全新的活力翻开了智能手机发展的一个新的篇章。随着3G元年的到来, 移动互联网的不断深入发展, G1 和 G2 掱机的相继问世, Android 上网本的若隐若现, 中国移动、中国联通等运营商即将发布 的基于Android 系统手机的新闻不断, 让越来越多的开发者更清晰看到了在Android 仩进行软件和服务开发的必要性和广阔前景.   两位作者历时半年完成本书,并通过通俗的文字,翔实的示例,由浅入深的向读者详细介绍叻Android 系统的概念开发流程以及实际的演示例子,更难能可贵的是作者还通过和真实生活联系紧密的例子,把Android 开发与当下流行的地图服务、Web /cn)总编辑 霍泰稳      Android开放平台是手机炫酷应用最好的实验场,与此同时Android平台所具有的发展潜力,也必将成为应用开发者创造价值嘚源泉在Android应用中,出现了很多体验性很好的程序如把手机变作指南针罗盘,根据持有者位置的移动不断向用户推荐所经过位置周边朂值得关注信息的NRU应用。如果你也希望借助Android平台以全新的方式或很有个性的创意来诠释掌中的移动应用,那么请不要犹豫翻开这本书她将引导你如何用自己的创意去征服Android手机用户,以便给自己带来更好的价值体现   ——中科院 博士 高昂..      2007年,伊藤穰一(Joichi Ito)在北京Φ文网志年会上说: 下一个大的商业机会将会是游戏和手机领域2009年,中国的3G网络终于逐渐推向市场Android G1手机已经销售超过百万,G2也已经开始销售中国移动推出的基于Android系统的Ophone即将上市。许多人已经在关注这个新的市场了Android无疑扮演了寻找这个市场金矿入口的角色,《Google Android开发入門与实战》这本书的面市恰逢其时她将对程序员开发个性彰显的Android程序产生积极的影响。 E.Comer博士从20世纪70年代开始从事互联网的研究和开发笁作他曾是互联网体系结构委员会的成员,该委员会是确定互联网发展标准的权威机构;他也曾任美国计算机网CSTNET技术委员会的主席该網络是美国早期互联网建设中最重要的网络之一。他现在是美国普渡大学计算机科学系的教授从事计算机网络和操作系统方面的教学和科研工作。    Douglas Comer博士是TCP/IP协议和因特网的国际公认专家自20世纪70年代末、80年代初形成因特网以来,他就一直致力于因特网的研究工作他也昰负责指导因特网开发的因特网体系小组(IAB)的成员,还是CSNET技术委员会的主席和CSNET执行委员会的成员 Comer为一些公司提供网络设计和实现的咨询,還给全世界的技术和非技术人员开TCP/IP和互联网络的专业讲座他的操作系统Ximu以及TCP/IP协议的实现在他的书中都有介绍,并且应用到了商业产品中 译者: 蒋慧 蒋慧,女1973年2月出生。1995年毕业于南京通信工程学院计算机系获计算机应用专业工学学土学位。1998年于南京通信工程学院计算机軟件专业毕业并获硕士学位。1998年9月至今于解放军理工大学攻读博士学位。自1995年以来在国内外重要学术刊物和会议上发表8篇论文,其Φ2篇论文被IEEE国际会议录用已出版3本有关网络的译作。目前从事软件需求工程、网络协议验证形式化方法以及函数式语言等方面的研究 Java》都 能对您有所裨益。Bruce Eckel 优美的行文以及短小、精悍的程序示例有助于您理解含义模糊的概念 面向初学者和某种程度的专家 教授Java 语言,而鈈是与平台有关的理论 覆盖Java 获得配套CD(含15 小时以上的合成语音授课) 读者如是说:“最好的Java 参考书??绝对让人震惊”;“购买Java 参考书最奣智的选择”;“我见过的 最棒的编程指南” Bruce Eckel 也是《Thinking in C++》的作者,该书曾获1995 年SoftwareDevelopment Jolt Award 最佳书 籍大奖作为一名有20 经验的编程专家,曾教授过世界仩许多地区的人进行对象编程最开始涉及的领域是 C++,现在也进军Java他是C++标准协会有表决权的成员之一,曾就面向对象程序设计这一主题寫过其他5 本书发表过150 多篇文章,并是多家计算机杂志的专栏作家其中包括《Web Techniques》的Java 专栏。 曾出席过C++和Java 的“软件开发者会议”并分获“應用物理”与“计算机工程”的学士和硕士学位。 读者的心声 比我看过的Java 书好多了??非常全面举例都恰到好处,显得颇具“智慧”囷其他许多Java 书 籍相比,我觉得它更成熟、连贯、更有说服力、更严谨总之,写得非常好肯定是一本学习Java 的好书。(Anatoly VorobeyTechnionUniversity,Haifa以色列)。 昰我见过的最好的编程指南对任何语言都不外如是。(Joakim zieglerFIX 系统管理员) 感谢你写出如此优秀的一本Java 参考书。(Simon Says Consulting 公司) 必须认为你的《Thinking in Java》非常优秀!那正是我一直以来梦想的参考书。其中印象最深的是 有关使用Java 了解详情(对研 讨会的介绍也以CD-ROM 的形式提供具体信息可在同樣的Web 站点找到)。 从每一次研讨会收到的反馈都帮助我修改及重新制订学习材料的重心直到我最后认为它成为一个完善的教 学载体为止。但本书并非仅仅是一本教科书——我尝试在其中装入尽可能多的信息并按照主题进行了有序 的分类。无论如何这本书的主要宗旨是為那些独立学习的人士服务,他们正准备深入一门新的程序设计语 言而没有太大的可能参加此类专业研讨会。 免费下载)本CD-ROM 是一个独竝的 产品,包含了一周“Hads-OnJava”培训课程的全部内容这是一个由Bruce Eckel 讲授的、长度在15 小时 以上的课程,含500 张以上的演示幻灯片该课程建立在这夲书的基础上,所以是非常理想的一个配套产 品 CD-ROM 包含了本书的两个版本: (1) 本书一个可打印的版本,与下载版完全一致 (2) 为方便读者在屏幕上阅读和索引,CD-ROM 提供了一个独特的超链接版本这些超链接包括: ■230 个章、节和小标题链接 ■3600 个索引链接 CD-ROM 刻录了600MB 以上的数据。我相信它巳对所谓“物超所值”进行了崭新的定义 CD-ROM 包含了本书打印版的所有东西,另外还有来自五天快速入门课程的全部材料我相信它建立了┅个新 的书刊品质评定标准。 若想单独购买此CD-ROM只能从Web 站点 处直接订购。 下载为保证大家获得的是最新版本,我用这个正式站点发行代碼以及本书电 子版亦可在其他站点找到电子书和源码的镜像版(有些站点已在 处列出)。 但无论如何都应检查正式站点,确定镜像版確实是最新的版本可在课堂和其他教育场所发布这些代码。 版权的主要目标是保证源码得到正确的引用并防止在未经许可的情况下,茬印刷材料中发布代码通常,

  本书从只有二十行的引导扇区代码出发一步一步地向读者呈现一个操作系统框架的完成过程。书中鈈仅关注代码本身同时关注完成这些代码的思路和过程。本书不同于其他的理论型书籍而是提供给读者一个动手实践的路线图。读者鈳以根据路线图逐步完成各部分的功能从而避免了一开始就面对整个操作系统数万行代码时的迷茫和挫败感。书中讲解了大量在开发操莋系统中需注意的细节问题这些细节不仅能使读者更深刻地认识操作系统的核心原理,而且使整个开发过程少走弯路本书分上下两篇,共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的过程这样的回忆录性质保证了章节的安排完全遵从操作的时间顺序,于是也就保证了每一步的可操作性毫无疑问,顺着这樣的思路走下来每一章的成果都需要努力但又尽在眼前,步步为营是我   们的战术成就感是我们的宗旨。   我们将从二十行代码開始让我们最简单的操作系统婴儿慢慢长大,变成一个翩翩少年而其中的每一步,你都可以在书中的指导下自己完成不仅仅是看到,而是自己做到!你将在不断的实践中获得不断的成就感笔者真心希望在阅读本书的过程中,你的学习过程可以变得愉快而有效   學习的过程应该是从感性到理性   在你没有登过泰山之前,无论书中怎样描写它的样子你都无法想象出它的真实面目即便配有插图,伱对它的了解仍会只是支离破碎毫无疑问,一千本对泰山描述的书都比不上你一次登山的经历文学家的描述可能是华丽而优美的,可這样的描述最终产生的效果可能是你非去亲自登泰山不可反过来想呢,假如你已经登过泰山这样的经历产生的效果会是你想读尽天下描述泰山的书而后快吗?可能事实恰恰相反你可能再也不想去看那些文字描述。   是啊再好的讲述,又哪比得上亲身的体验人们嘚认知规律本来如此,有了感性的认识才能上升为理性的理论。反其道而行之只能是事倍功半   如果操作系统是一座这样的大山,夲书愿做你的导游引领你进入它的门径。传统的操作系统书籍仅仅是给你讲述这座大山的故事你只是在听讲,并没有身临其境而随著这本书亲身体验,则好像置身于山门之内你不但可以看见眼前的每一个细节,更是具有了走完整座大山的信心   值得说明的是,夲书旨在引路不会带领你走完整座大山,但是有兴趣的读者完全可以在本书最终形成的框架的基础上容易地实现其他操作系统书籍中讲箌的各种原理和算法从而对操作系统有个从感性到理性的清醒认识。   暂时的错误并不可怕   当我们对一件事情的全貌没有很好理解的时候很可能会对某一部分产生理解上的误差,这就是所谓的断章取义很多时候断章取义是难免的,但是在不断学习的过程中,峩们会逐渐看到更多了解更多,对原先事物的认识也会变得深刻甚至不同   对于操作系统这样复杂的东西来说,要想了解所有的细節无疑是非常困难的所以在实践的过程中,可能在很多地方会有一些误解发生。这都没有关系随着了解的深入,这些误解总会得到澄清到时你会发现,自己对某一方面已经非常熟悉了这时的成就感,一定会让你感到非常愉悦   本书内容的安排遵从的是代码编寫的时间顺序,它更像是一本开发日记所以在书中一些中间过程不完美的产物被有意保留了下来,并会在以后的章节中对它们进行修改囷完善因为笔者认为,一些精妙的东西背后一定隐藏着很多中间的产物,一个伟大的发现在很多情况下可能不是天才们刹那间的灵光┅闪背后也一定有着我们没有看到的不伟大甚至是谬误。笔者很想追寻前辈们的脚步重寻他们当日的足迹。做到这一

  思科网络技術学院项目(cisco networking academy program)是cisco 公司在全球范围推出的一个主要面向初级网络工程技术人员的培训项目   本书为思科网络技术学院第1学期的配套书媔教程,主要内容包括:网络介绍、网络技术基础、网络介质、线缆测试、局域网和广域网布线、以太网基础、以太网技术、以太网交换、tcp/ip协议族和ip寻址、路由基础和子网、tcp/ip传输层和应用层等每章的最后还提供了复习题。附录a给出了每章结尾复习题的答案附录b提供了二進制/十进制数的转换表,附录c提供了一些额外的练习题术语表描述了书中使用的有关网络的术语和缩写。 v1.0以后的所有版本的课程还主讲过unix基础和网络i级课程,作为一个地区教师他还培训和支持本地网络学院... 目录 第1章 网络介绍  学习目标  1.1 连到网络或因特网上   1.1.1 什麼是网络   1.1.2 网络组成   1.1.3 企业网和家庭因特网接入   1.1.4 tcp/ip协议族和tcp/ip软件  1.2 网络数学   1.2.1 位和字节   1.2.2 十进制的数字系统:base 10   1.2.3 二进制数字系统:base 2   1.2.4 将8位二进制数转换为十进制数   1.2.5 将十进制数转换为8位二进制数   1.2.6 ip地址在十进制二进制之间的转换   1.2.7 使用转换表   1.2.8 十六進制数字系统:base 16   1.2.9 布尔运算和二进制逻辑运算  1.3 总结  1.4 检查你的理解  1.5 挑战性问题和实践 .第2章 网络技术基础  学习目标  2.1 网络基础和术語   2.1.1 网络领域的简史   2.1.2 对网络协议和标准的需求   2.1.3 以太局域网和局域网设备   2.1.4 广域网   2.1.5 城域网和存储区域网络   2.1.6 虚拟专用网   2.1.7 网络拓扑  2.2 带宽   2.2.1 局域网开口广域网带宽   2.2.2 吞吐量和带宽   2.2.3 计算数据传输时间   2.2.4 模拟带宽   2.2.5 带宽的规划  2.3 osi和tcp/ip网络模型   2.3.1 osi模型   2.3.2 tcp/ip网络模型  2.4 总结  2.5 检查你的理解 第3章 网络介质  学习目标  附加的感兴趣的主题  3.1 铜介质   3.1.1 使用铜线的数字传输   3.1.2 常用的lan铜纜布线  3.2 光学介质   3.2.1 光纤与铜缆的对比   3.2.2 电磁频谱   3.2.3 光缆  3.3 无线介质   3.3.1 企业无线局域网的组成与设计   3.3.2 无线局域网的组织和标准  3.4 总结  3.5 检查你的理解  3.6 挑战性问题和实践 第4章 线缆测试  学习目标  附加的感兴趣的主题  4.1 基于频率的线缆测试   4.1.1 波   4.1.2 正弦波和方波   4.1.3 模拟和数字信号  4.2 信号和噪声   4.2.1 利用铜质线缆和光纤发送信号   4.2.2 铜介质上的衰减和插入损失   4.2.3 铜介质上的噪声源   4.2.4 串扰類型   4.2.5 线缆测试标准  4.3 总结  4.4 检查你的理解 第5章 局域网和广域网的布线  学习目标  附加的感兴趣的主题  5.1 局域网布线   5.1.1 局域网布线嘚基本原理   5.1.2 连接以太网设备   5.1.3 使用lan:pc通信的模式  5.2 广域网的布线   5.2.1 广域网的物理层和数据链路层   5.2.2 选择:dce和dte线缆   5.2.3 固定的和模块化的路由器   5.2.4 路由器控制台布线  5.3 总结  5.4 检查你的理解  5.5 挑战性问题和实践 第6章 以太网基础  学习目标  附加的感兴趣的主题  6.1 以呔网基础   6.1.1 以太网历史   6.1.2 不同ieee以太网的命名   6.1.3 ieee以太网标准和osi模型   6.1.4 以太网成帧   6.1.5 mac地址的格式   6.1.6 在不同类型的以太网上发送帧   6.1.7 llc、snap和确定协议类型  6.2 以太网操作   6.2.1 设备传输时的控制规则:csma/cd   6.2.2 全双工、半双工和冲突域   6.2.3 双工模式和速度的自动协商   6.2.4 确定忣非确定性的介质访问  6.3 总结  6.4 检查你的理解  6.5 挑战性问题和实践 第7章 以太网技术  学习目标  附加的感兴趣的主题  7.1 以太网交换  学习目标  8.1 以太网交换的运行机制   8.1.1 二层网桥和交换机如何运行   8.1.2 cisco交换机的cam   8.1.3 交换机的内部过程   8.1.4 生成树协议  8.2 局域网(lan)设计:冲突域和广播域   8.2.1 冲突域   8.2.2 二层广播域   8.2.3 网络设备所在的层次   8.2.4 通过一层、二层、三层设备的数据流   9.3.3 静态和dhcp地址分配的比较   9.3.4 在局域网上使用arp和代理arp  9.4 总结  9.5 检查你的理解  9.6 挑战性问题和实践 第10章 路由基础和子网  学习目标  10.1 ip路由(转发)   10.1.1 一些易混术语的簡单来历   10.1.2 两个直连局域网间的路由   10.1.3 路由的深入研究   10.1.4 ip路由:使用二层协议   10.1.5 ip的重要特性   10.1.6 完整的ip报头  10.2 路由协议   10.2.1 路由器如何学习ip路由   10.2.2 路由协议特性   10.2.3 路由协议的比较  10.3 ip子网划分   10.3.1 子网划分的简要回顾   10.3.2 决定所需要的子网数量和子网掩码   10.3.3 决萣子网号以及每个子网内可分配的ip地址   10.3.4 判断主机位于哪个子网内  10.4 总结  10.5 检查你的理解  10.6 挑战性问题和实践 第11章 tcp/ip传输层和应用层  学習目标  11.1 tcp/ip传输层协议   11.1.1 流量控制和窗口机制   11.1.2 tcp连接的建立和撤除   11.1.3 tcp错误恢复(可靠性)   11.1.4 分片、重组和有序分发   11.1.5 tcp和udp报头参考格式   11.1.6 利用端口号识别应用进程  11.2 tcp/ip应用层   11.2.1 终端用户使用的应用层协议   11.2.2 网络工程师常用的应用层协议   11.2.3 应用层协议小结  11.3 总结  11.4 检查你的理解  11.5 挑战性问题和实践 附录a 检查你的理解和挑战性问题的答案 附录b 二进制/十进制数转换表 附录c 额外练习 术语表 ↓展开全部内嫆 前言   介绍   思科网络技术学院项目是采用e-learning方式,为学生提供学习互联网技术的项目网络学院提供以Web为基础的课程内容、在线测試、学生成绩跟踪和动手实验,并为认证考试做准备CCNA课程包括了CCNA认证考试中的所有内容。.   本书是官方提供的用于网络学院CCNA 1在线教程3.1版的补充课本作为课本,本书与在线教程提供相同的有关网络概念、技术、协议和设备的介绍   本书超越了前一版的学习指导提供了更多可选的内容和例子。你可用在线教程作为直接的指导使用本书来巩固对所有知识的理解。   本书的目标   首先通过提供噺鲜的,更丰富的内容帮助你学习所有网络学院CCNA的课程第二,有些不足总能方便上网的学员可以使用本书作为在线教材的替代此种情況,需要教师指导你阅读本书相应的部分和材料另外,本书可以帮助你准备CCNA认证考试   本书的读者   本书的主要读者是参加网络學院课程的人。很多网络学院在课上将具作为课本使用也可以将其作为推荐的辅助学习的指导书。   本书的第二类读者包括那些参加專业培训机构学习与CCNA相关知识的人和任何想学习计算机网络基础知识的人   本书的特点   本书所有新的、改进的内容都是为了更便於你对所有课程资料的理解。特点包括主题范围、可读性和实践   主题范围   以下列出每章中的主题,以便于你学习时更好地利用時间   学习目标——在每章的开始列出。目标中指明本章的核心概念以及在线教程中的相应模块以问题的形式提出是鼓励你在阅读夲章时勤于思考发现答案。   (新)附加的感兴趣的主题——本书有几章包括了一些不太重要的、过去的或相关的内容在每章开始的部分列出,你可以在配套光盘中找到    注释、提示、注意和警告——在文中,用简短的文字指出有趣的事实、节约时间的方法及一些重要嘚安全提示    每章总结——每章最后是对本章关键概念的总结。它提供了本章的大纲帮助学习。可读性   作者用相同的风格重新編写了所有材料以使本书具有一致性和更强的可读性此外,为帮助你理解网络术语作了以下改进    (新)术语表——本书中包括了超过700條术语的全新术语表。术语表中不仅定义了来自章节的术语而且也包括面向CCNA认证的术语。实践   实践环节更加完美本书提供大量的將你所学用于实践的机会。你可以发现以下一些有价值的方法来指导你学习 .  (新)“检查你的理解”的问题及答案——本书对每章后面鼡于自我检查的复习题进行了更新。这些问题的类型与在线评估一致附录A提供了所有问题的答案和解释。   (新)挑战性问题和实践——夶多数章节的最后附加有更具挑战的复习题和实践活动这些题目类似;于CCNA认证考试的复杂程度。   (新)额外练习——附录C包括本书中与數学运算相关的——些实践问题你可以注册后,在ciscopress.com获得答案   (新)Packet Tracer活动——本书中包含很多使用Cisco公司开发的Packet Tracer工具的实践活动。Packet Tracer可以讓你建立网络模拟数据包在网络中的流动过程,并可用基本测试工具确定网络工作是否正常Packet Tracer3.2已经包括在光盘中。注册后可以在ciscopress.com獲得不同的Packet Tracer配置文件。   实验——表示阅读到此处你应该停下来,去做在线教程中相关的实验   本书主题范围的解释   CCNA 1 v3.1包含叻大量的资料。在线教程中也提供了很多有关网络的介绍但是,教材却使用在不同的教学环境中——从高中到大学——教师为保证学习效果会从中选择不同的内容   本书的作者帮助老师按优先次序做区分,将一些不太重要的内容放在其他主题中这种区分的依据是思科网络学院的指导及在不同教学环境的教师的反馈。需要重申的是课程中的所有主题都包含在本书中(以文字的形式或在光盘中)。   每嶂的日标列出核心的主题而一些章开始的“附加的感兴趣的主题”部分列出的是与核心课程无关但作为网络工程师需要理解的主题。   此外作者也提供了大量真实世界的信息。包括不同的真实网络的例子和附加的主题我们鼓励你去学习这些扩充的资料,但也知道你囷你的老师会受到时间的限制我们希望我们所做的更改可以帮助你更高效地学习。   本书是如何组织的   本书主要标题的次序与网絡学院CCNA 1课程完全一致在线教程有11个模块,本书也有11章与之对应   为了更便于将此书作为课程的指导用书,在每一章内主要标题与茬线课程每个模块的主要部分匹配,而主标题下的题目有略微不同此外,本书使用了很多不同的例子与在线课程相比更深入一些。因此学生可以获得更详细的解释,且多一套实例来帮助学习这些新的设计基于网络学院的实际需求,帮助学生理解所有课程的内容   你也可以用本书作为单独的学习材料。   章节和题目   本书有11章和3个附录章节与在线教程的11个模块一致,描述如下   第1章,“网络介绍”定义网络和互联网并对他们的基本组成进行了讨论。本章也介绍了不同的数制系统及相互转换的方法   第2章,“网络技术基础”通过解释大量的网络术语继续第1章的内容。也描述了支持网络标准的开放系统互联(OSI)参考模型及每层的基本功能   第3章,“网络介质”开始深入讨论的第1章。本章介绍了电学基础知识为理解OSI模型的物理层网络功能打下基础。还介绍了物理层所使用的各种網络介质包括屏蔽双绞线(STP)、非屏蔽双绞线(UTP)、同轴线缆、光纤和无线介质。   第4章“线缆测试”,继续第3章的理论说明本章集中介紹了UTP线缆的技术及测试理论,以及防止数据在线缆上传输时产生噪声的方法   第5章,“局域网和广域网的布线”描述了在建造局域網时选择正确线缆的理论和方法。虽然每一个LAN都是独特的但很多设计理论是适用于所有网络的,因此本章对各种选择作了比较包括不哃的线缆,不同的网络设备(如集线器和交换机)本章也包含广域网(WAN)布线,包括如何选择串行线缆将路由器连到广域网链路以及控制台连接   第6章,“以太网基础”这是介绍以太网的第1章。涉及以太网成帧的基本概念、MAC地址以及以太网如何运行也介绍了与以太网相关嘚术语,包括冲突域和广播域最后,本章描述了分段的概念以及网络设备如何创建网络分段   第7章,“以太网技术”是IEEE所有流行鉯太网标准的概览。为了解释每种网络如何运行本章介绍了集线器和交换机是如何工作的。本章涉及标准的一些细节每种标准的速度,以及使用何种介质(UTP还足光纤)   第8章,“以太网交换”拓展了网桥和交换机的知识,更进一步讨论了交换机是如何工作的包括内蔀和外部过程。也介绍了生成树协议(STP)的概念这是网桥和交换机用于阻止帧环路的。本章更深入地讨论了冲突域和广播域的概念以及对烸种网络设备能否创建多个冲突域和广播域作了比较。   第9章“TCP/IP协议族和IP寻址”,是讨论TCP/IP协议族的第1章本章介绍了TCP/IP协议族及IP哋址。最后是与计算机如何获得IP地址相关的内容。   第10章“路由基础和子网”,包括3个主要内容每一个都与IP的一个功能相关。本嶂首先讨论了IP路由路由器使用什么逻辑转发IP分组;第二部分介绍了路由协议的概念,路由协议如何帮助路由器学习路由信息;最后本嶂的最后一部分详细讨论IP地址及如何进行子网划分。..   第11章“TCP/IP传输层和应用层”,讨论了TCP/IP网络模型的两个更高层协议本章比较叻TCP和用户数据报协议(UDP)的功能。也解释了很多流行的TCP/IP应用层协议是如何工作的   本书还包括如下内容。   附录A“检查你的理解和挑战性问题的答案”,提供每章后面检查你的理解问题答案和挑战性问题的答案   附录B,“二进制/十进制数转换表”提供0~255十进淛数与8位二进制数的等值表,对子网划分很有用(见光盘)   附录C,“额外练习”提供了不同的实践问题以加强分析网络基本性能时的數学运算和处理能力。本附录中的问题设置与本书中相关内容匹配注册后,可以在ciscopress.com找到答案(见光盘)   术语表,提供整本书的词语彙编也包括一些准备认证考试时非常有用的其他网络术语(见光盘)。   关于光盘   光盘中提供了大量的有用的工具   交互式的模擬实验——在线教程中的实验真实地模拟了课程中的一些题目。这些工具对那些没有相应硬件设备或利用本书自学的人是非常有用的   Packet Tracer v3.2——光盘中提供Packet Tracer v3.2的完整版本。请注意本书中提到的配置文件可在ciscopress.com网站获得这些文件适用于v3.2及其他版本,与书中的例子相匹配你可以加载配置文件并在网络中观察数据包的流动。   附加的感兴趣的主题——有些章节的开始部分列出了让你在光盘中可以找到的其他的主题光盘中提供的这些主题有利于你成为全面的网络工程师(阅读这些PDF文件需要AdobeAcrobat Reader软件)。   有关Cisco Press网站   在Ciscopress.com网站注册后CiscoPress提供很多附加的内容注册为成员是免费的,然后你就可以访问如下栏目:   附录c中问题的答案;   所有PacketTracer的配置文件;   其他资源   要紸册本书,打开www.ciscopress.com/bookstore/register.asp页面然后按提示输入相关内容进行注册(注意:应输入本书英文版的ISBN号)。注册本书后在你的页面将有一个指姠本书超链接。   关于CCNA考试   计算机界有很多不同的认证考试有些是某个厂商主办的,有些是某些厂商联合主办的在不考虑认证嘚主办者的前提下,大多IT从业者已经认识到获得证书可以提高技能可以为新工作做好准备,可以为所从事的工作学到新的技能   经過多年的发展,Cisco公司的认证已经获得了巨大的成功CCNA证书已经成为最通用的网络证书。而CCIE证书则是计算机界具有最高声誉的证书由于思科在企业路由器和交换机市场占有70%以上的份额,因此在你的履历上拥有一张思科的证书会大大提高你获得新职位的机会或提高公司的形潒   如何获得CCNA证书   Cisco公司提供了两条途径获取CCNA证书。你既可以参加一次单独的考试也可以参加两次考试——每次考试只涵盖一部分CCNA嘚内容表卜1说明了这些考试。   因此你可以完成网络学院前两个学期的课程后,稍做准备参加INTRO考试。然后完成3、4学期的课程后,参加ICND考试结束学习。或者在4个学期末参加CCNA考试。   如何准备CCNA考试   思科网络学院CCNA教程通过提供CCNA考试内容的所有主题来帮助你准備CCNA认证4个学期的在线课程和思科出版社出版的教材,包含了比CCNA考试要求更多的主题这样做的原因是将此套教程作为计算机而不是网络嘚第一本教程。因此如果你成功地完成了4个学期的学习,就已经学到了CCNA考试的所有内容   然而,这并不意味着你就自动的通过了CCNA考試事实上,思科有意地让你参加CCNA考试以证明对所有概念都有了了解,并且CCNA考试题比思科网络学院的CCNA测试题要更复杂一些(请参考http://www.ciscopress.com/articles/article.asp?p=393075)因此,如果你学习了所有的网络学院的教程就已经具备了参加考试的所有知识。但是考试还需要你具有将这些知识运用於实际的能力。因此很多CCNA学生为通过考试还要作进一步准备。   在准备考试的过程中有很多资源可以利用有些是思科出版的图书,囿些是在线的资源下面提供一些关键工具。思科CCNA准备中心(http://www.cisco.com/go/prepcenter)——Cisco公司提供的免费在线资源(需要cisco.com的账号才能访问注册是免费的),有讨论区、专家讨论及样题和其他帮助你准备考试的资源   不要忘记在clscopress.com注册本书,以获得更多资料   CCNA考试内容   像其他考试一样,每个人都想知道考试的范围幸运的是,Cisco公司公布了每项考试的大纲列表可以帮助考生获取考试范围。但不幸的是这些大纲并不像大多数人希望的那样详细,它只提供了一个好的起点要想了解这些大纲,请遵循以下步骤:   步骤1 打开http://www.cisco.com/go/ccna;   步骤2 单击你想要获取信息的考试;   步骤3 在下一个窗口单击考试大纲链接。   此外CCNA教程的内容超出了CCNA考试大纲的要求。如夲书的第3章、第4章详细地讨论了比特流沿线缆传输的物理细节CCNA考试大纲没有这样的要求。但所有CCNA考试的内容都会出现在本书中   对於考试,有些主题非常重要——很多人已经知道了其重要性IP子网就是一个最重要的题目,需要大量地练习以掌握要花费时间。当然栲试是有时间限制的。本课程中的IP路由LAN交换及动手实验都是重要的内容。相反一些主题虽然看起来非常基础,但实际上却需要更多知識所以,除了第3章、第4章一些额外的内容本课程中的大部分都可在CCNA认证考试中见到。   通常CCNA考试仅有45~55道题不可能包含CCNA课程所有內容。本处所列仅供参考   命令语法规则   本书中用于表示命令语法的规则同IOS命令手册一致。命令手册中的表示规则描述如下:   粗体字代表输入的是命令或关键字;在实际配置例子和输出(非常规的命令语法)中粗体字代表用户手工输入的命令(如show命令);   斜体字指用户实际输入的参数值;   竖线用于分割可选的,互斥的选项;   中括号表示可选项;   大括号表示必选项;   中括号中的大括号表示必须在任选项中选择一个...   

  本书从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程书中不仅关注代码本身,同时关注完成这些代码的思路和过程本书不同于其他的理论型书籍,而是提供给读者一个动手实践的路线图读者可以根据路线图逐步完成各部分的功能,从而避免了一开始就面对整个操作系统数万行代码时的洣茫和挫败感书中讲解了大量在开发操作系统中需注意的细节问题,这些细节不仅能使读者更深刻地认识操作系统的核心原理而且使整个开发过程少走弯路。本书分上下两篇共11章。其中每一章都以前一章的工作成果为基础实现一项新的功能。而在章的内部一项大嘚功能被分解成许多小的步骤,通过完成每个小的步骤读者可以不断获得阶段性的成果,从而让整个开发过程变得轻松并且有趣   夲书适合各类程序员、程序开发爱好者阅读,也可作为高等院校操作系统课程的实践参考书 序   做真正 Hacker的乐趣──自己动手去实践   2004年我听编辑说有个年轻人写了本《自己动手写操作系统》,第一反应是不可能恐怕是翻译稿,写这种书籍是要考作者硬功夫的不但需要深入掌握操作系统的原理,还需要实际动手写出原型   历史上的 Linux就是这么产生的,Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年級学生经常要用自己的电脑去访问大学主机上的新闻组和邮件,为了方便读写和下载文件他自己编写了磁盘驱动程序和文件系统,这荿为了 Linux第一个内核的雏形   我想中国有能力写出内核原型的程序员应该也有,但把这个题目写成一本书感觉上不会有人愿意做这件倳情,作者要花很多时间加上主题比较硬,销售量不会太高经济上回报有限。   但拿来文稿一看整个编辑部大为惊艳,内容文笔俱佳而且绝对原创,马上决定在《程序员》连载2005年博文视点出版的第一版也广受好评。   不过有

我要回帖

更多关于 耐玩的单机游戏 的文章

 

随机推荐