自己写USB 操作系统
2016-02-19 14:36
274 查看
结合前面USB Boot Loader 1、2的代码和之前bochs调试的代码,就可以实现在Loader.bin内进入操作系统的保护模式,而把操作系统的代码完全放入KERNEL.BIN内,这就完成了一个很小的勉强称得上是操作系统的demo。到此Loader.bin的功能暂时还算完善,下面就可以走上正轨完善内核Kernel的代码了。
要求:
1、KERNEL.BIN是ELF32格式的,可以直接在Linux系统下编译得到
2、LOADER.BIN是纯二进制格式的,在windows或者Linux下编译均可以
3、汇编软件仍然是nasm
Loader流程:
1、检查可用内存大小
2、载入KERNEL.BIN文件到内存
3、初始化GDT、各描述符
4、LGDTR 加载全局描述符
5、打开A20地址线
6、cr0寄存器PE位置1
7、进入保护模式
8、分析KERNEL.BIN的文件结构,将执行代码重新整合
9、执行内核kernel代码
Kernel实现的功能:
1、代码运行于保护模式
2、实现了中断处理以及中断的重入
3、实现多进程以及简单的基于优先级的进程调度
4、实现键盘输入和3个简单的tty功能
思考:
1、在dbr.bin中把Loader.bin的大小限制为了4KB
2、进入保护模式后BISO提供的中断例程不能继续使用了,功能需要自己实现
git仓库地址 https://git.oschina.net/gdhander/OSminix.git
要求:
1、KERNEL.BIN是ELF32格式的,可以直接在Linux系统下编译得到
2、LOADER.BIN是纯二进制格式的,在windows或者Linux下编译均可以
3、汇编软件仍然是nasm
Loader流程:
1、检查可用内存大小
2、载入KERNEL.BIN文件到内存
3、初始化GDT、各描述符
4、LGDTR 加载全局描述符
5、打开A20地址线
6、cr0寄存器PE位置1
7、进入保护模式
8、分析KERNEL.BIN的文件结构,将执行代码重新整合
9、执行内核kernel代码
Kernel实现的功能:
1、代码运行于保护模式
2、实现了中断处理以及中断的重入
3、实现多进程以及简单的基于优先级的进程调度
4、实现键盘输入和3个简单的tty功能
思考:
1、在dbr.bin中把Loader.bin的大小限制为了4KB
2、进入保护模式后BISO提供的中断例程不能继续使用了,功能需要自己实现
git仓库地址 https://git.oschina.net/gdhander/OSminix.git
相关文章推荐
- java项目中常见jar包的说明
- Tensorflow MNIST 数据集测试代码入门
- 迁云架构实践
- leetcode笔记--Delete Node in a Linked List
- 328. Odd Even Linked List
- 我的2016年计划
- 区分微信内置浏览器
- iOS学习之Socket使用简明教程- AsyncSocket
- collection.toArray(new String[0])中new String[0]的作用
- Android数据库高手秘籍(七)——体验LitePal的查询艺术
- unity 内存优化
- php 引用详解
- java中transient关键字
- WinCE 下 RETAILMSG 如何能在串口工具(SSCOM) 中输出汉字
- 【转】俞军给淘宝产品经理的分享
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- 简单爬虫模拟登陆phpmyadmin
- CentOS常用的文件操作命令总结
- spring初步学习---注入配置文件变量
- UE4 AnimMontage