hurlex 一个基于x86架构的简单内核实现

简介:

博客很久都没有更斯了,因为一直在忙于一个小项目的开发。

事情的起因是这样的:因为今年开设了操作系统课程,但是纯粹的理论学习始终给我一种漂浮在云中的感觉。为了能在实践中深刻理解操作系统的运行机制和x86CPU以及硬件原理,我决定自己动手写一个操作系统内核的Demo程序。

当然,一开始没有相关的基础自然要找资料去学习。在翻阅了于渊的《Orange’s 一个操作系统的实现》和川合秀实先生的《30天自制操作系统》后感觉这两本书都不是很适合初学者学习。前者体系略乱且在一开始就陷入了硬件机制的漩涡,容易让初学者找不到北;后者不需要初学者有足够的基础,但是在硬件机制等内容上过于简略。只适合一般的爱好者去使用,而作为计算机专业的同学只能作为参考。(肆意诋毁大神作品,罪过罪过……)

后来在Google上搜索到了《JamesM’s kernel development tutorials》这篇文档后,我立即被作者合理有序的安排所吸引。我理想中的教程就是这样的,应该一步一步逐渐搭建起整个系统原型,由“发现问题——寻找机制——建立策略”的流程来处理。而不是一股脑的告诉我们所有的硬件机制,然后才是一般性的实现策略。

我主张的学习方法就是先学习一个新事物的基础框架和基本的模式结构,而旁枝末节的细节问题完全可以交给实践去慢慢掌握。暂时用不到的东西就不要告诉读者,完全可以用到了再慢慢补充。同时以任务和实践的方式驱动学习过程,既提升了理论学习的速度,又充满了实践的乐趣和成就感。

不过我在实践的过程中逐渐发现了这篇教程还是过于简陋,很多地方知其然而不知其所以然,并且部分的代码存在BUG。虽然代码能在当前的测试中通过,但会导致复杂化后其它的模块出现问题。另外这里调试也存在问题,若是能实现内核代码级别的调试功能就能极大的方便学习和开发。

出于这些问题,我对整个项目代码进行重构,参考Linux内核的代码命名和一些基础设计进行重新演绎,参考MIT的XV6系统和清华的XV6升级版ucore等内核给这个内核Demo增加了很多新的模块和机制。考虑到方便以后的同学在学习操作系统理论时参考这个实现,我决定对原始的英文文档进行重写。

重写的文档使用XeLaTex进行编写,是完全抛弃了原文的重新演绎,并且配上了很多参考资料和图片以及代码说明。我相信这个新的内核Demo项目以及其所属文档能给后来者带来极大的便利。这个内核Demo现在还很不完整,但是由于个人时间的原因,没有办法再进行开发和增补,希望有兴趣的同学能继续研究下去。

项目主页点击这里,完整的代码和文档也在其上,我甚至提供了文档分章节的阶段代码目录以供后来的同学参考。

为了便于后来的同学修改和丰富文档内容,我提供了文档的XeLaTex的源码。文档源码和文档同时以 署名-非商业性使用-相同方式共享 3.0 中国大陆协议 发布。

最后,因为我个人水平有限,代码和文档中的疏漏在所难免。希望看到错误的同学能给予指点,在此谢过。

