05 2009 档案

摘要:免费讲座:软件项目的面向对象设计、开发及管理——外企真实项目案例分析讲座内容: 结合外企真实项目案例,探讨软件项目的标准开发流程,包括需求分析、架构设计、详细设计、实现、测试、部署、配置和变更管理及项目管理等。主讲人简介: 梁立新,外籍软件专家,具有十多年专业的软件开发、架构设计和项目管理的经验。毕业于中国科学技术大学,获硕士学位。之后留学于美国,获伊利诺依理工大学硕士学位。曾先后工作于美国华尔街咨询服务公司和加拿大多伦多证券交易所,担任高级软件设计师。参与设计建设了美国著名银行JP Morgan网上人力资源系统,以及加拿大最大的证券交易中心Toronto Stock Exchange股票交易 阅读全文
posted @ 2009-05-31 15:41 我的javaIT 阅读(179) 评论(0) 推荐(0)
摘要:序本文节选自《寒江独钓》一书序言 早在一年前,谭文就和我谈过想写一本既能深刻介绍Windows内核架构,又能结合具体Windows驱动程序开发实例的书。在一年的时间中,谭文一直在构思酝酿。那时候他的《天书夜读——从汇编语言到Windows内核编程》已经出版,《天书夜读》所涉及的内容很广,但就如同书名一样,它的内容不太适合刚刚涉猎Windows内核编程的程序员,反而更像一本供黑客学习的读物。书中翔实地介绍了很多反汇编技巧的技巧,非常的精辟,但对于新手来说,容易对Windows内核编程产生畏惧感。 当我第一次读完《寒江独钓——Windows内核安全编程》的初稿时,我觉得本书非常适合Windows内 阅读全文
posted @ 2009-05-31 08:43 我的javaIT 阅读(202) 评论(0) 推荐(0)
摘要:assert()和panic()先来看assert()。你或许早就开始使用这个函数,但之前你使用的都是现成的assert,只要包含一个头文件,就可以方便地使用。如今什么都得自力更生了,不过不用怕,写一个assert函数并非难事,见下面的代码:12 #define ASSERT13 #ifdef ASSERT14 void assertion_failure(char *exp, char *file, char *base_file, int line);15 #define assert(exp) if (exp) ; /16 else assertion_failure(#exp, __F 阅读全文
posted @ 2009-05-27 09:03 我的javaIT 阅读(520) 评论(0) 推荐(0)
摘要:IPC是Inter-Process Communication的缩写,直译为进程间通信,说白了就是进程间发消息。我们在上一节中把这种消息传递比作邮政系统,但实际上这种比喻并不全对。有的消息机制是很像收发邮件的,这种叫做异步IPC,意思是说,发信者发完就去干别的了,收信者也一样,看看信箱里没信,也不坐在旁边傻等。而有另一种消息机制正好相反,被称为同步IPC,它不像邮寄,倒像接力赛,发送者一直等到接收者收到消息才肯放手,接收者也一样,接不到就一直等着,不干别的。当然你可以把同步IPC也比作邮寄,只不过寄信的人从把信投到信箱里的那一刻开始,就住在邮局不走了,其他什么也不干了,就等着邮局说:“哥们儿, 阅读全文
posted @ 2009-05-26 14:05 我的javaIT 阅读(546) 评论(0) 推荐(0)
摘要:解密《一个操作系统的实现》这本书 5月18日见到了《Orange'S:一个操作系统的实现》的样书,多少有些激动。想一想前一版本《自己动手写操作系统》是那么畅销,这一本一定不能含糊。整个出版过程我能看到作者于渊为此付出的努力,还在自己排版的过程有深入体会,通过于渊的讲座也让博文视点的员工分享到他在排版过程中的很多心得。 应该有几万个朋友读过《自己动手写操作系统》了,本书的第2版《Orange'S:一个操作系统的实现》出来肯定有非常多的朋友想问,这两本书到底有何区别呢?就此博文视点对本书作者于渊进行了简单的采访。*提问:《Orange'S:一个操作系统的实现》与《自己动手写 阅读全文
posted @ 2009-05-26 09:08 我的javaIT 阅读(204) 评论(0) 推荐(0)
摘要:我们提到过,当一个进程需要操作系统的帮助,它可以通过系统调用让内核来替它完成一些工作。迄今为止,我们已经熟悉了系统调用的工作机制,并且已经实现了不止一个系统调用。接下来你会发现,用户进程将会有更多事情依赖于内核。比如我们想实现一个文件系统,最起码读写硬盘的工作要求助于内核。这里我们可以逐渐地增加系统调用,但也可以采用另一种方案,就是将这些工作剥离出来,交给一些系统进程来完成,让内核只负责它必须负责的工作,比如进程调度。这种将内核工作简单化的思想,便是微内核的基本思想。而所有工作通过系统调用扔给内核态的做法,被称为宏内核。在基于宏内核的操作系统中,完成具体任务时,用户进程通过系统调用让内核来做事 阅读全文
posted @ 2009-05-25 08:56 我的javaIT 阅读(190) 评论(0) 推荐(0)
摘要:书如其名,美哉!——博文视点展示图书专题电子快邮——读《美哉!Powerpoint——完美幻灯演示之路》有感 非常偶然,在西单图书大厦看到了这本书。当时自己在北京出差,正值事毕之后闲逛书城,满目琳琅,感叹书之海洋的同时,来到Office书架,翻阅了几本便觉得心情紧张,扑面而来的庞大信息量让我不免胆战心惊,人生有涯如何学得了这么多东西呢?抬头便看到“美哉”这本书,美哉两个字的字体与那个红球中白色的惊叹号,非常地吸引我,从书架上取下来之后,封面简洁而富有冲击力,作为一名在高校主要从事多媒体课件开发工作的教师,我当时就觉得这本书与自己很投缘,展开书的封面后,首先映入眼帘的并不是书的简要介绍与目录,而 阅读全文
posted @ 2009-05-22 14:18 我的javaIT 阅读(162) 评论(0) 推荐(0)
摘要:如何搭建自己的开发环境 好了,到这里相信读者已经知道如何搭建自己的开发环境了,说白了它跟开发一个普通的软件区别基本就在一个虚拟机上。它既是我们的“硬件”,又是我们的调试器,有了它我们安心多了。那是不是马上就可以开始我们的操作系统开发之旅了呢?很遗憾,还不能那么着急,因为你知道,操作系统是跟硬件紧密相连的,如果想实现一个运行在使用IA32架构的IBM PC上的操作系统,免不了要具备相关的知识。其中的重头戏就是32位Intel CPU的运行机制,毕竟CPU是一台计算机的大脑,也是整个计算机体系的核心。 所以紧接着我们要学习的,就是要了解IA32保护模式。掌握了保护模式,我们才知道Intel的CPU 阅读全文
posted @ 2009-05-22 08:35 我的javaIT 阅读(409) 评论(0) 推荐(0)
摘要:Windows下的开发环境 我们在介绍QEMU时提到过,在Windows下你需要一个虚拟的Linux来帮你编译操作系统的源代码。将操作系统内核编译链接成ELF格式有诸多好处,我们不但可以用Linux下现成的工具(比如readelf)来分析编译好的内核,还可以在必要时参考Linux内核的源代码来帮助我们自己的开发,总之这拉近了我们与Linux之间的距离。所以不要因为在Windows下也离不开Linux这件事而沮丧,况且装一个Linux是件很容易的事情。 不过装一个虚拟的Linux跟装一个真实的Linux还是有所不同,主要在于两点。一是我们仅仅想用这个Linux来做编译链接的工作,所以在选择组件的 阅读全文
posted @ 2009-05-21 08:43 我的javaIT 阅读(200) 评论(0) 推荐(0)
摘要:GNU/Linux下的开发环境 在工作环境中,虚拟机是个重头戏,所以在本章的前面单独做了介绍。除了虚拟机之外,还有几样重要的东西,分别是编辑器、编译器和自动化工具GNU Make。 许多在Linux下工作的人会使用Vi或者Emacs作为编辑器。如果你有兴趣尝试,那么还是那句建议,“不要因为刚开始的不习惯而放弃”,因为它们的确是编辑器中的经典,而且和Linux一样,具有陡峭的学习曲线。许多人一旦学会使用就爱上它们,这其中也包括笔者自己。当然,学习它们并不是必需的,而且你的选择范围比操作系统要大多了,相信会有一款能让你满意。 对于编译器,我们选择GCC和NASM分别来编译C代码和汇编代码。选择GC 阅读全文
posted @ 2009-05-20 15:52 我的javaIT 阅读(244) 评论(0) 推荐(0)
摘要:平台之争:Windows还是*nix本文摘自于渊编写的《orange's:一个操作系统的实现》一书 读到这里,读者可能发现书中经常出现“如果你用的是Windows”或者“如果你用的是Linux”这样的字眼。有时这样的字眼甚至可能影响到你的阅读,如果真的这样请你原谅。我试图照顾尽量多的读者,但是对每一个人来讲,却必须面临一个选择──在什么平台下开发。本书第一版使用的是Windows平台,而在第二版中,我投诚了。接下来你会发现,虽然以后的行文会最大限度地兼顾Windows,但总体是以Linux为默认平台的。 其实在什么平台下开发,有时纯粹是口味问题,或者是环境问题──你开始接触计算机时使用 阅读全文
posted @ 2009-05-20 08:16 我的javaIT 阅读(211) 评论(0) 推荐(0)
摘要:水面下面的冰山本文摘自于渊编著的《orange's一个操作系统的实现》一书 即便是非常袖珍的程序,也有可能遇到不能正确运行的情况,对此你一定并不惊讶,谁都可能少写一个标点,或者在一个小小的逻辑问题上犯迷糊。好在我们可以调试,通过调试,可以发现错误,让程序日臻完美。但是对于操作系统这样的特殊程序,我们没有办法用普通的调试工具来调试。可是,哪怕一个小小的引导扇区,我们也没有十足的把握一次就写好,那么,遇到不能正确运行的时候该怎么办呢?在屏幕上没有看到我们所要的东西,甚至于机器一下子重启了,你该如何是好呢? 每一个问题都是一把锁,你要相信,世界上一定存在一把钥匙可以打开这把锁。你也一定能找到 阅读全文
posted @ 2009-05-19 14:21 我的javaIT 阅读(250) 评论(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 阅读(340) 评论(0) 推荐(0)
摘要:操作系统编写之引导扇区 你可能还没有从刚刚的兴奋中走出来,可是我不得不告诉你,实际上,你刚刚所完成的并不是一个完整的操作系统,而仅仅是一个最最简单的引导扇区(Boot Sector)。然而不管我们完成的是什么,至少,它是直接在裸机上运行的,不依赖于任何其他软件,所以,这和我们平时所编写的应用软件有本质的区别。它不是操作系统,但已经具备了操作系统的一个特性。 我们知道,当计算机电源被打开时,它会先进行加电自检(POST),然后寻找启动盘,如果是选择从软盘启动,计算机就会检查软盘的0面0磁道1扇区,如果发现它以0xAA55结束,则BIOS认为它是一个引导扇区。当然,一个正确的引导扇区除了以0xAA 阅读全文
posted @ 2009-05-19 14:17 我的javaIT 阅读(289) 评论(0) 推荐(0)
摘要:十分钟完成的操作系统 你相不相信,一个“操作系统”的代码可以只有不到20行? Example 1. chapter1/a/boot.asm 1 org 07c00h ; 告诉编译器程序加载到7c00处 2 mov ax, cs 3 mov ds, ax 4 mov es, ax 5 call DispStr ; 调用显示字符串例程 6 jmp $ ; 无限循环 7 DispStr: 8 mov ax, BootMessage 9 mov bp, ax ; ES:BP = 串地址 10 mov cx, 16 ; CX = 串长度 11 mov ax, 01301h ; AH = 13, AL = 阅读全文
posted @ 2009-05-19 08:16 我的javaIT 阅读(272) 评论(1) 推荐(0)
摘要:在酷热的就业天气寻找几丝凉意邵志东谈程序员职业成长之路 5月17日 中午,中关村图书大厦5层多功能厅,博文视点大讲堂特邀《软件开发这点事—软件开发工具手册》的作者邵志东老师与读者进行了一场别开生面的专题讲座:在就业的冬天中寻找春意——程序员职业成长之路,现场反响颇佳,听众受益良多。 邵志东老师是微软最有价值开发者、微软中文网络广播最佳讲师,历任北京北大方正电子有限公司项目开发经理、北京新东方IT教育部门经理、北京新科海学校副总经理。拥有近15年的软件设计、需求分析和项目管理、编程经验,熟悉整个软件项目管理流程,对.NET平台开发有着特别深入的研究。 讲座开始前半小时,读者就已陆续到场,很快室内 阅读全文
posted @ 2009-05-19 08:12 我的javaIT 阅读(125) 评论(0) 推荐(0)
摘要:《Orange’s:一个操作系统的实现》作者自序 本书是《自己动手写操作系统》的第二版,通过一个具体的实例向读者呈现一个操作系统雏形的实现过程。有关操作系统的书籍资料可以找到很多,但是关注如何帮助读者实现一个试验性操作系统的书籍却不多见,本书便是从一个简单的引导扇区开始,讲述一个操作系统成长的故事,以作读者参考之用。本书面向实践,通过具体实例教读者开发自己的操作系统。书中的步骤遵循由小到大、由浅入深的顺序,跟随这些步骤,读者可以由一个最简单的引导扇区开始,逐渐完善代码,扩充功能,最后形成一个小的操作系统。 本书不仅介绍操作系统的各要素,同时涉及开发操作系统需要的各个方面,比如如何建立开发环境、 阅读全文
posted @ 2009-05-18 15:07 我的javaIT 阅读(233) 评论(0) 推荐(0)
摘要:做真正Hacker 的乐趣──自己动手去实践本文是csdn总裁蒋涛先生为《orange's一个操作系统的实现》写的推荐序 2004 年我听编辑说有个年轻人写了本《自己动手写操作系统》,第一反应是不可能,恐怕是翻译稿,写这种书籍是要考作者硬功夫的,不但需要深入掌握操作系统的原理,还需要实际动手写出原型。历史上的Linux 就是这么产生的,Linus Torvalds 当时是一名赫尔辛基大学计算机科学系的二年级学生,经常要用自己的电脑去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这成为了Linux 第一个内核的雏形。 我想中国有能力写出内核原型 阅读全文
posted @ 2009-05-18 08:37 我的javaIT 阅读(136) 评论(0) 推荐(0)
摘要:五月职场胜如火 Java讲座陪您过 5月16日上午10点30分,由电子工业出版社博文视点公司邀请孙鑫老师在中关村图书大厦5层的多功能厅进行了一场与读者的见面会,回馈这么多年来一直支持博文视点和孙鑫老师图书的广大读者朋友。 孙鑫,程序员之家(www.sunxin.org)站长,著名IT培训专家,10年软件开发和教育培训经验,培训学员数千人,就业于微软、IBM、华为、东软、中软、联想、神州数码等企业。对多种程序语言和技术架构有深入的了解,擅长Java、J2EE、Struts、Hibernate、Spring、数据库建模、C/C++、VC++、COM/DCOM/COM+、MySQL、SQLServe 阅读全文
posted @ 2009-05-18 08:32 我的javaIT 阅读(154) 评论(0) 推荐(0)
摘要:IRP请求的完成与返回 每当完成了一个以IRP为代表的I/O操作请求的时候,就要执行IRP的善后操作IoCompleteRequest(),这是个宏操作,定义为函数IofCompleteRequest()。#define IoCompleteRequest IofCompleteRequest 如前所述,以IRP为代表的I/O操作请求的执行可以是同步的,也可以是异步的,所以一个I/O操作请求的完成不一定与相应主功能函数的返回相一致。如果操作是同步的,那么主功能函数要到完成了所要求的操作时才返回,所以在返回之前就要执行这个函数。如果操作是异步的,那么主功能函数不等所要求的操作完成就返回了,这个函 阅读全文
posted @ 2009-05-15 14:45 我的javaIT 阅读(321) 评论(0) 推荐(0)