用户内存和内核内存在Linux内核(内核空间安全性)方面有什么区别?如何从用户空间访问内核空间?
我可以从用户空间在内核地址空间中写入什么不同的方式?
我知道的一种方法是通过系统调用。我们可以使用多个系统调用,但最后他们都是系统调用。即使在系统调用中,我们也会将数据发送到内核空间,在那里它(驱动程序或相应模块)调用像copy_from_user()这样的函数将数据从用户空间复制到内核空间。这里我们完全没有写入地址空间。我们只是传递一个包含需要复制到内核缓冲区的数据的用户指针。
我的问题是有什么办法可以访问存在于内核空间中的物理地址并对其执行操作?
二,除了系统调用,还有其他的方式可以从用户应用程序写入内核空间吗?
我提到这个link从stackoverflow。但我认为我的问题没有在那里回答,而是从不同的角度来看。因此我想问一个不同的问题。
请分享您的知识... 谢谢。
首先了解x86分页如何工作:https://stackoverflow.com/questions/18431261/how-does-x86-paging-work,这将有所帮助。 – 2017-05-31 13:14:25
另请参阅[如何在不崩溃Linux内核的情况下访问mmaped/dev/mem?](https://stackoverflow.com/q/11891979/608639),[/ dev/mem的mmap失败且参数无效,但地址为页面对齐](https://stackoverflow.com/q/39134990/608639)和[如何从用户空间访问内核空间?](https://stackoverflow.com/q/9662193/608639) – jww 2017-07-11 03:24:06
您可能想要阅读[vDSO](https://en.wikipedia.org/wiki/VDSO)。 – 2018-02-13 12:51:04