目录
相关文章
|
2月前
|
安全 调度 开发者
探索操作系统的心脏:现代内核架构与挑战
【10月更文挑战第7天】 本文深入探讨了现代操作系统内核的复杂性和功能性,从微观角度剖析了内核在系统运行中的核心作用及其面临的主要技术挑战。通过浅显易懂的语言解释专业概念,旨在为读者提供一个关于操作系统内核的全面视角。
50 2
|
27天前
|
存储 Linux API
深入探索Android系统架构:从内核到应用层的全面解析
本文旨在为读者提供一份详尽的Android系统架构分析,从底层的Linux内核到顶层的应用程序框架。我们将探讨Android系统的模块化设计、各层之间的交互机制以及它们如何共同协作以支持丰富多样的应用生态。通过本篇文章,开发者和爱好者可以更深入理解Android平台的工作原理,从而优化开发流程和提升应用性能。
|
1月前
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器架构有啥区别?X86计算、Arm、GPU异构、裸金属和高性能计算对比
阿里云ECS涵盖x86、ARM、GPU/FPGA/ASIC、弹性裸金属及高性能计算等多种架构。x86架构采用Intel/AMD处理器,适用于广泛企业级应用;ARM架构低功耗,适合容器与微服务;GPU/FPGA/ASIC专为AI、图形处理设计;弹性裸金属提供物理机性能;高性能计算则针对大规模并行计算优化。
|
1月前
|
架构师 数据挖掘 开发者
架构师的真内核
本文旨在帮助大家深入理解技术、架构和团队领导力的本质,从而获得持续成长的方法。欢迎在文末留言,你觉得架构师需要具备的核心能力是什么?
|
1月前
|
Java Linux Android开发
深入探索Android系统架构:从Linux内核到应用层
本文将带领读者深入了解Android操作系统的复杂架构,从其基于Linux的内核到丰富多彩的应用层。我们将探讨Android的各个关键组件,包括硬件抽象层(HAL)、运行时环境、以及核心库等,揭示它们如何协同工作以支持广泛的设备和应用。通过本文,您将对Android系统的工作原理有一个全面的认识,理解其如何平衡开放性与安全性,以及如何在多样化的设备上提供一致的用户体验。
|
1月前
|
缓存 运维 网络协议
深入Linux内核架构:操作系统的核心奥秘
深入Linux内核架构:操作系统的核心奥秘
68 2
|
2月前
|
存储 资源调度 算法
操作系统的心脏:深入理解内核架构与机制####
【10月更文挑战第16天】 本文旨在揭开操作系统最神秘的面纱——内核,通过剖析其架构设计与关键机制,引领读者一窥究竟。在这篇探索之旅中,我们将深入浅出地讨论内核的基本构成、进程管理的智慧、内存分配的策略,以及那至关重要的系统调用接口,揭示它们是如何协同工作,支撑起现代计算机系统的高效运行。这既是一次技术的深潜,也是对“看不见的手”调控数字世界的深刻理解。 ####
64 3
|
2月前
|
Docker 容器
docker:记录如何在x86架构上构造和使用arm架构的镜像
为了实现国产化适配,需将原x86平台上的Docker镜像转换为适用于ARM平台的镜像。本文介绍了如何配置Docker buildx环境,包括检查Docker版本、安装buildx插件、启用实验性功能及构建多平台镜像的具体步骤。通过这些操作,可以在x86平台上成功构建并运行ARM64镜像,实现跨平台的应用部署。
1761 2
|
2月前
|
架构师 数据挖掘 UED
什么才是架构师的真内核?
技术架构师是在技术领域扮演着关键角色的专业人员。他们在业务需求分析、项目实施、技术架构治理等多个环节中发挥着重要的作用。 技术架构师不仅需要具备高超的专业技能,还需要具备良好的系统思维和认知心态。他们要能在宏观层面上进行技术架构的规划和治理,同时也要在微观层面上带领团队进行业务项目的交付实施。技术架构师是技术人从最初的研发编码,到成长为技术团队的核心骨干、技术主管、高阶技术主管,甚至是技术 CTO 的关键一步,如图 10-1 所示。
394 0
|
2月前
|
存储 固态存储 安全
阿里云服务器X86计算架构解析与X86计算架构云服务器收费价格参考
阿里云服务器架构分为X86计算、Arm计算、高性能计算等多种架构,其中X86计算是用户选择最多的一种架构,本文将深入探讨阿里云X86计算架构的云服务器,包括其技术特性、适用场景、性能优势以及最新价格情况。

热门文章

最新文章