随笔分类 - GrapeOS
摘要:简介 学习操作系统原理最好的方法是自己写一个简单的操作系统。 GrapeOS是一个非常简单的x86多任务桌面操作系统,源代码只有四千行,非常适合用来学习操作系统原理。 源码地址:https://gitee.com/jackchengyujia/grapeos 视频教程地址:https://www.b
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 之前讲解开发环境时并没有介绍具体的安装过程,有网友反应CentOS的安装配置有问题,尤其是共享文件夹。本讲我们就来补充介绍一下在VirtualBox中安装配置CentOS的具体过程,彻底解决GrapeOS开发环境问题。 一、新建虚拟机 1.在V
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 GrapeOS操作系统之前一直运行在模拟器和虚拟机中,今天我们来演示一下GrapeOS在真机上运行的情况。 一、物理机真机 今天演示用的真机是一台ThinkPad笔记本电脑,照片如下: 二、开机桌面 按电脑的电源按钮开机,由于GrapeOS非常
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 之前我们在电脑的启动过程中介绍过boot程序的主要任务就是加载并运行loader程序,本讲我们就来实现。 本讲代码文件共2个: boot.asm loader.asm 一、代码及讲解 本讲所用到的知识点都是之前已经用过的,只是在本讲中综合应用了
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 本讲代码文件为boot.asm,要读取的文件为data.txt。 一、在FAT16文件系统中读取文件的流程 在GrapeOS中用到的文件少且小,所有文件都放在了根目录下,数量不会超过16个,占用的簇不会超过254个。所以读取目录项只需要读取根目
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 新买的硬盘和优盘在第一次使用时需要格式化,有时候还需要分区。这是为什么呢?分区和格式化到底是干啥呢?本讲将为大家解开这些疑惑。 一、文件系统 1.分区 首先说一下分区,我们平时看到的C盘、D盘等就是一个个分区。硬盘第一个扇区的一部分固定空间叫做
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 在上一讲中我们学习了用汇编语言读硬盘,本讲我们来学习用汇编语言写硬盘。同样也是设计一个简单的实验,实验内容为: 在内存中准备一段有特征的512字节数据,地址为0x7e00~0x7fff,其特征是前3个字节依次为4、5、6,最后3个字节依次为6、
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 本讲我们设计一个简单的读硬盘实验。通过一定的方法使硬盘第二个扇区的前3个字节依次为1、2、3,最后3个字节依次为3、2、1,中间的506个字节全为0。然后通过读硬盘程序将硬盘第二个扇区的数据读取到内存0x7e00-0x7fff的地方,也就是内存
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 一、硬盘控制器 我们前面已经讲过硬盘控制器是一种I/O接口,CPU通过它就能间接的读写硬盘。硬盘控制器主要有IDE和SATA两种,我们这里只考虑IDE控制器。 电脑里硬盘控制器有2个,一个叫主控制器,另一个叫从控制器。而每个硬盘控制器能连接两个
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 一、外设和I/O接口 前面我们介绍过冯·诺依曼结构包含5部分,其中输入设备和输出设备统称为外部设备,简称外设。常见的外设有鼠标、键盘、显示器、硬盘等。由于外设种类多、差异大、速度慢等原因,导致CPU无法直接与外设沟通。于是在CPU和外设之间产生
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 在QEMU中会默认输出一些字符,有时候会干扰我们自己输出的字符。一个比较好的办法是向将屏幕清空,再输出我们想要输出的字符。下面就来学习如何清空屏幕。 一、清空屏幕 其实清空屏幕的原理很简单,就是将屏幕写满空格就行了。 下面来实战。mbr8.as
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 在上一讲中我们向屏幕打印字符串“GrapeOS”用了十几行汇编代码,如果要输出的字符比较多,这种方法太繁琐了。本讲我们将打印字符串封装成一个函数,使用时就方便多了。 一、mbr7.asm mbr7.asm代码如下: org 0x7c00 ;如果
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 在上一讲中我们介绍了屏幕显示的原理,本讲我们来实战一下。 一、向屏幕输出一个字符mbr4.asm mbr4.asm中的代码如下: ;将屏幕第一行的第一个字符显示为‘G’。 mov ah,0x07 ;黑底白字 mov al,'G' ;G的ASCI
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 一、屏幕显示原理 电脑显示器屏幕是由很多很小的像素组成的。每个像素就像是一个小灯泡,在屏幕上一排一排的整齐排列着。只要能控制每个像素的颜色就能显示出各种各样的图形。如果近距离观察过会场或室外的大屏幕会有更直观的感受,这种大屏幕上每个像素就是一个
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 前面铺垫了这么久,今天终于开始写程序了。本讲将介绍3个逐步深入但非常简单的程序,一方面是让大家熟悉开发流程,另一方面是顺便解决前面遇到的CPU占用率高的问题。 一、mbr1.asm回顾 mbr1.asm的代码之前我们介绍过,这里我们回顾一下代码
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 写程序不免需要调试,写不同的程序调试方式也不同。如果做应用软件开发,相应的程序调试方式是建立在有操作系统支持的基础上的。而我们现在是要开发操作系统,如何调试操作系统的程序呢?如果操作系统程序直接跑在真机上或虚拟机上(比如VirtualBox)是
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 前面我们介绍过电脑的启动过程: 上电->BIOS->MBR(boot)->loader->kernel->交互界面(图形/命令行) 本讲我们要介绍的是MBR(Master Boot Record,主引导记录)。在电脑中对磁盘的读写是按扇区为基本
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 汇编语法主要有两种:Intel语法和AT&T语法。 由于大部分介绍x86汇编的书籍和资料用的都是Intel语法,毕竟x86就是Intel发明的,大家学过的x86汇编大概率也是Intel语法,所以GrapeOS的汇编也用Intel语法。 支持In
阅读全文
摘要:学习操作系统原理最好的方法是自己写一个简单的操作系统。 在GrapeOS中会用到2种CPU模式,一种是实模式(real mode),另一种是保护模式(protected mode)。在本教程中,保护模式特指32位保护模式。这两种模式最主要的不同点是对内存地址的访问方式不同,此外还有其它的不同点。这两
阅读全文
摘要:由于GrapeOS目前只支持x86,所以本讲我们简单的介绍一下x86。 百度百科上是这样介绍的:x86泛指一系列基于Intel 8086且向后兼容的中央处理器指令集架构。 中央处理器就是我们平时说的CPU,英文全称是Central Processing Unit。 有人可能对指令集不是很清楚。计算机
阅读全文