Day1 手写操作系统前置知识

***本人该系列文章为bilibili李述铜老师手写操作系统课程笔记,如有疑问欢迎评论沟通***


一、计算机启动顺序

        ***当计算机上电启动时会首先进入16位的实模式,然后执行BIOS程序,接着执行引导程序,最后才执行操作系统程序。其中:

        16位的实模式的具体概念感兴趣可以自行百度(个人感觉不是很重要)

        BIOS程序从字义上称为“基本输出输入系统”,它是一组固化到计算机内主板上一个ROM芯片上的程序,保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制

        此处引用李述铜老师的课程截图:


二、接管计算机运行权

        在运行引导代码阶段会将磁盘的第0个扇区(每个扇区大小为512字节)加载到0x7c00处开始运行利用这个特性就可以进行操作接管计算机运行权,即通过更改第0个扇区的数据即可接管计算机的运行权。(其中引导标识是扇区的最后两个字节,通过引导标识即可表明该程序为启动程序)

        其中BIOS引导代码阶段会执行两个操作: 

        1. 检查引导标示
                引导标示为:
                    1FE:0x55
                    1FF:0xaa
        2. 读取加载

        此处引用我本人的笔记截图(字迹略丑敬请谅解):

        


三、工程结构及启动流程

         李述铜老师的手写操作系统使用的GCC工具链对C文件及汇编文件进行编译和汇编并且使用CMake工具对整个工程进行编译和管理,因此工程结构中存在CMake配置文件。

        整个工程的基础框架如图所示:

        其中:

        .vscode文件中保存着整个工程的配置的目录

        .vscode
              |--launch.json-----保存着一些配置,调试时,vscode会从中读取一些参数。如:
                                "program"表示在调试时会加载改路径指示下的文件,
                                "MIDebuggerPath"表示使用什么启动调试
                                "miDebuggerServerAddress"表示在什么端口号启动调试
              |--settings.json-----了解或不了解都没关系,给vscode的一些设置信息

              |--tasks.json-----给vscode的一些应用,当点击vscode终端->运行任务所显示
                                的任务就是通过这个文件设置的

        script 下存的是一些shell脚本文件
        source 文件夹是按目录来组织存储工程,每一个子目录都是一个工程,外部的CMakeLists.txt就是整个大工程的配置文件,每个子目录下的CMakeLists.txt文件就是用来配置子工程的

        此处引用我个人笔记截图,其中source文件为最终手写完成后的操作系统程序结构:        


 项目gitee地址:https://gitee.com/jim-jenny/x86-32OS 

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值