【操作系统】30天自制操作系统--(5)分割编译与中断处理

本文详细介绍了如何通过整理源文件、初始化中断控制器(PIC)和设置中断向量表(IDT)来处理键盘和鼠标中断。首先,源代码被拆分成多个功能模块,并更新了Makefile。接着,重点讲解了中断处理的两个步骤:初始化PIC,包括设置中断屏蔽寄存器和初始化控制字,以及创建中断处理程序并将其注册到IDT中。最后,展示了中断处理程序在实际运行中的效果,尽管键盘中断已生效,但鼠标仍无响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        上一章的GDT/IDT内容结束的没头没尾的,这一章会接着介绍。

        这一章做了这么两件事情,一是将目前略显冗余的源文件bootpack.c整理了一下,分成了几个具有不同功能的源文件二是继续上一章节的内容,在初始化中断向量表之后,设置新的中断关联鼠标和键盘

我觉得这一章的内容虽然短小,却还是挺重要的。

一 分割编译

目前的源文件内容已经比较多了,包含了GDT/IDT的配置初始化,调色板的初始化,屏幕(尺寸等)的初始化,还有绘制光标、显示字符等应用部分。

作者将bootpack.c分成了三个部分:

        这边的分割不难,只是对应的Makefile也要对应进行修改,原先是直接编译bootpack.c的内容,现在要编译三个源文件的内容并整合成一个:

 

         在这个过程中,使用通配符%来使得Makefile文件精简化:

%.gas : %.c Makefile
	$(CC1) -o $*.gas $*.c

%.nas : %.gas Makefile
	$(GAS2NASK) $*.gas $*.nas

%.obj : %.nas Makefile
	$(NASK) $*.nas $*.obj $*.lst

二 中断处理

        中断处理包含两个部分,一是初始化PIC、二是中断处理程序的制作。下面分别介绍:

【1】初始化PIC(programmable interrupt controller,可编程中断控制器)

        在设计上,CPU只能单独处理一个中断,而PIC是将8个中断信号1集合成一个中断信号的装置。PIC监视着输入管脚 的8个中断信号,只要有一个中断信号进来,就将唯一的输出管脚信号变成ON,并通知给CPU:

        上面的IRQ即中断请求,一个CPU有16个IRQ,一般都预分配给以下几个硬件使用:

中断请求 硬件设备
IRQ0 系统计时器
IRQ1 键盘
IRQ2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值