我喜欢代码,但我目前只在做web开发。我希望做一些与网络编程相比独特而有趣的事情。如何编程操作系统?
是的,这可能是一个愚蠢的问题,但我认为构建一个非常简单的操作系统真的很酷。所以请不要说任何粗鲁的话。我只想知道以下几点:
*从哪里开始? *参考资料 *我可以使用哪种语言?
我通过阅读一些操作系统书想一些简单的像基于
我喜欢代码,但我目前只在做web开发。我希望做一些与网络编程相比独特而有趣的事情。如何编程操作系统?
是的,这可能是一个愚蠢的问题,但我认为构建一个非常简单的操作系统真的很酷。所以请不要说任何粗鲁的话。我只想知道以下几点:
*从哪里开始? *参考资料 *我可以使用哪种语言?
我通过阅读一些操作系统书想一些简单的像基于
在操作系统的设计绝对的“圣经”是,是安德鲁的Tanenbaum的Operating Systems Design and Implementation - “龙”书:-)
还有许多其他的引用,也如Developing Your Own 32-Bit Operating System。
微软研究院也/有一个项目在托管代码中创建操作系统(C#)称为Singularity - 这可能会提供一些见解/报纸等
写一个完整的操作系统既不是微不足道的,也不是一个快速任务,虽然.....
启动CMD - 像Tanenbaums' Modern operating systems。
这应该让你了解编写操作系统时需要解决哪些问题。
我想你最好开始探索Andrew S. Tanenbaum's工作。
当你为他们的谷歌有相当一些资源,但我会鼓励你不是迈出这一步呢!
要编写一个操作系统,即使是一个简单的操作系统,您也需要很好地理解您的计算机在低级别上的工作方式,而且您至少需要C或C++,最好还需要Assembly。没有这些技能,这将是一个乏味而令人沮丧的项目。即使对熟练的C程序员来说也很困难和具有挑战性。
这里有一些链接,让你开始:
http://www.brokenthorn.com/Resources
http://wiki.osdev.org/Main_Page/
你会需要GCC和NASM。 我想你也可以使用GASM。
学习BIOS中断。
而且之前,你甚至开始抢了一堆的标准,如: APIC A20门 PCI & PCIEX - 祝你好运试图获得其中的一个。花费一些改变。 英特尔& AMD - 看看这些,给你很多信息。 VGA ATA & SATA etc ...有很多。
也抢仿真器,如:Bochs的和QEMU
了解如何在计算机工作,也就是说,它是如何开机。
有很多信息,你只需要做你的研究。
祝你好运。
从webdev切换到后端将非常令人沮丧。
首先,选择一个电路板/硬件/体系结构 - 甚至可以使用可以在您的机器上运行的OS模拟器。学习C和一些程序集(intel,MIPS,ARM,coldfire/motorolla 68k),这取决于你在为哪种CPU架构构建你的操作系统。
我已经看到C++包允许你在C++中创建一个操作系统,然后自动将它转换为程序集,但是让它们正确转换是件很头痛的事情。我不会推荐他们。
在开始编写代码之前,您应该设计您的操作系统。甚至可以把你的设计决定放在一张带有一些图表的50页的论文中。
有些事情要考虑:
message envelopes {sender process id, receiver process id, message type, message}
)message envelopes {sender process id, receiver process id, message type, message}
)编辑 - URL更新 开发自己的32位操作系统是绝版的,但可在网上: http://www.ipdatacorp.com/mmurtl/mmurtlv1.pdf
写操作系统很难。我建议在成为OS开发人员之前成为开发人员。您将需要了解C/C++和汇编以构建基本的操作系统。您将需要考虑如何使您的操作系统,即内核类型,实模式或保护模式,内存映射和许多其他事情。
在开始接近编写实际控制台/“cmd”软件的位置之前,您将编写大量代码。 – Joe 2010-12-21 18:18:08
感谢您的投票,这真的有帮助 – Kevin 2010-12-21 18:37:21