“OSDev Wiki CN”的版本间差异
小 |
|||
第32行: | 第32行: | ||
== 关于本站 == | == 关于本站 == | ||
不记得从哪里听说的,程序员有几大浪漫梦想。它们分别是,实现一个自己的语言(编译器)、实现一个自己的操作系统、实现一个自己的游戏引擎(图形学)。 | |||
站长反思以前的计算机本科学习过程很多是处于'''“在沙漠中学游泳”''',好像懂了其实只是会做题了。 | 站长反思以前的计算机本科学习过程很多是处于'''“在沙漠中学游泳”''',好像懂了其实只是会做题了。 |
2022年5月8日 (日) 00:06的版本
使用建议
本站搬运的[osdev 英文原站]是一个关于操作系统开发的WIKI知识库,所以整体风格并不是一个导师编写的教材指南,而是由很多创作者觉得可能需要的词条组成的一个手册。
这个Wiki站是以实际的教读者如何游泳(实现一个真实可运行的自制操作系统)为目的,其索引编排是首先从入门谏言开始,然后搭建GCC交叉编译器,然后开始罗列教程(当你打开教程时它会特地提醒你多做一些准备,多看一些理论),再从不同知识点和硬件方向逐个说明操作系统开发方法的知识。如果你是第一次来可以选择随便看看,可以从介绍和基础理论、教程清单这几个地方随意看看。
一方面来说它并不是一个操作系统理论教材, 而可以说是扩充细化版的《30天开发操作系统》、《操作系统真象还原》一类的书籍。 你可以把这类书买来看看,同时把这个WIKI当作一个资料字典来使用。随着你研究的越深入,越会理解各个词条的作用价值。而且本Wiki的不少内容并不是面向初学者的,很多文章原作者也不打算从零教会读者一些东西,遇到不会的内容,读者要自己去学习常见基础课程,更多的时候文章内容是原作者对于自己的工作总结和资料索引。
另一方面如原站不断强调的,这里文章绝对也不是可以复制粘贴直接运行的教程和示例代码,很多只是做了入门介绍和资料索引,真的去实现还是要求读者自己去读技术手册和自行实验。估计很少有人能真的完成一个自制操作系统。这不仅仅是精力不足,以及完整系统涉及技术面太多的问题,仅仅刚刚上手后很多人就会被汇编、C开发调试能力,GCC、模拟器调试技术细节等主客观两方面问题给困住。而就算跟着教程摸索完成,也才只是刚刚开始,后续还有无底的自制操作系统深渊在盯着你,我觉得读者应该迟早会放弃的……
- 把自制的代码注入裸机引导起来
- 使用BIOS、UEFI、APIC等枚举各种总线上的新旧硬件,并驱动起来
- 实现内存管理,分页,虚拟内存
- 实现进程调度
- 实现对可执行文件的载入重定位和引导执行
- 对遗留硬件和规范问题的兼容
- 将底层实现封装为对应用层的调用支持
- 实现对应用层隔离安全设计
- 移植已有软件
- ……
并且以上都是不可简化编写的,很多需要使用复杂数据结构和异步算法实现,因为别的程序都得依赖健壮高效的内核支持。如同不可能为了吃饭自己去种地,为了出行自己去造车,不从事这方面工作的人可能永远无法真的做出实用产品来。就译者所知,真的不建议读者想要在Intel架构下尝试编写一个类Windows这样的PC操作系统(虽然这是最常见的计算机设备,对固定硬件嵌入式系统进行研究也许是个不错的选择),其中会牵涉很多兼容性和扩展性技术细节,人生苦短。译者的很多翻译也仅仅是出于怀旧。
OSdev比较实际的意义应该更主要在于:明白各专业知识和开发工具的应用场景,知道各专业的边疆在哪里。所以本站在翻译的时候,是优先以译者感兴趣的理论原理(What、Why)为主,知识广度为主。对于教程和实现细节(How)放在了次级位置。其中推荐书目等内容倒是特别推荐读者读一读。
关于本站
不记得从哪里听说的,程序员有几大浪漫梦想。它们分别是,实现一个自己的语言(编译器)、实现一个自己的操作系统、实现一个自己的游戏引擎(图形学)。
站长反思以前的计算机本科学习过程很多是处于“在沙漠中学游泳”,好像懂了其实只是会做题了。
难学一个东西往往是因为背景知识、底层和上层(参看:计算机科学的分层思想)的知识接触太少了。而我们手头所有的工作对象其实都是层层叠叠的技术接口的妥协协作而实现的。
用户享受便利,而创造者封装了细节。作为初学者往往被屏蔽在核心知识以外而不自知。
而操作系统开发承前启后了多项计算机专业:《数字电路》、《嵌入式系统》、《计算机组成原理》、《计算机网络》、《汇编》、《C、C++(高级计算机语言)》、 《数据结构算法》、《编译原理》、《软件工程》,甚至《图形学、多媒体》等等。
学习操作系统编程为掌握多门其它知识找到了绝佳的“泳池”,所以开始利用业余时间转译OS DEV这个站点。
关于翻译质量
确实这里的翻译质量还只是处在“绝大多数是机翻,极少数能勉强读懂”的情况,以后会不断陆续细化翻译质量。
越是仔细较对原文,越是能体会到原作者编写的良苦用心,感谢他们的无私奉献。用我的机翻来转译这些文章,真的感觉对不起原作者和读者,真的很不好意思……
有些专有名词,在自制操作系统的语言背景下是以下含义:
- Architecture:架构,一般指CPU系统架构
- Set,Clear: 针对Bit位的set和clear(设置和清除)操作,就是设为1和0
- Bootloader: 引导加载程序,这是一个名词,但是读成中文总感觉是个动宾词组
- Translation: 转译,翻译,转换,在开发中指把一种东西变换成另一种东西
- Routine:例程,类似函数,指一段被选择执行的代码
- ……
英文的时态、词性比中文明显,同时平时用语中的词汇同样也是代码用词,所以变成中文以后有很多语句注意力重点上的改变,也许会导致一点的阅读障碍。主要希望能够帮助读者快速过滤掉文章中已理解或者不感兴趣的内容。
另外其实对每一份翻译,本站内部还保留有一份中英文对照版。如果你愿意帮忙,有什么想要分享或询问的也欢迎写邮件联系我:z3l4w5@sina.com。
祝你学习愉快!