其余的初始化

系统其余部分的初始化已经给出了。请自行阅读代码查看~

初始化8259A

8259A叫做可编程中断控制器,而initIntr的作用就是对8259A进行“编程”。如果对硬件有兴趣的话,可以自行寻找资料阅读。

初始化gdt,tss

这一部分在kvm.c中。这次,memory.h里面写好了很多宏,可以帮助我们快速填写gdt。

exercise18:阅读代码后回答,用户程序在内存中占多少空间?

初始化VGA

看到这个部分,有没有想起数电实验呢......

初始化键盘

这部分跟数电实验也有所重合!以下代码用于获取键盘扫描码,每个键的按下与释放都会分别产生一个键盘中断,并对应不同的扫描码;对于不同类型的键盘,其扫描码也不完全一致。

uint32_t getKeyCode() {
	uint32_t code = inByte(0x60);
	uint32_t val = inByte(0x61);
	outByte(0x61, val | 0x80);
	outByte(0x61, val);
	...
	return code;
}

Last updated