WangFuJie Blog

路在脚下,心向远方

自制操作系统 - 键盘驱动

键盘驱动

键盘中断时8259a芯片的1号中断,中断向量为0x21。当键盘按键时,需要处理0x21中断,获取按下的扫描码,根据不同的扫描码进行处理,例如字符就打印。目前使用键盘都是第二套扫描码,但是内部会被8042转换为第一套扫描码,因此第一套不存在的扫描码就属于扩展码。

自制操作系统 - multiboot2引导

multiboot2引导

Multiboot2是一个协议标准,GRUB 是这个协议的实现,在linux中一班时钟grub引导操作系统,而不是我们自己写的bootloader。使用grub引导需要遵循grub的规范来进行内核的一些列初始化

自制操作系统 - 互斥、信号量与锁

互斥、信号量与锁

在遇到多进程共享资源时,会遇到资源争抢问题,前边我们通过关中断解决。这里通过通过互斥量和锁来解决临界区的问题,锁分为互斥锁、自旋锁、读写锁三种,我们开发的单处理系统,暂不实现自旋锁。

自制操作系统 - 任务状态

任务状态

任务处理就绪态和运行态之外,还有阻塞态和休眠态。本文中将实现任务进入阻塞态和休眠态的实现,详细介绍进入阻塞和解除阻塞已经休眠和唤醒。进入阻塞和休眠的任务分别使用双向链表进行管理。

自制操作系统 - 系统调用

系统调用

系统调用是用户进程与内核沟通的方式。可以将 CPU 从用户态转向内核态;系统调用通过中断门来实现。本文将实现系统调用的框架,并实现一个yield系统调用。yield的作用是进程主动交出执行权,去调度执行其他进程。