从零开始写操作系统01: 运行HelloOS

本专栏是在学习LMOS的《操作系统实战45讲》时的学习笔记,以检验学习效果。

操作系统的启动

在这里插入图片描述
BIOS固件一般是PC机才有的,在嵌入式设备中一般没有BIOS. BIOS是固定放在主板的ROM中的,PC上电后执行的第一条指令即是BIOS. BIOS的主要目的是做一些硬件检测,然后最重要的工作是将硬盘中的GRUB程序加载到内存的固定位置(0x7c00)处,然后CPU会跳转到此处执行。然后由引导程序加载和启动操作系统。

编译HelloOS

HelloOS是《操作系统实战45讲》中的示例OS,代码结构如下:

doalter@doalterUbuntu:~/Documents/code/cosmos/lesson02/HelloOS$ tree
.
├── entry.asm
├── hello.lds
├── install.md
├── main.c
├── Makefile
├── vgastr.c
└── vgastr.h

这一节先不用关心操作系统的实现细节。只需要知道操作系统是怎么运行起来的。

  1. entry.asm是汇编程序,被GRUB调用,主要目的是初始化寄存器,设置C语言运行环境,并调用main.c
  2. main.c只有一个printf函数,向屏幕打印一个字符串
  3. printf函数需要自己实现,所以有了vgastr.c函数,其功能是向显存写字符。显存文本模式下的地址是0xb8000, 即往这个地址写字符就可以了。每个字符用一个字节表示字符本身,一个字节表示颜色。
doalter@doalterUbuntu:~/Documents/code/cosmos/lesson02/HelloOS$ cat vgastr.c
//彭东 @ 2021.01.09

void _strwrite(char* string)
{
   
    char* p_strdst = (char*)(0xb8000);
    while (*strin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值