如何从零开始写一个简单的苹果操作系统从零开始

&&&&从零开始写一个简单的操作系统
&从零开始写一个简单的操作系统
零基础从零开始写一个简单的操作系统,深入浅出,易于理解操作系统
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
操作系统下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
从零开始写一个简单的操作系统
所需积分:0
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
从零开始写一个简单的操作系统
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员博客访问: 1849847
博文数量: 327
博客积分: 10016
博客等级: 中将
技术积分: 3685
注册时间:
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: IT业界
从零开始设计一个IT系统是件让人头痛的事,让我们来看一个实际的例子:由Cunard Line耗资8亿美元造的Queen Mary 2号油轮上各种豪华设施一应俱全,最多能同时容纳2600位乘客。假设我们要为这个现今世界上最新、最大、犹如一座流动城市的QM2号油轮(后面简称QM2)建立一个远程的IT系统,该IT系统使旅客在旅行途中能象在办公室里一样安全地刷银行卡,如smart card,同时当客人进入自己的包房时可以轻轻击打数字交互电视发送多封Email,还能浏览晚饭的菜单并决定是点一瓶葡萄酒单独饮用还是邀请其他人与自己共进晚餐。晚饭、娱乐过后,旅客还可以通过包房里的TV系统的音乐库点播自己喜欢的莫扎特的音乐,预定明早的早餐后再就寝。我们要为这个现今世界上最新、最大、犹如一座流动城市的QM2号油轮(后面简称QM2)建立一个远程的IT系统,该IT系统使旅客在旅行途中能象在办公室里一样安全地刷银行卡,如smart card,同时当客人进入自己的包房时可以轻轻击打数字交互电视发送多封Email,还能浏览晚饭的菜单并决定是点一瓶葡萄酒单独饮用还是邀请其他人与自己共进晚餐。晚饭、娱乐过后,旅客还可以通过包房里的TV系统的音乐库点播自己喜欢的莫扎特的音乐,预定明早的早餐后再就寝。上述例子中的交互式电视和smart card银行卡的服务仅仅是各种各样IT性能的一个体现方面,在如流动城市一般的QM2号油轮上,把各种海上先进技术整合在一起的IT集成系统发挥着重要作用。但是,将IT与油轮结合起来远不象让油轮平稳航行那么容易。这其中最大的一个挑战就是Cunard的IT部门虽然有着超过30年的造船经验,却对如何在轮船上构建IT系统一窍不通。而且,QM2号油轮是一种新兴的油轮,没有现成的IT方面的经验可以借鉴,这使问题更加复杂。为此,Cunard的CIO请董事们花一天的时间来观看IT 性能,并让IT部门的员工从底向上地进行IT系统技术基础架构的设计与安装。下面我们就以本例为主线来探讨如何构建IT系统。如何提升客户体验乘坐QM2号油轮旅行的游客在旅馆的入口处都被拍照,如果游客迟到了,在终端或者是主管办公室进行拍照。乘客的护照和信用卡也被扫描过,这些信息都被填写在了油轮的管理系统中。随即,卡上的信息就成为象房间钥匙一样的游客各类信息的全权代表,赋予游客购物等权限,通过游客是否持有他们的护照来控制其是否有上船的权利。QM2号油轮是世界上首个具备可以使用smart card银行卡和应用软件研发的豪华油轮。它的交互电视系统仅仅在3个油轮上使用过,由德国的多媒体技术公司IDF利用菲利浦电视和机顶盒并在后台运行Linux操作系统构建起来的。游客看到的菜单被是按油轮提供的服务和各种活动被分成11项功能区的,如餐饮区、购物区等等。每个包房的Email是通过整个油轮的Internet接入实现的,游客必须使用一个称之为“Internet cafés”的东西才能收发Email,每封Email的成本是1.5美元。此外,游客还能享有视频点播的服务、在线购物的服务,同时,系统还提供给游客查询账户余额的功能。上述所有提到的功能的实现都得益于复杂的集成。为了使游客能构物,IDF的系统需要连接到POS系统上,游客可以访问到自己的账单数据主要是因为进行了个人账号管理系统的集成。 全球技术服务公司的总监Frank Finch说:“为了找到两个系统间的合适的接口,我们花费了大量时间。”假设在油轮中发现有大量的并行事物,Cunard的IT部门的员工通过艰苦的努力让系统尽量变得简单,易于用户使用。但是,他们不是单独来完成的,很多工作是在市场营销部门的帮助下完成的。项目经理Jeff Boltz认为:“这样的做法超出了IT项目本身的策略。为了帮助那些有手动操作需要的客户,Boltz利用交互式电视系统对乘务员进行了培训。”客户化不是计算机一方就能解决的问题。很多人没认识到这一点,其原因就是他们不能在情况不佳的时候抓住问题的关键。对于Cunard而言,系统最重要的问题是如何提高客户体验,并让QM2号油轮的系统有别于其他油轮上的系统。此外,从操作的角度来看,这也能减少员工花在应答电话或解决客户需要的时间。系统还提供了获取更多的海外利润的机遇——这对Cunard而言是很关键的,任何利润的机遇都不能错过。命令中心(Command Central)对于油轮来说,存在着3个无特征的数据中心。在住业务操作中心坐落着一些单薄的服务器和PBX通信系统和公告系统(包括油轮的关键安全系统)。要把这些系统都集成在一个房间里的设计就是有别于传统的油轮IT系统设计方法的新方式。这样的设计的一大优点就是我们可以花更多的钱在公共基础架构上,如,用好的地板,更好的炉子、储存更多的能量。Finch还考虑到将来房间的增加而造成的计算机方的扩展问题,目的是让用户使用起来感觉更舒服。为世界上最大的远洋航线设计一个IT基础架构,这表明Cunard的所有IT员工要面临所有的各种各样的挑战。Richman解释说:“人们已经在支持着70%~80%的其他的已有的系统,与此同时又在尝试学习新的方式方法,试着把所有已有的系统集成在新油轮里。” Finch先前已经具有一些在油轮上构建IT系统的经验,所以由他来领导这个项目,他给予了业务方很大的支持。对于Cunard而言,IT不再是业务的附属品,这一点已经越来越明显。Finch认为:在IT设计中最大的挑战就是如何铺设电缆。其他的新型油轮的典型做法是在电缆架上铺设电缆。QM2号油轮没有这样做,有2500个数据交汇点(junctions)分布在不同的包房中,还有40个或一些无线结点也要考虑进来。对此,最初的规划始于4年前,在每个包房内设置了一个容纳电缆位置。数据管理IT后台基础架构是一个资产管理系统,它用来处理游客和员工的信息。该系统管理的信息是与现金无关的管理。其他主要的IT系统的接口都与资产管理系统相联。在QM2号油轮上和很多其他的由Cunard建造的油轮上,那些系统都有自己的数据库,连接和复制这些数据库是很令人头疼的事。设计QM2号油轮上的IT系统的一个主要的实际目标就是让为保持环境情况的复制工作实现线性化,并尽可能地无缝化。最终,IT员工可以减少对三来数据库的复制任务:the PBX, TVs和 POS。为了确保通信系统在管理系统出问题时仍能保持操作的正常。资产管理系统也允许QM2号油轮达载更多的乘客和员工,这就需要巡航舰和航空方面在油轮出发和到达之前传送来必要的信息。Cunard提供的另一个系统就是AVO。为了避免口头定货,AVO赋予员工在没有打电话或进行物理跟踪的情况下汇报各种情况的权利。例如:如果管家注意到水龙头有漏水的情况,他可以PC把问题自动汇报给有关部门的有关员工,这样有可以安排人直接来维修了。工人也可以看到每一个其他的预先安排给自己的工作,当天必须要完成的任务是什么等信息。一旦维修任务完成了,工人就可以进入信息系统,这样有助于提高工作效率。AVO集成了轮船规划了的维护与购买系统,该系统存储有船上仓库的信息,还有每个设备的维护情况信息。通过把AVO系统整合在自己的系统中就可以优化工作管理。对于无线接入点,QM2号油轮的做法也很先进,完全跟上了21世纪的新潮流——船上所有的餐厅和很多酒吧采用了Wi-Fi来联系客户的定单。将整个项目计划化整为零(Tearing Up the Project Plans )QM2号油轮上技术的成功模糊了IT员工工作中的一些问题。就象先前提到的那样,他们不得不在研法中心建立IT系统,而这是油轮本身也还在建造之中。因此,为了在这样的研发中心里要集成和测试所有的系统,就得把所有的设备分拆在组装,然后再跨过大西洋运到轮船所在的法国。为了避免在这一过程出现混乱,他们雇佣了6000多名工人来完成整个过程。安装设备实际上变成了一个加强力量和精力的练习。Beliveau, Boltz和其他有些帮忙者在没有工作电梯帮忙的情况下完成了每个包房的电视的安装。Finch花了3个月的时间在船上忙碌,试图管理混乱的情况。最终他仅用了3天的时间就解决了问题。最终,QM2号油轮在1月初被命名为伊丽莎白女王II号,并带着IT系统在海上顺利航行了5个月。28名IT员工的辛劳工作没有白费,初见成效,实现了在世界上最大的油轮上建立完善的IT系统的创举。这其中全面考虑各个技术要素,并结合业务要求与特色是功不可抹的,这其中值得我们借鉴的就是我们应该认识到:技术是多方面的、多样性的。
阅读(1124) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。下次自动登录
现在的位置:
& 综合 & 正文
怎样写一个简单的操作系统?(原文标题:How to write a simple operating system)
怎样写一个简单的操作系统?
翻译:magictong(童磊)2011年1月
版权:Mike Saunders和Mike OS的全体开发 2009年
原文地址:http://mikeos.berlios.de/write-your-own-os.html
P.S.很简单的一篇关于操作系统编写的入门,本身可能没什么特别深的技术含量,但是不失为一个继续研究的起点,当时随意浏览了一下,觉得还不错,就决定把它翻译出来,欢迎大牛批评和斧正,可能有一些翻译错误,也希望不吝赐教。
——magictong
计算机启动
第一个操作系统
本文主要介绍怎样编写和构建您的第一个,基于x86汇编语言的操作系统。它解释了计算机开机的基本过程,一些基本的汇编语言,以及怎样进一步提升自己这方面的技术。最终编写的操作系统将是非常小的一个(仅仅是一个系统引导程序),并且只有非常少的功能,但它是您在这方面进一步进行研究和探索的一个起点。
在您阅读了本文之后,如果您想更进一步在这方面进行探索并扩展您的能力,您可以继续看一下Mike OS(译注:)项目,这是一个更大更完备的x86汇编语言操作系统。
编程经验是必不可少的。如果你已经使用一些高级语言像PHP和JAVA之类的做过一些开发,那再好不过,但是,你最好还要具备一些更底层语言的知识,像C之类的,特别是对一些内存和指针的问题比较熟悉。
在本文中,我们将使用Linux操作系统来作开发平台,当然,在Windows上面进行操作系统开发也是可以是的,但是显然在Linux上面开发更加的简单,因为你需要点击几下鼠标敲击几个命令就可以获得一套完整的开发工具。 在Linux上面制作软盘和CD – ROM也更方便,你不需要安装一些繁琐的驱动程序。
现在安装Linux是非常容易的,如果你不想在你的计算机上面安装双系统,你可以把Ubuntu(译注:Ubuntu是Linux操作系统中的一个)安装在VMware或者VirtualBox上面,进入Ubuntu之后,只需要在命令行窗口键入下面的命令,就可以获得本文所需要的全部工具,简单把:
sudo apt-get install build-essential qemu nasm
通过这个命令你可以获得开发工具(编译器等等),QEMU PC仿真器和NASM的汇编器等等,汇编器能把汇编语言转换原生的机器码而组成可执行文件。
计算机启动
如果你正在为一个x86系统(这是最好的选择,因为有大量的文档可以参考)的计算机写操作系统,你需要理解计算机启动过程的基本知识,不过幸运的是,你现在不需要去了解图形驱动程序和网络协议等等复杂的部分,因此你可以专注于最本质的地方。
当计算机通电之后,它最开始执行的是BIOS(基本输入/输出系统)程序,它本质上是一个内置在系统中的微型操作系统。BIOS执行一些基本的硬件检测(如内存检查等),并且绘制一些特殊的图形(如DELL的LOGO)或者打印一些诊断文本到屏幕上。做完这些之后,它开始从某个可以找到的媒介上加载你的操作系统。然后大部分的计算机会跳转到硬盘驱动器并开始执行主引导区(MBR)的,主引导区是指一个硬盘驱动器最开始的512个字节的部分。有些计算机会尝试在一个软盘(启动扇区)或者CD – ROM上找到可执行代码。
计算机具体会去哪里寻找引导程序,依赖于引导顺序 - 你可以在BIOS的选项屏幕上明确的指定它。BIOS从选中的媒介(译注:硬盘,软盘,CD - ROM)中加载512字节到内存中,然后开始执行它。这就是(传说中的)引导程序,这个小程序然后加载操作系统内核或一个更大一些的引导程序(例如,Linux系统下的GRUB / LILO)。为了告诉操作系统它是一个引导扇区,512字节的引导程序在最后面有两个特殊的数字作标记,我们稍后将介绍它。
在计算机启动、引导的时候,有一个有趣的地方。在以前,基本上所有的计算机都配有一个软盘驱动器,因此BIOS配置的是从软盘驱动器启动,然而,现在的大部分的个人电脑都没有软盘驱动器,而是配备了一个CD – ROM,为了满足这种需要,专门开发了一个hack(译注:a hack直译不知道怎么翻译,大概就是类似外挂一样的意思,干预引导程序,呵呵)程序。当计算机从CD - ROM启动的时候,它可以模拟一个软盘出来,BIOS将从CD – ROM驱动器上面读取一个数据块并加载,然后执行它,就好像它是一个软盘一样。这对于操作系统开发者来说是非常(译注:原文用了incredibly,表示非常非常有用的,呃)有用的,因为我们可以只制作一个引导我们的操作系统的软盘,但是依然可以引导只有CD – ROM设备的机器。(相对来说,软盘是比较容易使用和操作的,而CD - ROM的文件系统则显然要复杂得多)。
因此总的来说,启动过程如下:
1、打开电源,计算机启动然后开始执行BIOS代码。
2、BIOS程序寻找软盘或硬盘驱动器等多种媒介(译注:可以在BIOS中设定寻找顺序)。
3、BIOS将从指定的媒介中加载512字节的引导扇区,然后开始执行它。
4、引导扇区然后再去加载操作系统本身,或者更加复杂的引导程序。
对于Mike OS,我们写了一个512字节的引导程序,并将它制作成一个软盘映像文件(虚拟软盘)。对于只有CD – ROM的驱动器,我们可以把该映像文件拷贝到CD上。不过无论使用哪种方式,BIOS都将正常加载它,就好像它是一个软盘一样,并开始执行它。之后我们就可以控制整个系统了!
现代操作系统大部分都是使用C或者C++编写,因为这对于可移植性和代码维护来说是至关重要的,但是这不是免费的午餐,在处理上就增加了一个更加复杂的层次。编写您的第一个操作系统,建议您最好是使用汇编语言,在Mike OS中也是使用的汇编语言,虽然汇编语言显得冗余和不可移植,但是您不用去担心编译器和链接器,这是它的优点。另外,此外,你需要一点汇编代码去启动任何操作系统。
汇编语言(或俗称的“汇编”)是表示CPU执行指令的一种文本化方式。例如,一条表示在CPU中移动数据的指令用二进制表示可能01110,这种表示方法非常令人难以记忆(译注:简直是发狂的)。汇编语言使用一些助记符,如mov ax, 30来代替这些指令。汇编指令直接与机器码CPU指令相关联,我们就不用再关心那些看起来毫无意义的二进制数字。
跟大多数的一样,汇编语言也是有序的指令流。你可以在不同的指令位置进行跳转,也可以设置子程序或者函数,但是它比C#之类的程序要小得多。使用汇编,你无法给出一个打印“Hello World”到屏幕的指令,因为CPU根本没有屏幕这样一个概念!相反,你可以直接操作内存,控制RAM(译注:随机存取存储器),在它们上面进行算术运算并把结果放到正确的位置。听起来很疯狂么?但是汇编并不是很难掌握,虽然在一开始你会觉得有点陌生和不可理解。
在汇编语言层次,并没有高级语言中类似变量这样的一些抽象的概念。你所能做的就是设置Registers(译注:寄存器)的值,Registers是内置在CPU中的高速存储设备。你可以把数据存放在Registers上面并且执行计算。在16位模式下,这些寄存器只可以存储0到65535之间的数字。下面是一个典型的X86 CPU的基本寄存器列表:
(译注:32位系统寄存器的位数增加到32位,相应的名称叫EAX, EBX, ECX, EDX等等)
因此你可以像使用变量一样用这些寄存器来存储数据,只不过它们在数据大小和用途上比较固定。有一类比较特殊的寄存器,叫做段寄存器,这主要是因为旧的计算机系统的限制,内存的处理被限制在一个64K的叫做段的块上。这是一个非常麻烦而混乱的问题,不过幸运的是,你现在不用担心,因为目前你即将编写操作系统远远小于一千字节,在Mike OS里面,我们把程序局限在一个64K的段里面,这样我们就不必去招惹麻烦的段寄存器了。
堆栈是从主存储器上面专门开辟的一块区域,用来存储临时信息。之所以叫着栈是因为一个数字堆积在另一个数字是上面,很形象的一种称呼。你可以想象一下,如果你有一个品客(译注:国际著名薯片品牌)的包装筒,如果你往里面顺序放入一张扑克牌,一个iPod Shuffle和一个啤酒杯垫子,那么你再把它们拿出来的时候就是完全相反的顺序了(先是啤酒杯垫子,然后是ipod shuffle,最后是扑克牌)。这跟数字也是一样的,如果你把数字5,7和15顺序压入堆栈,那么你弹出这些数字的时候顺序就刚好相反了,先是数字15,然后是数字7,最后是15。在汇编里面,你可以把寄存器的值压到堆栈上,处理完某些事情后在把它们从堆栈上弹回到寄存器中,这个主要用于当你想使用某些寄存器去干别的事情的时候,而你又不想破坏现在寄存器里面的值,那么你可以把寄存器里面的值压入堆栈,等处理完其他事情后再从堆栈上把值弹回寄存器中。
计算机的内存可以看作一个线性的空间,就像一个个连续的鸽子笼一样,它的范围从0开始直到你所安装的内存的最大值(现代计算机的内存高达数百万字节)。例如,你可能怎在使用浏览器来查看内存中字节的一个文档文件,但是我们人类的计数是基于10的幂的(10,100,1000等等,也就是十进制),而计算机计数则是基于2的幂的(因为计算机使用2进制更好)。为了能更好的描述数字,我们使用16(基于16的幂)进制,可以对照下面的表格来理解:
&&&&推荐文章:
【上篇】【下篇】

我要回帖

更多关于 从零开始写操作系统 的文章

 

随机推荐