而设备往往会自己产生数据,并且需要主动通知CPU来读这些数据,例如敲键盘产生一个输入字符,用户希望计算机马上响应自己的输入,这就要求键盘设备主动通知CPU来读这个字符并做相应处理(硬中断),给用户响应。...由于各种设备的操作方法各不相同,每种设备都需要专门的设备驱动程序(DeviceDriver),一个操作系统为了支持广泛的设备就需要有大量的设备驱动程序,事实上Linux内核源代码中绝大部分是设备驱动程序...设备驱动程序通常是内核里的一组函数,通过读写设备寄存器实现对设备的初始化、读、写等操作,有些设备还要提供一个中断处理函数供ISR调用。
...操作系统和MMU是这样配合的:
1.操作系统在初始化或分配、释放内存时会执行一些指令在物理内存中填写页表,然后用指令
设置MMU,告诉MMU页表在物理内存中的什么位置。...可以说如read,write这样的系统调用的底层实现都是利用了这3条汇编指令,系统调用只是进入内核程序的一个接口,内核调用内核函数(如中断异常服务程序,实现各种普通文件操作的内核函数,各种设备驱动程序等