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