实现一个OS需要现在网上搜索
- 不要在Windows环境下写
- nasm等汇编编译器的语法
- bois中断函数使用
- 内存分布
- 描述符
- 实模式与保护模式
- 从实模式到保护模式比较难,可以从网上找一些代码能运行自己理解就行了
- 页表
- 硬盘与软盘的结构
- 制作软盘:高级语言编写工具或者直接只用Linux下的命令行工具
- 系统算法
- 与硬件有关的操作(端口,相应中断等)都用汇编写了,逻辑在C中写,必要时调用汇编中的函数,接着再调用C语言封装好的函数
- 汇编应该实现的操作(被C语言调用)
- 端口的读入读出
流程
- 先写一个Hello world=》测试
- 将Hello world改写为bootloader和kernel=》测试
- 在kernel中实现实模式到保护模式-》测试
- 可以用C语言了(因为C语言需要堆栈,所以需要在kernel中配置堆栈的描述符和内存空间(定义512或者其他),关于GDT的修改都是在进入保护模式之前)
- 将显卡从字符模式切换到图形模式(调用BIOS函数)=》测试
- 界面
- 将显卡的图形模式再转为调色板模式=》测试绘制背景图形
- 绘制字体和字符串(Windows NT的内核就是通过将调试信息绘制在屏幕上实现Windows NT内核的调试的,又因为画字体不方便,于是写了GDI相关的API,Windows NT的GUI就是在内核态的,Linux没有这样子使用,它使用的还是文本模式)
- 绘制鼠标
- 图像分层(桌面图形绘制(消耗CPU))
- 中断描述符=》测试(键盘与鼠标)
- 鼠标的移动
- 时钟
- 内存
- 检测可用内存
- 进程
- 借助TSS