这一章是有些复杂的,我不太懂作者为什么要把这么多内容都放进一天。 1读入了十个柱面 2从启动区执行操作系统 3进入32位 4导入C语言 makefile的内容: 注意end.exe,在第二天,作者提到:自己开发的磁盘映像管理工具end.exe,先读入一个空白的磁盘映像文件,然后在开头写入ipl.bi ...
分类:
其他好文 时间:
2016-04-03 14:40:28
阅读次数:
771
一开始,主要是将之前看不懂的代码,转化为正常人用的汇编代码。 org 0x7c00; 告诉nask,在开始执行的时候,将这些机器语言指令装载到内存哪一部分。 ...
分类:
其他好文 时间:
2016-03-31 09:34:42
阅读次数:
176
一开始作者搞了一个装满二进制的文件,用binary editor来制作。该软件下载地址http://www.vcraft.jp/soft/bz.html 当然,在我看来,这些二进制没什么意义,因为根本无法阅读。 但作者是想让读者了解cpu其实就是解读二进制指令的。 直接附上第一天的汇编代码: 无语的 ...
分类:
其他好文 时间:
2016-03-28 21:26:43
阅读次数:
138
第一个任务是启动。计算机的启动,参考本篇:http://www.cnblogs.com/rixiang/p/5075825.html两个重要的概念:1,boot:软盘的第一个扇区区为启动区。(计算机读写软盘的时候,不是一个字节一个字节的读取的,而是512字节为一个单位来读写。因此,软盘的512字节为...
分类:
其他好文 时间:
2015-12-27 19:05:37
阅读次数:
247
最近有很多空闲时间,把以前想学习的书翻出来检视一番,决定先看自制操作系统的。 ? ? 也不知道有没有耐性和水平看完!能看多少算多少吧,在这里留个学习笔记。 ? ? 今天是第一天,先配置环境。 一、操...
分类:
其他好文 时间:
2015-11-02 10:28:25
阅读次数:
168
我们把命令行窗口单独做成一个新的任务。
要实现字符输入,只要在键盘被按下的时候向console_task(命令行窗口任务)的FIFO发送数据即可。但要发送数据必须要知道struct FIFO的内存地址才行。
把 struct FIFO 放到 struct TASK里面。基本上没有什么任务是完全用不到FIFO的,因此我们把它们绑定起来。struct TASK {
int sel, fl...
分类:
其他好文 时间:
2015-10-08 21:39:07
阅读次数:
147
我们需要一种架构,使得即便高优先级的任务同时运行,也能够区分哪个更加优先。借助几个struct TASKCTL:
这种架构的工作原理是,最上层的LEVEL 0中只要存在哪怕一个任务,则完全忽略LEVEL 1 和 LEVEL 2中的任务,只在LEVEL 0的任务中进行任务切换。
音乐播放任务就可以放在LEVEL 0中,这样就可以保证获得比鼠标更高的优先级。...
分类:
其他好文 时间:
2015-09-12 23:46:54
阅读次数:
359
在上一篇文章《环境搭建以及第一个Hello-World》中,笔者讲了如何安装 bochs 以及运行一个 helloworld 操作系统,但是使用上一篇文章中的方法安装的 bochs 是不支持调试的,下面我讲介绍如何使用源码编译的方法来安装 bochs,以及使用 bochs 来调试操作系统。
编译安装 Bochs
下载 bochs 源码
http://sourceforge.net/projects/...
分类:
其他好文 时间:
2015-08-04 13:30:25
阅读次数:
105
写在最前
笔者在动手写此操作系统时是一名大学本科大二的学生,可能文章中会有好多地方我没有解释清楚,可能也会有许多地方出现错误,我恳请各位读者能提出质疑和纠正我的错误,谢谢!
参考书籍:
《30天自制操作系统》川合秀实
《ORANGE’S:一个操作系统的实现》
开发环境笔者采用以下开发环境
Apple Macbook Air
Ubuntu 12.04 LTS(32 bit)
读者准备
毕竟是动...
分类:
其他好文 时间:
2015-08-04 11:21:10
阅读次数:
262
定时器中断处理程序,以确保高效率。它需要一些优化,在这里,优化方法。对于一个操作系统,。有多个计时器。如果操作系统被维持500计时器。当定时器中断发生时,每次(这里我们设置1第二次出现100中断)。调用中断处理程序,这将中断处理500计时器if比量,。这样1秒内,就会有500X100=10000次i...
分类:
其他好文 时间:
2015-07-14 15:15:24
阅读次数:
155