
从头开始写操作系统
文章平均质量分 80
笔者在动手写此操作系统时是一名大学本科大二的学生,可能文章中会有好多地方我没有解释清楚,可能也会有许多地方出现错误,我恳请各位读者能提出质疑和纠正我的错误,谢谢!
冰水比水冰
我是码农,却假装是程序员。
展开
-
【从头开始写操作系统系列】页表以及相关的描述符详解
在之前的文章中,我们介绍过 GDT(全局描述符表)以及一致代码段和非一致代码段,这篇文章我们再回到描述符,这次我们来以 ARM 架构为例了解一下页表描述符。在这篇文章中,我们会看到以下内容:页表是什么?一级页表的地址变换过程由一级描述符来获取二级描述符或者段地址的过程原创 2015-12-26 00:24:03 · 7612 阅读 · 1 评论 -
【从头开始写操作系统系列】一致代码段与非一致代码段
上几篇文章,我们一直在讨论的都是 GDT 相关的一些问题,现在我们知道在系统在从实模式向保护模式跳转时,GDT 是必须要准备的结构。在介绍这一跳转之前,这篇文章我们来介绍两个概念:一致代码段和非一致代码段。首先,我们先来看几个问题:一致代码段和非一致代码段是什么?为什么要有一致代码段和非一致代码段?系统提供怎样的机制来使用户程序访问内核数据?程序如何在段与段之间跳转?接下来,我们将讨论上原创 2015-08-18 16:54:42 · 4704 阅读 · 1 评论 -
【从头开始写操作系统系列】实现一个 GDT(3)
上两篇文章,【从头开始写操作系统系列】实现一个-GDT(1)、【从头开始写操作系统系列】实现一个-GDT(2),主要介绍了段描述符结构以及实现和选择子结构。这篇文章,我们结合之前所述,对 GDT 做一个总结。全局描述符表(GDT)全局描述符表是在保护模式下才用到的结构。在整个系统中,全局描述符表只有一张,可以放在内存的任何位置,但是CPU必须知道它的入口地址,也就是其基地址(Base),Intel原创 2015-08-12 09:04:50 · 3333 阅读 · 0 评论 -
【从头开始写操作系统系列】实现一个-GDT(2)
在这篇文章我们将要做:介绍选择子实现一个选择子结构选择子是什么?在上篇文章中我们介绍了段描述符以及段描述符表,这篇文章我们复习一下段、段描述符、段描述符表的功能,并且介绍一下段选择子以及段描述符表。段(Segment):在80X86中,我们知道分段机制将内存空间分为了多个线性区域,我们把这些线性区域称为段。由于我们要将这些段区分开来,于是我们对段赋予3个属性。他们分别是段基址(Base)、段原创 2015-08-07 22:38:12 · 3979 阅读 · 0 评论 -
【从头开始写操作系统系列】实现一个-GDT(1)
在这篇文章中我们完成了以下内容:介绍 GDT介绍段描述符实现一个段描述符介绍 GDTGDT 是什么?GDT(Global Descriptor Table)是一种数据结构,用来提供段式存储机制,这种机制是通过段寄存器和 GDT 中的描述符共同提供的。在保护模式下,虽然现在的寄存器已经有32位的,但是我们依旧采用『段:偏移』的形式来寻址,只不过『段』的概念就相当于 GDT,段值仍然由16位的原创 2015-08-07 13:41:11 · 4519 阅读 · 0 评论 -
【从头开始写操作系统系列】使用 Bochs 调试操作系统
在上一篇文章《环境搭建以及第一个Hello-World》中,笔者讲了如何安装 bochs 以及运行一个 helloworld 操作系统,但是使用上一篇文章中的方法安装的 bochs 是不支持调试的,下面我讲介绍如何使用源码编译的方法来安装 bochs,以及使用 bochs 来调试操作系统。编译安装 Bochs下载 bochs 源码http://sourceforge.net/projects/原创 2015-08-04 13:04:23 · 8104 阅读 · 0 评论 -
【从头开始写操作系统系列】环境搭建以及第一个Hello World
写在最前 笔者在动手写此操作系统时是一名大学本科大二的学生,可能文章中会有好多地方我没有解释清楚,可能也会有许多地方出现错误,我恳请各位读者能提出质疑和纠正我的错误,谢谢!参考书籍:《30天自制操作系统》川合秀实《ORANGE’S:一个操作系统的实现》开发环境笔者采用以下开发环境Apple Macbook AirUbuntu 12.04 LTS(32 bit)读者准备 毕竟是动原创 2015-08-04 09:52:13 · 5359 阅读 · 4 评论