上一页 1 ··· 40 41 42 43 44 45 46 47 48 ··· 62 下一页
摘要: IPC是Inter-Process Communication的缩写,直译为进程间通信,说白了就是进程间发消息。我们在上一节中把这种消息传递比作邮政系统,但实际上这种比喻并不全对。有的消息机制是很像收发邮件的,这种叫做异步IPC,意思是说,发信者发完就去干别的了,收信者也一样,看看信箱里没信,也不坐在旁边傻等。而有另一种消息机制正好相反,被称为同步IPC,它不像邮寄,倒像接力赛,发送者一直等到接收者收到消息才肯放手,接收者也一样,接不到就一直等着,不干别的。当然你可以把同步IPC也比作邮寄,只不过寄信的人从把信投到信箱里的那一刻开始,就住在邮局不走了,其他什么也不干了,就等着邮局说:“哥们儿, 阅读全文
posted @ 2009-05-26 14:05 我的javaIT 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 解密《一个操作系统的实现》这本书 5月18日见到了《Orange'S:一个操作系统的实现》的样书,多少有些激动。想一想前一版本《自己动手写操作系统》是那么畅销,这一本一定不能含糊。整个出版过程我能看到作者于渊为此付出的努力,还在自己排版的过程有深入体会,通过于渊的讲座也让博文视点的员工分享到他在排版过程中的很多心得。 应该有几万个朋友读过《自己动手写操作系统》了,本书的第2版《Orange'S:一个操作系统的实现》出来肯定有非常多的朋友想问,这两本书到底有何区别呢?就此博文视点对本书作者于渊进行了简单的采访。*提问:《Orange'S:一个操作系统的实现》与《自己动手写 阅读全文
posted @ 2009-05-26 09:08 我的javaIT 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 我们提到过,当一个进程需要操作系统的帮助,它可以通过系统调用让内核来替它完成一些工作。迄今为止,我们已经熟悉了系统调用的工作机制,并且已经实现了不止一个系统调用。接下来你会发现,用户进程将会有更多事情依赖于内核。比如我们想实现一个文件系统,最起码读写硬盘的工作要求助于内核。这里我们可以逐渐地增加系统调用,但也可以采用另一种方案,就是将这些工作剥离出来,交给一些系统进程来完成,让内核只负责它必须负责的工作,比如进程调度。这种将内核工作简单化的思想,便是微内核的基本思想。而所有工作通过系统调用扔给内核态的做法,被称为宏内核。在基于宏内核的操作系统中,完成具体任务时,用户进程通过系统调用让内核来做事 阅读全文
posted @ 2009-05-25 08:56 我的javaIT 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 书如其名,美哉!——博文视点展示图书专题电子快邮——读《美哉!Powerpoint——完美幻灯演示之路》有感 非常偶然,在西单图书大厦看到了这本书。当时自己在北京出差,正值事毕之后闲逛书城,满目琳琅,感叹书之海洋的同时,来到Office书架,翻阅了几本便觉得心情紧张,扑面而来的庞大信息量让我不免胆战心惊,人生有涯如何学得了这么多东西呢?抬头便看到“美哉”这本书,美哉两个字的字体与那个红球中白色的惊叹号,非常地吸引我,从书架上取下来之后,封面简洁而富有冲击力,作为一名在高校主要从事多媒体课件开发工作的教师,我当时就觉得这本书与自己很投缘,展开书的封面后,首先映入眼帘的并不是书的简要介绍与目录,而 阅读全文
posted @ 2009-05-22 14:18 我的javaIT 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 如何搭建自己的开发环境 好了,到这里相信读者已经知道如何搭建自己的开发环境了,说白了它跟开发一个普通的软件区别基本就在一个虚拟机上。它既是我们的“硬件”,又是我们的调试器,有了它我们安心多了。那是不是马上就可以开始我们的操作系统开发之旅了呢?很遗憾,还不能那么着急,因为你知道,操作系统是跟硬件紧密相连的,如果想实现一个运行在使用IA32架构的IBM PC上的操作系统,免不了要具备相关的知识。其中的重头戏就是32位Intel CPU的运行机制,毕竟CPU是一台计算机的大脑,也是整个计算机体系的核心。 所以紧接着我们要学习的,就是要了解IA32保护模式。掌握了保护模式,我们才知道Intel的CPU 阅读全文
posted @ 2009-05-22 08:35 我的javaIT 阅读(390) 评论(0) 推荐(0) 编辑
摘要: Windows下的开发环境 我们在介绍QEMU时提到过,在Windows下你需要一个虚拟的Linux来帮你编译操作系统的源代码。将操作系统内核编译链接成ELF格式有诸多好处,我们不但可以用Linux下现成的工具(比如readelf)来分析编译好的内核,还可以在必要时参考Linux内核的源代码来帮助我们自己的开发,总之这拉近了我们与Linux之间的距离。所以不要因为在Windows下也离不开Linux这件事而沮丧,况且装一个Linux是件很容易的事情。 不过装一个虚拟的Linux跟装一个真实的Linux还是有所不同,主要在于两点。一是我们仅仅想用这个Linux来做编译链接的工作,所以在选择组件的 阅读全文
posted @ 2009-05-21 08:43 我的javaIT 阅读(193) 评论(0) 推荐(0) 编辑
摘要: GNU/Linux下的开发环境 在工作环境中,虚拟机是个重头戏,所以在本章的前面单独做了介绍。除了虚拟机之外,还有几样重要的东西,分别是编辑器、编译器和自动化工具GNU Make。 许多在Linux下工作的人会使用Vi或者Emacs作为编辑器。如果你有兴趣尝试,那么还是那句建议,“不要因为刚开始的不习惯而放弃”,因为它们的确是编辑器中的经典,而且和Linux一样,具有陡峭的学习曲线。许多人一旦学会使用就爱上它们,这其中也包括笔者自己。当然,学习它们并不是必需的,而且你的选择范围比操作系统要大多了,相信会有一款能让你满意。 对于编译器,我们选择GCC和NASM分别来编译C代码和汇编代码。选择GC 阅读全文
posted @ 2009-05-20 15:52 我的javaIT 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 平台之争:Windows还是*nix本文摘自于渊编写的《orange's:一个操作系统的实现》一书 读到这里,读者可能发现书中经常出现“如果你用的是Windows”或者“如果你用的是Linux”这样的字眼。有时这样的字眼甚至可能影响到你的阅读,如果真的这样请你原谅。我试图照顾尽量多的读者,但是对每一个人来讲,却必须面临一个选择──在什么平台下开发。本书第一版使用的是Windows平台,而在第二版中,我投诚了。接下来你会发现,虽然以后的行文会最大限度地兼顾Windows,但总体是以Linux为默认平台的。 其实在什么平台下开发,有时纯粹是口味问题,或者是环境问题──你开始接触计算机时使用 阅读全文
posted @ 2009-05-20 08:16 我的javaIT 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 水面下面的冰山本文摘自于渊编著的《orange's一个操作系统的实现》一书 即便是非常袖珍的程序,也有可能遇到不能正确运行的情况,对此你一定并不惊讶,谁都可能少写一个标点,或者在一个小小的逻辑问题上犯迷糊。好在我们可以调试,通过调试,可以发现错误,让程序日臻完美。但是对于操作系统这样的特殊程序,我们没有办法用普通的调试工具来调试。可是,哪怕一个小小的引导扇区,我们也没有十足的把握一次就写好,那么,遇到不能正确运行的时候该怎么办呢?在屏幕上没有看到我们所要的东西,甚至于机器一下子重启了,你该如何是好呢? 每一个问题都是一把锁,你要相信,世界上一定存在一把钥匙可以打开这把锁。你也一定能找到 阅读全文
posted @ 2009-05-19 14:21 我的javaIT 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 操作系统编写之代码解释 其实程序的主体框架只是第2行到第6行这么一点点而已,其中调用了一个显示字符串的子程序。程序的第2、3、4行是3个mov指令,使ds和es两个段寄存器指向与cs相同的段,以便在以后进行数据操作的时候能定位到正确的位置。第5行调用子程序显示字符串,然后jmp $让程序无限循环下去。可能有很多人开始学汇编时用的都是MASM,其实NASM的格式跟MASM总体上是差不多的,在这段程序中,值得说明的地方有以下几点:1.方括号[]的使用 在NASM中,任何不被方括号[]括起来的标签或变量名都被认为是地址,访问标签中的内容必须使用[]。所以, mov ax, BootMessage 将 阅读全文
posted @ 2009-05-19 14:19 我的javaIT 阅读(317) 评论(0) 推荐(0) 编辑
上一页 1 ··· 40 41 42 43 44 45 46 47 48 ··· 62 下一页