关于内核的理解,有会的麻烦进来指导下。

时间:2021-07-08 15:44:17
今天阅读了寒江独钓这本书,19页里面提到了驱动执行是存在于用户进程中的。
那我可不可以理解成,内核空间只是存放操作硬件的代码,如果有进程需要使用操作硬件的代码,就将代码移至用户空间的进程中执行?

5 个解决方案

#1


“移至用户空间的进程中执行”
这个“移至”肯定不对,驱动代码都是在内核空间执行的。
而且,代码也说不上“存放”在内核空间还是用户空间。

个人理解:
驱动执行肯定是代表着某个用户空间的进程。因为驱动代码只有在某个用户空间的进程调用他的时候才会执行,他不会自己独立开始执行的。

#2


“驱动执行肯定是代表着某个用户空间的进程”这里代表用户空间具体是怎么代表的,麻烦能解释下吗


引用 1 楼 bluejays 的回复:
“移至用户空间的进程中执行”
这个“移至”肯定不对,驱动代码都是在内核空间执行的。
而且,代码也说不上“存放”在内核空间还是用户空间。

个人理解:
驱动执行肯定是代表着某个用户空间的进程。因为驱动代码只有在某个用户空间的进程调用他的时候才会执行,他不会自己独立开始执行的。

#3


细节我也不懂。
驱动难免要执行一些与用户空间交互的函数, 比如说copy_to_user吧, 他把数据从内核空间复制到用户空间, 肯定能准确地复制到调用这个驱动的那个用户空间进程, 而不会写到别的进程去

#4


引用 3 楼 bluejays 的回复:
细节我也不懂。
驱动难免要执行一些与用户空间交互的函数, 比如说copy_to_user吧, 他把数据从内核空间复制到用户空间, 肯定能准确地复制到调用这个驱动的那个用户空间进程, 而不会写到别的进程去

说复制不对,内核空间和用户空间都是逻辑空间,不是物理隔离的,你的内存条上并没有标明系统内存条或用户内存条不是么,做个内核—用户状态转换,改下映射关系就行了

#5


内核应该不会把什么东西放到用户空间去做吧,而是应用空间是通过一些内核函数来完成相关的执行任务。
还有我觉得说内核只负责操作硬件的代码是不太对的,这样好像把内核平面话了,说成只是一个和硬件相连的一个面了,我觉得它应该是立体的。

#1


“移至用户空间的进程中执行”
这个“移至”肯定不对,驱动代码都是在内核空间执行的。
而且,代码也说不上“存放”在内核空间还是用户空间。

个人理解:
驱动执行肯定是代表着某个用户空间的进程。因为驱动代码只有在某个用户空间的进程调用他的时候才会执行,他不会自己独立开始执行的。

#2


“驱动执行肯定是代表着某个用户空间的进程”这里代表用户空间具体是怎么代表的,麻烦能解释下吗


引用 1 楼 bluejays 的回复:
“移至用户空间的进程中执行”
这个“移至”肯定不对,驱动代码都是在内核空间执行的。
而且,代码也说不上“存放”在内核空间还是用户空间。

个人理解:
驱动执行肯定是代表着某个用户空间的进程。因为驱动代码只有在某个用户空间的进程调用他的时候才会执行,他不会自己独立开始执行的。

#3


细节我也不懂。
驱动难免要执行一些与用户空间交互的函数, 比如说copy_to_user吧, 他把数据从内核空间复制到用户空间, 肯定能准确地复制到调用这个驱动的那个用户空间进程, 而不会写到别的进程去

#4


引用 3 楼 bluejays 的回复:
细节我也不懂。
驱动难免要执行一些与用户空间交互的函数, 比如说copy_to_user吧, 他把数据从内核空间复制到用户空间, 肯定能准确地复制到调用这个驱动的那个用户空间进程, 而不会写到别的进程去

说复制不对,内核空间和用户空间都是逻辑空间,不是物理隔离的,你的内存条上并没有标明系统内存条或用户内存条不是么,做个内核—用户状态转换,改下映射关系就行了

#5


内核应该不会把什么东西放到用户空间去做吧,而是应用空间是通过一些内核函数来完成相关的执行任务。
还有我觉得说内核只负责操作硬件的代码是不太对的,这样好像把内核平面话了,说成只是一个和硬件相连的一个面了,我觉得它应该是立体的。