操作系统学习与实践1: 构建HelloWold,展示OS启动过程

本文介绍了从头开始使用C和x86汇编语言开发操作系统的教程,涵盖了OS基础知识、启动过程、局部性原理、分层存储器、以及在MSYS2环境下构建开发环境和编写实践代码的过程,包括编译、调试和使用QEMU模拟器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

         本系列的目的是使用 C 和 x86 汇编语言从头开始学习操作系统 (OS) 开发,典型特点是:“增量”学习。

   实践参考:

            http://www.brokenthorn.com/Resources/OSDevIndex.html

             https://cplusplus.com/

          注:在开始对系统进行编程时,您会发现根本没有任何东西可以帮助您。上电时,系统也以 16 位实模式运行,32 位编译器不支持该模式。这是第一件重要的事情:如果你想创建一个16位实模式操作系统,你必须使用16位C编译器。但是,如果您决定创建 32 位操作系统,则必须使用 32 位 C 编译器。 16 位 C 代码与 32 位 C 代码不兼容。

二、OS基础知识

        1. 整体上操作系统向下管理硬件,向上为用户/应用提供服务,总体上功能分为:

                (1)CPU管理:主要是程序的执行,如中断、进程、调度算法等。

                (2)内存管理:主要对ROM、RAM等的管理,包括分配内存、释放内存、内存保护。

                (3)设备管理:即IO设备,包括FLASH, 硬盘、USB、鼠标、键盘、显示器等读写。

                 (4)文件系统:主要是对数据存储管理,包括读写操作。

                 (5)UI界面: 包括shell命令行和图形化操作界面。

                 (6)信息安全: 授权访问管理,如用户、角色权限访问管理。

        2. 操作系统启动过程

        操作系统的启动过程是一个复杂且关键的步骤,它涉及到硬件、固件(BIOS/UEFI)、引导程序(Bootloader)以及操作系统本身的多个阶段。以下是一个简化的概述,描述了从计算机开机到操作系统完全加载的典型过程:

       (1)上电与自检(Power-On Self-Test, POST):当计算机接通电源后,首先进行的是上电自检(POST)。这是由计算机的固件(BIOS或UEFI)执行的一系列检查,用于确保硬件设备(如CPU、内存、硬盘、外设等)正常工作。如果POST检测到任何问题,计算机可能会发出声音或显示错误信息。

      (2)固件初始化:固件(BIOS或UEFI)初始化后,会寻找可启动的设备。这通常是通过在硬盘、SSD、光盘驱动器、USB设备等中查找引导扇区来完成的。固件会按照预设的启动顺序检查这些设备。

      (3)引导加载程序(Bootloader):一旦固件找到了可启动的设备,它会读取该设备的第一个扇区(引导扇区),这个扇区通常包含一个小型的引导加载程序。这个程序的任务是加载更复杂的引导管理程序或直接加载操作系统。

       (4) 加载操作系统内核:引导加载程序接下来会加载操作系统的内核到内存中。这通常涉及到从硬盘或其他存储介质读取内核文件,并将其复制到内存中适当的位置。

       (5)内核初始化:内核被加载到内存后,控制权被交给内核。内核初始化各种驱动程序,设置中断处理程序,初始化系统服务和进程调度器等。这一步骤是操作系统启动过程中最关键的部分。        

        (6)系统服务和守护进程:内核初始化完成后,它会启动系统服务和守护进程,如网络服务、日志系统等。

          (7)用户界面:操作系统会加载用户界面。对于图形界面(如Windows、macOS或Linux的桌面环境

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值