我喜欢编码,但我目前只做网络开发。我想做一些独特而有趣的事情,与网络编程有很大的不同。
是的,这可能是一个愚蠢的问题,但我认为构建一个非常简单的操作系统真的很酷。所以请不要说粗鲁。我只想知道以下事项:
*从哪里开始? *资源 *我会使用哪种语言?
我在想像基于cmd的简单
答案 0 :(得分:19)
操作系统设计上的绝对“圣经”是Andrew Tanenbaum的Operating Systems Design and Implementation - “龙”书: - )
还有很多其他参考资料,例如: Developing Your Own 32-Bit Operating System
Microsoft Research还有一个关于在托管代码(C#)中创建名为Singularity的操作系统的项目 - 可能会提供一些见解/论文等。
编写完整的操作系统既不是一件微不足道的事,也不是一件快速的事,不过.....
答案 1 :(得分:9)
从webdev切换到后端将非常令人沮丧。
首先,选择一个主板/硬件/架构 - 甚至可以使用可以在您的机器上运行的OS模拟器。学习C和一些程序集(intel,MIPS,ARM,coldfire / motorolla 68k),具体取决于您构建操作系统的CPU架构。
我已经看过C ++软件包,它允许你用C ++编写一个操作系统,然后自动将它转换为汇编,但要让它们正确转换是一件令人头痛的问题。我不推荐他们。
在开始编写代码之前,您应该设计自己的操作系统。也许甚至可以将你的设计决定放在50页的纸上,并附上一些图表。
需要考虑的一些事项:
message envelopes {sender process id, receiver process id, message type, message}
的格式)编辑 - 网址更新 开发自己的32位操作系统已绝版,但可在线获取: http://www.ipdatacorp.com/mmurtl/mmurtlv1.pdf
答案 2 :(得分:5)
以下是一些可以帮助您入门的链接:
http://www.brokenthorn.com/Resources
http://wiki.osdev.org/Main_Page/
你需要GCC和NASM。 我想你也可以使用GASM。
学习BIOS中断。
在开始之前,你还要开始采用一系列标准,例如: APIC A20门 PCI& PCIEx - 试图获得其中一个好运。花费一些变化。 英特尔& AMD - 看看这些,给你很多信息。 VGA ATA& SATA 等......有很多。
还可以抓取以下模拟器:bochs和qemu
了解计算机的工作原理,即它是如何启动的。
你有很多信息要做你的研究。
祝你好运。答案 3 :(得分:3)
首先阅读一些操作系统书籍 - 如Tanenbaums'Modern operating systems。
这可以让您了解编写操作系统时需要解决的问题。
答案 4 :(得分:2)
我想你最好开始探索Andrew S. Tanenbaum's工作。
答案 5 :(得分:2)
当你谷歌为他们提供相当多的资源时,我会鼓励你不采取这一步骤!
对于编写操作系统,即使是简单操作系统,您也需要很好地理解计算机的工作原理,并且至少需要C或C ++,最好是装配。没有这些技能,这将是一个乏味和令人沮丧的项目。即使对于熟练的C程序员来说,它也很难并且具有挑战性。
答案 6 :(得分:2)
编写操作系统很难。我建议在成为OS开发人员之前成为开发人员。您需要了解C / C ++和汇编才能构建基本操作系统。您需要考虑如何制作您的操作系统,即内核类型,实模式或保护模式,内存映射以及许多其他内容。