type
Post
status
Published
slug
2022/06/11/1654913225694
tags
osdev
category
osdev
icon
password
new update day
Property
Oct 22, 2023 01:31 PM
created days
Last edited time
Oct 22, 2023 01:31 PM
这是风格问题。您可以从头开始直接深入研究,编写引导扇区,然后编写最小内核,然后从那里构建。您可以跳过引导扇区,并使用像 GRUB 这样的现成引导加载程序(开发自己的引导加载程序是一种宝贵的体验还是浪费时间,这一点有待讨论)。你也可以不按特定顺序写一些零碎的东西,只是在最后把它们放在一起。做这件事可能没有对错之分。如果您想了解一些易于使用的东西(实际上是每个操作系统都必须的),您可以继续阅读。
1 对于初学者
- 在屏幕上打印字符串和整数(十进制和十六进制)当然是必须的。这是最基本的调试方法之一,实际上我们所有人都经历过 0.01 版中的
kprint()
或kout
。
- 输出到串口将为你节省大量调试时间。你不必担心由于滚动而丢失信息。你将能够从控制台测试你的操作系统,过滤有趣的调试消息,并自动化一些测试。
- 拥有一个可以转储寄存器内容(也许还有错误地址)的工作可靠的中断/异常处理系统将非常有用。
- 规划您的内存映射(虚拟和物理):决定您希望数据的位置
- 堆:现阶段在运行时分配内存(malloc和free)几乎是不可能的。应该尽快实现。
一旦这些步骤完成,您是否会在拥有文件系统、多任务处理或模块加载之前尝试拥有一个工作的 GUI 完全取决于你。试着勾勒出什么可能依赖于什么,并以
“最小依赖优先”
的顺序做事。例如,GUI 可以依赖文件系统来加载位图或资源,但在您的第一个 GUI 中不一定需要位图。在这种情况下,好的建议是首先设计文件系统的接口(无论是打开/关闭/读/写还是其他),然后按照您喜欢的方式继续,考虑双方的接口。
2 风格极端
OSDev 似乎在 OSDevers(以及他们开发的操作系统)中有“原型”。当然,大多数人对“完整”内核的想法包括下面列出的大部分(如果不是全部的话)项目。
2.1 Lino Commando
Main article: Lino Commando
DOS时代的“裸体之美”给他留下了深刻的印象。他想要的第一件事是在“>”符号后面有一个闪烁的光标,以便他可以输入命令。不管有没有办法同时启动两个程序:他只需要一个文本编辑器和一个文件系统驱动程序。
2.2 Nick Stacky
Main article: Nick Stacky
他的测试机没有键盘也没有屏幕(没有人需要)。他所需要的只是 NIC(网络接口卡)……大量的 NIC……和一根以太网电缆,以查看他的内核是否响应 ping 并正确路由数据包。当然,他的内核具有强大的多线程和完整的 TCP/IP 堆栈。
2.3 James T. Klik
Main article: James T. Klik
透过窗口看:看到那个有阿尔法混合和反锯齿字体的背景了吗?看到屏幕的一角了吗?那是 Klik 的开始菜单!嗯,不:我没有所谓的“程序”文件夹,因为我现在无法加载任何应用程序,但这里有一个我的 WidgetToolKit 的 16 项测试用例列表。
2.4 Eleanore Semaphore
Main article: Eleanore Semaphore
在一个到处都是列表的小房间的黑暗角落里工作。自去年以来,她的系统已经有了很大的发展,尽管她能向你展示的一切仍然是一样的:一串A和B以没有明显顺序的方式显示在一个文本控制台上,她用神奇的组合键控制这个控制台。你会听到她谈论她是如何实现组件编程、自动依赖解析以及为她的调度程序实现虚拟时钟算法的。
2.5 Alta Lang
Main article: Alta Lang
为什么会有人想用 C 语言这样笨拙而古老的东西来编写像操作系统这样复杂的东西呢? Alta 想要为她的系统提供一些不同的东西:一种更优雅的操作系统的新语言。她花在语言设计上的时间至少和系统设计一样多,希望如果她能将语言设计得足够干净、足够强大,系统就会顺利到位。
2.6 Stan Dard
Main article: Stan Dard
斯坦知道事情应该是怎样的。这一切都很好地写在标准中。他看到它们如何组合在一起形成一个漂亮的系统(好吧,如果你忽略标准愚蠢的所有部分)。他对他所知道的领域有相当完整的实现,对自己不熟悉的领域有一个不太令人印象深刻的代码。
2.7 Richard Theseus
Main article: Richard Theseus
Richard 非常喜欢他目前的操作系统,除了一点:它不是由他编写的。一点一点地,他想用自己的代码替换他当前操作系统的部分。他的最终目标是拥有与他的主机操作系统相同的副本,但要用他的代码。
2.8 Mister Perfect
Main article: Mister Perfect
完美先生想要编写一个完美的操作系统,因为他看到了当前操作系统的所有缺陷。他研究了许多设计和实现的可能性,以确定什么更好。他多次重新开始,以确保质量和完美。
2.9 Andy Microbaum
Main article: Andy Microbaum
Andy 是小内核的粉丝,他将在单片内核中完成的许多工作放入用户空间。
2.10 Dizz Tracked
Main article: Dizz Tracked
迪兹被不必要的副业分散了注意力。
2.11 Mono Lizzy
Main article: Mono Lizzy
Lizzy 喜欢把所有的东西都放进一个大的内核里。
2.12 Ideas for new Archetypes
- Edward Scissorhands - Sounds like something designed on paper to do everything but completely broken in practice, I see architecture astronauts rather doing vaporware (e.g. you'd never get to see the Scissorhanded implementation the architecture would require)
- Real Man - Writes an entire operating system in Assembly, preferably in real mode. Abhors Quiche Eaters and Pascal.
- Vizier Studio - Visual Studio people.
- Barry Pi - ARM people.
- Racing Carl - Does all in protected mode Assembler and rewrites the latest 3D library and tries to squeeze the last bit of speed out of the code.
2.13 Archetypes to avoid
- Cowboy Coder - Someone who eagerly jumps into coding without any plan.
- 一个在没有任何计划的情况下急切投入编码的人。
- Dae Dreamer - Someone who spends all their time day dreaming and reading about operating systems, but hasn't yet started one.
- 有人把所有的时间都花在做白日梦和阅读关于操作系统的书籍上,但是还没有开始做。
- Duct von Tape - Someone that reuses a lot of code and combines it into a horrible frankenstein of a project. Or perhaps lovecraftian?
- 重用大量代码并将其组合成可怕的项目科学怪人的人。
- Sir Dunning-Kruger - Someone overestimating his/her skills dramatically.
- 有人高估了他/她的技能。
欢迎加入“喵星计算机技术研究院”,原创技术文章第一时间推送。
- 作者:tangcuyu
- 链接:https://expoli.tech/articles/2022/06/11/1654913225694
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章
2022-12-11
wiki.osdev.org 系列之 - Category:Bare Bones (类别:基本教程)
2022-12-11
wiki.osdev.org 系列之 - Linux Kernel Primer(Linux 内核入门)
2022-12-11
wiki.osdev.org 系列之 - OS theory
2022-12-11
wiki.osdev.org 系列之 - Symbol Table
2022-12-11
wiki.osdev.org 系列之 - System V ABI
2022-12-10
wiki.osdev.org 系列之 - Category:Object Files (类别:目标文件)