1.在应用程序1中遇到打印字符串abcd指令后,发起一个系统调用进入内核态
2.cpu设置DMA控制器,包括需要打印的数据源地址,数据目的地址,数据长度
3.cpu然后去执行应用程序2
4.DMA负责打印abcd,待打印结束之后,DMA控制器会给cpu发起一个中断,表示数据打印完成了
5.cpu查中断向量表执行打印机中断服务程序,会到应用程序1接着执行。。。。
数据搬移都是通过DMA来做的。
系统调用的核心问题之一:用户态到内核态之间的切换
库函数是一层一层的进行封装