教程演示🔗
你会学到什么
-
如何从头开始创建内核
-
如何创建多任务内核
-
如何处理操作系统中的恶意或有问题的程序。如果他们行为不端,就终止他们。
-
内存在计算机中的工作原理
-
构成现代计算的内核域、用户域和保护环之间的区别
-
Linux 内核自身使用的内核设计模式
-
您将了解有关虚拟内存的所有知识以及如何将虚拟地址映射到物理地址
-
您将学习如何让内核理解进程和任务
-
您将学习如何加载 ELF 文件
-
您将学习如何调试反汇编的机器代码
-
您将学习如何使用 GDB 在模拟器中调试内核。
要求
-
你必须了解 C 编程语言
-
掌握一些汇编语言的基础知识是明智的
-
你应该有一个 Linux 操作系统,可以从互联网上免费安装(我们在本课程中使用 Ubuntu)
描述
本课程旨在教您如何从头开始创建您自己的多任务操作系统和内核。假设您没有内核编程经验,并且您是从头开始学习的。
实模式开发
实模式是所有 Intel 处理器中的遗留模式,它会导致处理器以遗留状态启动,它的性能就像旧的 8086 Intel 处理器一样。
在本课程的“实模式开发”部分,我们首先了解引导过程和内存的工作原理,然后继续创建我们自己的引导加载程序,并在我们的真机上进行测试!这个引导加载程序将输出一个简单的“Hello World!” 消息到屏幕,我们用纯汇编语言编写这个引导加载程序。
在本节中,我们还从硬盘读取了一个扇区(512 字节),并了解了实模式下的所有中断以及如何创建它们。
本节让您对内核开发有一个很好的了解,而不会被信息淹没。您将学习有关传统处理器的基础知识和足够的知识,以便能够在本课程中进一步推进更现代的内核开发。
保护模式开发
在本节中,我们将创建一个具有 FAT16 文件系统的 32 位多任务内核。我们的内核将使用英特尔内置的内存保护和安全机制,使我们能够指示处理器保护我们的内核并防止用户程序损坏它。
本节非常深入,您将学习有关分页和虚拟内存的所有知识。我们利用英特尔处理器中的智能指令,让所有进程共享相同的内存地址,这就是所谓的内存虚拟化。我们将内存地址映射为指向不同的物理内存地址,以创建每个正在运行的进程都加载到同一地址的错觉。这是内核开发中非常常见的技术,也是交换文件的工作方式(那些用于在可用 RAM 耗尽时进行补偿的文件)。
我们创建了自己的虚拟文件系统层,它使用类似于 Linux 内核的设计。将教给你的这个巧妙的抽象是受他过去编写 Linux 内核驱动程序的讲师知识的启发。
您将了解 FAT16 文件系统的设计以及 FAT16 文件系统如何分解为簇以及它们如何链接在一起。然后我们实施我们自己的 FAT16 文件系统驱动程序,允许文件诞生!
我们实现任务和流程的功能,并编写我们自己的键盘驱动程序。
在本课程中,您还将了解内存管理的工作原理,我们实现了“malloc”和“free”函数,创建了我们自己的堆,旨在跟踪正在使用的内存。内存管理在任何操作系统和内核中都是必不可少的。
别忘了我们甚至创建了一个 ELF 文件加载器,我们会将所有操作系统程序编译成 ELF 文件,并允许加载二进制程序或 ELF 程序。ELF 文件包含许多描述我们程序的信息,例如我们的程序应该加载到内存中的位置以及程序的不同部分。
在本课程结束时,您将拥有一个功能齐全的 32 位多任务内核,可以同时运行许多进程和任务。您将拥有一个我们也可以使用的工作 shell。
汇编语言奖金
如果您在本课程中对汇编语言有点吃力,这是一个奖励部分,旨在让您的汇编技能达到最佳水平。但是,建议您带着汇编语言的经验来学习这门课程,我们确实使用它并且它很重要。尽管如此,如果您想在没有汇编经验的情况下尝试本课程,那么本节将帮助您指明正确的方向,以便您能够将所学知识应用到内核中。
由在工作场所专业创建 Linux 内核模块的专家授课。15 年软件工程师经验
本课程适合谁:
- 想要学习如何创建内核的初学者内核开发人员
图片
样片
媒体错误:格式不受支持或来源未找到
安装指南
在 Extract 之后,用您最喜欢的播放器观看。
英文字幕
质量:720
变化:
2022/6版本相比2021/4增加了7节课的数量和22分钟的时长。