尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

从零开始制作操作系统—— 最简单的操作系统内核

从零开始制作操作系统—— 最简单的操作系统内核
📅 发布时间:2026/6/19 18:41:45

最简单的操作系统内核

开发环境

  1. 操作系统:ubuntu22 (windows10 + VMware15pro + ubunut22 + qemu)
  2. 编译器:gcc-multilib
  3. 汇编器:nasm
  4. 模拟器: QEMU
  5. 版本控制: git

安装依赖

ubuntu22 中:

# 安装必要的工具链
sudo apt update
sudo apt install -y build-essential
sudo apt install -y qemu-system-x86 
sudo apt install -y nasm    # x86架构汇编器
sudo apt install -y gdb
sudo apt install -y git
sudo apt install -y mtools  # 用于制作磁盘镜像# 安装交叉编译器(重要!避免使用宿主系统的libc)
sudo apt install -y gcc-multilib

前置知识

  1. x86 汇编语言:寄存器,实模式 vs 保护模式,中断和异常,CPU 特权级
  2. C 语言编程
  3. 硬件基础知识:
    • 引导过程:当你按下电源键时,发生了什么事
    • BIOS/UEFI:它们做了什么
    • 内存映射:硬件设备(如 VGA 显存)在内存中的位置

计算机启动过程

当计算机上电后,位于 SPI Flash ROM 中的 BIOS 程序会被运行,该程序的任务是初始化计算的硬件,并且寻找可引导设备,这个可引导设备就是我们要开发的操作系统。

BIOS 在扇区 0 中找到有效地可引导设备后,就会将 CPU 的控制权转移过去,执行可引导设备程序。

关于 BIOS 程序

  1. BIOS 引导程序物理存储地址是在 SPI Flash ROM ,也就是 串行外设接口闪存只读存储器 ,这个存储器是焊接在主板上,容量一般为 16 MB ~ 32 MB,断电后不丢失数据。
  2. 在现代计算机中,传统的 BIOS 被 UEFI,也叫做 统一可扩展固件接口替代,它的存储位置也是在 SPI Flash 芯片中。
  3. 由硬件厂商开发,BIOS 厂商根据芯片厂商提供的规范来负责编写 BIOS 代码
  4. BIOS 的任务
    • 上电自检:检查关键硬件,包括 CPU,内存,芯片组等;然后初始化系统管理总线(SMBus),并且验证硬件完整性和兼容性
    • 硬件初始化:设置 CPU 微代码更新,配置内存控制器和时序参数,初始化 PCIe 设备枚举,设置 USB,SATA 控制器
    • 运行时服务建立:创建中断向量表,建立 BIOS 数据区,提供系统调用接口(INT,13h 磁盘服务等)

最简单的“操作系统”内核

启动电脑时,BIOS 会做自检,然后找到第一个可以启动的设备,读取该设备的第一个扇区(512 字节),如果该扇区最后两个字节是 0x55 和 0xAA,BIOS 会认为这是一个有效的引导扇区,并将其加载到内存 0x7c00 处执行。

下面我们使用汇编程序编写一个最简单的引导程序:(必须使用汇编语言)

; boot.asm
[org 0x7c00]      ; 告诉汇编器,这段代码会被加载到 0x7c00 处mov si, hello_msg ; 将字符串地址存入 SI 寄存器
call print_string ; 调用打印函数jmp $             ; 无限循环,挂在这里print_string:mov ah, 0x0e  ; BIOS 中断 0x10 的功能号,表示在电传打字机模式下显示字符
.loop:lodsb         ; 从 [SI] 加载一个字节到 AL,并增加 SIcmp al, 0     ; 检查是否是字符串结尾 (0)je .doneint 0x10      ; 调用 BIOS 中断来打印 AL 中的字符jmp .loop
.done:rethello_msg db 'Hello, OS World!', 0times 510-($-$$) db 0 ; 填充剩余空间,使得总长度为 510 字节
dw 0xaa55             ; 魔数,表示这是一个可引导的扇区
# 编译汇编文件
nasm -f bin boot.asm -o boot.bin# 使用 QEMU 运行
qemu-system-x86_64 boot.bin

如果一切顺利,你会在 QEMU 窗口处看到 “Hello,OS World”

注意,如果使用 ssh 链接 虚拟机中的 ubuntu 系统,那么 QEMU 窗口需要到 ubuntu 中查看。

相关新闻

  • 2025年靠谱的热水袋,国标热水袋厂家推荐及选择建议 - Di
  • 1.5-60 MHz 超宽带 20 dB 耦合器 H2SYDC-20-61HP+,0.4 dB 插损,-40~+85 C 军工级,成都恒利泰出品
  • PortSwigger web实验室-CSRF篇(BP靶场) - 实践

最新新闻

  • 武汉买猫买狗去哪看?梦宠山庄实地体验分享 - 园友3800037
  • 从零到一:Jetlinks物联网平台服务器部署实战与避坑指南
  • (转)一次ANSYS EM 2023R1 “Request name electronics_desktop does not exist in the licensing pool.“的离谱解决记录
  • 面试被问“你的缺点是什么”,90%的应届生都答错了!(附满分话术)
  • Spring Cloud Alibaba 最佳实践:基于 Spring Boot 4.0 的完整微服务示例项目
  • 三步掌握AI斗地主:如何用DouZero智能助手提升你的游戏胜率

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号