,这些程序让设备执行操作,并且处理设备引起的中断,并且与因为设备I/O而被阻塞的进程.设备驱动程序往往非常难设计,因为设备和设备驱动程序是一起工作的,而且编写设备驱动程序需要对硬件接口有着深入的了解,这一点往往非常难...程序会通过read这个系统调用来获得控制台输入.综合起来就是
QEMU模拟的UART硬件->操作系统的内核->用户程序的read系统调用....在实际的电脑中,16550芯片会管理RS232这个串行链路来连接到其他终端,在QEMU中,这个模拟的芯片连接你的键盘和屏幕....时钟中断
RISC-V的CPU在一定的时间段就会触发一次时钟中断,RISC-V希望时钟中断能在M态处理而不是在S态处理.xv6选择在一个特殊的方法来处理时钟中断....在start.c中,我们设置了把所有中断都放在S态进行处理.但是我们在timeinit函数中创建了一个专属于时钟中断的处理模式.主要有几点:
配置了CLINT硬件,这个硬件会在一定间隔时间触发一次中断.