“Tutorials”的版本间差异
(创建页面,内容为“这个wiki上有几个与操作系统开发相关的教程。本页概述了相关教程,按主题区域和难度排序。 {{Ratingicon|1}} -非常基础或易于理解的教程。先试试这些。 {{Ratingicon|2}} -关于一些较难的主题的教程,但仍然很好。首先做一些简单的事情可能是个好主意。 {{Ratingicon|3}} -高级课程教程。不建议初学者使用。 {{Ratingicon|4}} -关于非常难的科目的教程。大师班。…”) |
|||
第1行: | 第1行: | ||
这个wiki上有几个与操作系统开发相关的教程。本页概述了相关教程,按主题区域和难度排序。 | 这个wiki上有几个与操作系统开发相关的教程。本页概述了相关教程,按主题区域和难度排序。 | ||
{{Ratingicon|1}} -非常基础或易于理解的教程。先试试这些。 {{Ratingicon|2}} -关于一些较难的主题的教程,但仍然很好。首先做一些简单的事情可能是个好主意。 {{Ratingicon|3}} -高级课程教程。不建议初学者使用。 {{Ratingicon|4}} - | {{Ratingicon|1}} -非常基础或易于理解的教程。先试试这些。 | ||
{{Ratingicon|2}} -关于一些较难的主题的教程,但仍然很好。首先做一些简单的事情可能是个好主意。 | |||
{{Ratingicon|3}} -高级课程教程。不建议初学者使用。 | |||
{{Ratingicon|4}} -关于非常难的科目的教程。大师班。祝你好运! | |||
{{Ratingicon}} -还没有评级。 | |||
== 内核基础知识 == | |||
=== Bare Bones === | === Bare Bones === | ||
第34行: | 第44行: | ||
{{Ratingicon|1}} [[GDT Tutorial]] - 关于[[GDT]]的指南 | {{Ratingicon|1}} [[GDT Tutorial]] - 关于[[GDT]]的指南 | ||
{{Ratingicon|1}} [[Interrupts tutorial]] -set如何从C中断 {{Ratingicon|1}} [[Creating A Shell]] -关于如何编写[[Shell | Shell]]的教程 {{Ratingicon|2}} [[Going Further on x86]] -应涵盖内核内部基础知识的指南 {{Ratingicon|3}} [[User:Johnburger/Demo|DEMO]] -以代码和散文形式编写的教程,介绍了386(及以上版本)和PC平台的一些基础知识,作为汇编语言[[用户:约翰伯格/Demo | Demo]] 本教程介绍如何设置和维护启用分页的系统== 内存管理 == | {{Ratingicon|1}} [[Interrupts tutorial]] -set如何从C中断 | ||
{{Ratingicon|1}} [[Setting Up Paging]] - {{Ratingicon|1}} [[Setting Up Paging With PAE]] -如上所述,但已启用PAE {{Ratingicon|1}} [[Brendan's Memory Management Guide]] -解释基本概念的内存管理指南 {{Ratingicon|2}} [[Writing a memory manager]] -关于如何在计算机中处理RAM的教程。 {{Ratingicon|2}} [[Writing A Page Frame Allocator]] -如何编写一个简单的页面框架分配器 | |||
{{Ratingicon|2}} [[Brendan's Multi-tasking Tutorial]] - {{Ratingicon|3}} [[Cooperative Multitasking]] -如何创建内核空间多任务系统。 {{Ratingicon|3}} [https://web.archive.org/web/20160326162854/http://xarnze.com/article/Entering%20User%20Mode Getting to User Mode]-如何将上下文切换到用户模式。 == 图形及;视频 == | {{Ratingicon|1}} [[Creating A Shell]] -关于如何编写[[Shell | Shell]]的教程 | ||
{{Ratingicon|2}} [[Going Further on x86]] -应涵盖内核内部基础知识的指南 | |||
{{Ratingicon|3}} [[User:Johnburger/Demo|DEMO]] -以代码和散文形式编写的教程,介绍了386(及以上版本)和PC平台的一些基础知识,作为汇编语言[[用户:约翰伯格/Demo | Demo]] | |||
本教程介绍如何设置和维护启用分页的系统== 内存管理 == | |||
{{Ratingicon|1}} [[Setting Up Paging]] - {{Ratingicon|1}} [[Setting Up Paging With PAE]] -如上所述,但已启用PAE | |||
{{Ratingicon|1}} [[Brendan's Memory Management Guide]] -解释基本概念的内存管理指南 | |||
{{Ratingicon|2}} [[Writing a memory manager]] -关于如何在计算机中处理RAM的教程。 | |||
{{Ratingicon|2}} [[Writing A Page Frame Allocator]] -如何编写一个简单的页面框架分配器 | |||
== 进程和线程 == | |||
{{Ratingicon|2}} [[Brendan's Multi-tasking Tutorial]] - 内核空间多任务教程。 | |||
{{Ratingicon|3}} [[Cooperative Multitasking]] -如何创建内核空间多任务系统。 | |||
{{Ratingicon|3}} [https://web.archive.org/web/20160326162854/http://xarnze.com/article/Entering%20User%20Mode Getting to User Mode]-如何将上下文切换到用户模式。 | |||
== 图形及;视频 == | |||
{{Ratingicon|1}} [[Drawing In Protected Mode]] - 基本知识,如何绘制像素。 | {{Ratingicon|1}} [[Drawing In Protected Mode]] - 基本知识,如何绘制像素。 | ||
{{Ratingicon|1}} [[Double Buffering]] -一种防止伪影的简便方法。 {{Ratingicon|1}} [[PC Screen Font]] -使用位图字体显示文本。 {{Ratingicon|2}} [[Scalable Screen Font]] -使用矢量字体显示文本。 {{Ratingicon|2}} [[Loading Icons]] -解码图像文件以显示图标。 == 引导 == | |||
{{Ratingicon|1}} [[Double Buffering]] -一种防止伪影的简便方法。 | |||
{{Ratingicon|1}} [[PC Screen Font]] -使用位图字体显示文本。 | |||
{{Ratingicon|2}} [[Scalable Screen Font]] -使用矢量字体显示文本。 | |||
{{Ratingicon|2}} [[Loading Icons]] -解码图像文件以显示图标。 | |||
== 引导 == | |||
{{Ratingicon|1}} [[Bootable Disk]] - 介绍如何创建可引导磁盘(USB棒)映像的教程 | {{Ratingicon|1}} [[Bootable Disk]] - 介绍如何创建可引导磁盘(USB棒)映像的教程 | ||
{{Ratingicon|2}} [[ELF Tutorial]] -详细说明加载ELF可执行文件过程的指南。 {{Ratingicon|3}} [https://web.archive.org/web/20140130143820/http://robinhoksbergen.com/papers/howto_elf.html Manually Creating an ELF Executable] -本指南演示了ELF二进制文件的工作原理,以及如何仅使用十六进制编辑器从头开始构建一个二进制文件。 == Porting Software == | |||
{{Ratingicon|2}} [[Porting Newlib]] -关于将通用C库移植到另一个操作系统的指南 {{Ratingicon}} [[Libsupcxx|Using Libsupc++]] -LIbSuc++移植以从C++的特点中获取更多的指南 {{Ratingicon|4}} [[Porting Python]] -关于将python移植到其他操作系统的指南 [[Category:Tutorials]] | {{Ratingicon|1}} [[Bootable CD]] -介绍如何创建可引导CD的教程 | ||
{{Ratingicon|1}} [[Bootable El-Torito CD with GRUB Legacy]] -介绍如何创建可引导GRUB CD的教程 | |||
{{Ratingicon|2}} [[Rolling Your Own Bootloader]] -描述编写引导加载程序时要采取的步骤。 | |||
{{Ratingicon|1}} [[Babystep1|Writing a bootloader]] -关于创建引导加载程序的基本教程 | |||
{{Ratingicon|2}} [[uefi.inc|Writing a bootloader for UEFI]] -关于使用UEFI创建引导加载程序的基本教程 | |||
{{Ratingicon|3}} [[Writing GRUB Modules]] -关于编写向GRUB添加自定义功能的模块的教程。 | |||
== Building == | |||
{{Ratingicon|1}} [[Makefile]] -关于如何使用Makefiles的指导演示 | |||
{{Ratingicon|3}} [[OS Specific Toolchain]] -关于将GCC和Binutils适应平台的指南 | |||
{{Ratingicon|1}} [[CMake Build System]] -一个指南,演示如何调整KitWare的CMake构建系统来构建操作系统。 | |||
{{Ratingicon|1}} [[User:TheCool1Kevin/VSCode_Debug|VSCode for Debugging]] -设置VSCode以调试内核。 | |||
== 编译程序 == | |||
{{Ratingicon|1}} [[GCC Cross-Compiler]] -帮助构建针对不同平台的GCC的指南 | |||
{{Ratingicon|1}} [[GDC Cross-Compiler]] -与前面相同,但这次是针对D编程语言。 | |||
== 可执行文件格式 == | |||
{{Ratingicon|2}} [[ELF Tutorial]] -详细说明加载ELF可执行文件过程的指南。 | |||
{{Ratingicon|3}} [https://web.archive.org/web/20140130143820/http://robinhoksbergen.com/papers/howto_elf.html Manually Creating an ELF Executable] -本指南演示了ELF二进制文件的工作原理,以及如何仅使用十六进制编辑器从头开始构建一个二进制文件。 | |||
== Porting Software == | |||
{{Ratingicon|2}} [[Porting Newlib]] - 关于将通用C库移植到另一个操作系统的指南 | |||
{{Ratingicon}} [[Libsupcxx|Using Libsupc++]] -LIbSuc++移植以从C++的特点中获取更多的指南 | |||
{{Ratingicon|4}} [[Porting Python]] -关于将python移植到其他操作系统的指南 | |||
[[Category:Tutorials]] |
2021年12月20日 (一) 07:28的版本
这个wiki上有几个与操作系统开发相关的教程。本页概述了相关教程,按主题区域和难度排序。
-关于一些较难的主题的教程,但仍然很好。首先做一些简单的事情可能是个好主意。
-高级课程教程。不建议初学者使用。
-关于非常难的科目的教程。大师班。祝你好运!
-还没有评级。
== 内核基础知识 ==
Bare Bones
这些是“基本”教程,将为您提供一个足够安全的基本内核,作为您自己的起点。
Bare Bones -用C为x86编写一个基本的32位内核 User:Zesterer/Bare Bones -用C为x86编写一个基本的32位内核(zesterer改进的教程) Stivale Bare Bones -使用Limine引导加载程序编写一个简单的64位 Higher Half Kernel。 Meaty Skeleton -模板操作系统 Higher Half x86 Bare Bones -演示如何编写 Higher Half Kernel的教程
Setting Up Long Mode -切换到长模式 Creating a 64-bit kernel -64位内核简介 Real mode assembly bare bones -关于编写基本汇编语言内核的教程系列 Pascal Bare Bones -Pascal中的一个基本内核
Ada Bare bones -在Ada中编写基本内核的教程 FreeBasic Bare Bones -FreeBasic中的basic内核 我们还为其他平台提供了基础
GameBoy Advance Barebones -关于编写基本GBA内核的教程 Sparc Barebones -SparcStations的基本内核 === 婴儿步 ===
如何在汇编中创建基本内核
Babystep1 - 您的第一个引导扇区。
Babystep2 -使用BIOS编写消息。 Babystep3 -机器代码一瞥 Babystep4 -在没有BIOS的情况下打印到屏幕 Babystep5 - Babystep6 -进入保护模式 Babystep7 -虚幻模式 Babystep8 -32位打印 Appendix A -补充资料 === 其他内核 === 这些教程涵盖了可选的内核设计。 这些主要面向使用其他地方未涉及的语言的开发人员,或者与Babysteps和裸体教程中给出的设计方法有显著不同的设计方法。
AJava Primer处理通常不适合操作系统开发的一般语言,特别是Java语言。
第三方教程
本节介绍与wiki和论坛无关的教程。 考虑到周围教程的数量,没有办法有一个完整的列表,因此这仅限于讨论中最常出现的教程。 这里列出它们是因为其中大多数主要关注操作系统开发的早期步骤。
此外,它们的质量有着惊人的差异,而且由于它们不是wiki本身的一部分,wiki作者无法确保修复bug或进行更新。
虽然这些内容仅供参考,因为它们经常被提及,但建议任何关注wiki教程的人将第三方教程作为补充,而不是建议。
James A. Molloy's Kernel Tutorials -作为过去比较流行的教程之一,它有许多已知问题,并且似乎没有积极更新。 BrokenThorn Operating System Development Series -与詹姆斯·莫洛伊系列一样,这是一个非常著名的教程系列,但它非常过时,并且有大量尚未纠正的已知缺陷。 Bran's Kernel Tutorial -这是一本非常过时但仍然经常被引用的教程,来自现在奄奄一息的“真正的操作系统开发”网站。与JAM和BrokenThorn一样,代码示例也有许多已知问题,而且许多内容早已过时。 How to write a simple operating system by Mike Saunders -这是MikeOS项目的起点,这是一个用汇编语言编写的x86实模式系统。并重点关注为MikeOS开发所需的方面。 FlingOS Getting Started video series -第三方系列视频教程为编写第一个操作系统提供了一个实际的开始(针对x86,ASM、C和C#中都有完整的示例) The Little OS Book -GitHub上托管的第三方操作系统演示程序。经过一段时间的更新,尚未修复的已知bug会列在回购协议中。 Writing a Simple Operating System — From Scratch (PDF) -一个2010教程基于课程材料从一个班在操作系统在英国伯明翰大学,由Dr. 尼古拉斯·布伦德尔,最初的课程讲师。 本教程是作为补充材料编写的,供学生在课程开始前复习,根据Blundell的说法,“不是作为替代品,而是作为优秀作品(如Minix项目)的垫脚石”。 So, 您想编写一个操作系统和[1]- 从2002年开始,OS新闻网站发布了一系列现在已经过时的文章,这些文章是许多老开发人员对OS开发的介绍。 它们写得很好,但对细节的描述很粗略,主要是今天的历史兴趣。 这仅仅是因为它们在论坛的许多老帖子中被引用。 注意,作者后来写了一篇[https://www.osnews.com/story/8162在这篇文章中,他反对开发新的内核。 Xv6 unlike most tutorials in this list, this is a fully functional, yet simple OS. Xv6 is a modernized version of the classic Dennis Richie's and Ken Thompson's UNIX V6, written in ANSI C for the x86 protected mode, keeping the original UNIX philosophy of simplicity.
基础
GDT Tutorial - 关于GDT的指南
Interrupts tutorial -set如何从C中断
Creating A Shell -关于如何编写 Shell的教程
Going Further on x86 -应涵盖内核内部基础知识的指南
DEMO -以代码和散文形式编写的教程,介绍了386(及以上版本)和PC平台的一些基础知识,作为汇编语言 Demo
本教程介绍如何设置和维护启用分页的系统== 内存管理 ==
Setting Up Paging - Setting Up Paging With PAE -如上所述,但已启用PAE
Brendan's Memory Management Guide -解释基本概念的内存管理指南
Writing a memory manager -关于如何在计算机中处理RAM的教程。
Writing A Page Frame Allocator -如何编写一个简单的页面框架分配器
== 进程和线程 ==
Brendan's Multi-tasking Tutorial - 内核空间多任务教程。
Cooperative Multitasking -如何创建内核空间多任务系统。
Getting to User Mode-如何将上下文切换到用户模式。
== 图形及;视频 ==
Drawing In Protected Mode - 基本知识,如何绘制像素。
Double Buffering -一种防止伪影的简便方法。
PC Screen Font -使用位图字体显示文本。
Scalable Screen Font -使用矢量字体显示文本。
Loading Icons -解码图像文件以显示图标。
== 引导 ==
Bootable Disk - 介绍如何创建可引导磁盘(USB棒)映像的教程
Bootable CD -介绍如何创建可引导CD的教程
Bootable El-Torito CD with GRUB Legacy -介绍如何创建可引导GRUB CD的教程
Rolling Your Own Bootloader -描述编写引导加载程序时要采取的步骤。
Writing a bootloader -关于创建引导加载程序的基本教程
Writing a bootloader for UEFI -关于使用UEFI创建引导加载程序的基本教程
Writing GRUB Modules -关于编写向GRUB添加自定义功能的模块的教程。
== Building ==
Makefile -关于如何使用Makefiles的指导演示
OS Specific Toolchain -关于将GCC和Binutils适应平台的指南
CMake Build System -一个指南,演示如何调整KitWare的CMake构建系统来构建操作系统。
VSCode for Debugging -设置VSCode以调试内核。
== 编译程序 ==
GCC Cross-Compiler -帮助构建针对不同平台的GCC的指南
GDC Cross-Compiler -与前面相同,但这次是针对D编程语言。
== 可执行文件格式 ==
ELF Tutorial -详细说明加载ELF可执行文件过程的指南。
Manually Creating an ELF Executable -本指南演示了ELF二进制文件的工作原理,以及如何仅使用十六进制编辑器从头开始构建一个二进制文件。
== Porting Software ==
Porting Newlib - 关于将通用C库移植到另一个操作系统的指南
Using Libsupc++ -LIbSuc++移植以从C++的特点中获取更多的指南
Porting Python -关于将python移植到其他操作系统的指南