30天自制操作系统 杂谈3

操作系统开发的TIPs

1.不要从一开始就想着去做一个操作系统。
2.不要指望能够一次就搞定,推翻重做几次也是很正常的。
3.为你的操作系统设定一个明确而又容易理解的目标。

如果明确了“什么是最优先的,什么又是可以放弃的”,操作系统的开发就会变得更加顺利。
同样的我们在学习本书的过程中,究竟什么是重要的,什么又是可以忽略的呢?
要和BIOS的各种设定死磕吗?要和Makefile,nas,C等等的代码死磕吗?

其实没有必要,笔者认为重要的是整个开发的过程,更重要的是开发可能遇到的问题,和应对的思路,而不是每个步骤具体的实现细节(30天也根本消化不完)
简单来说,笔者的目的是拿这本书去实践已经学过的理论,并给以后学操作系统打下基础。

分割源文件

想象一下,如果我们的操作系统所有源码在一个C文件里编写,我们要去改相应的模块得多麻烦。(其实比较大的工程都要分割)这里我们做一个分割源文件的思维导图:

在这里插入图片描述
在这里插入图片描述
这样可以带来两个好处:
1.小文件比大文件容易修改
2.稍微修改一下Makefile,只需编译修改过的文件,就可以提高make的速度。

GDT与IDT

我们使用分段,解决内存地址使用冲突这个问题。
表示一个段需要以下信息:
1.段大小
2.段的起始地址
3.段的管理属性

CPU用8个字节表示这些信息,由于段寄存器只有13位供段号使用,只能处理位于0~8191的区域。而这8192*8=64KB的信息就是GDT–global (segment)descriptor table,也就是全局段号记录表,俗称段表。这些数据存放在内存中,而在内存中的起始地址和有效设定个数存放在GDTR寄存器里面。

IDT是“interrupt descriptor table ”的缩写,直译为中断记录表。它记录了0~255的中断号码与调用函数的对应关系。设定方法与GDT类似。

初始化PIC

PIC是“programmable interrupt controller”的缩写,意思是“可编程中断控制器”。CPU单独只能处理一个中断,而PIC是将8个中断信号集合成一个中断信号的装置。但IBM的大叔认为电脑会有8个以上的外部设备,就增设了2个PIC。主板上的配线如图:
在这里插入图片描述
IRQ :interrupt request
有人纳闷了,讲啥硬件呀?这是因为这部分硬件结构是无法通过软件来改变的,只有了解之后才能顺利设定PIC。其实笔者觉得这硬件比代码更亲切,可能笔者比较适合搞“嵌入式设备”吧(笑)。

其中鼠标是IRQ12,键盘是IRQ1。由于这部分代码都是关于CPU的设定信息,比较固定枯燥,笔者就不罗列代码了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值