看了linux代码,感觉其对内核内存的保护做得不是很好,还有感觉大家有些地方理解不对(主要是 linux的代码看起来的样子和实际的样子不太一样),所以谈谈我对linux系统内核空间的保护和用户空间与系统空间数据传递的代码看法。注意我说的都 是I386体系结构,别的体系结构可以看相应的代码,不敢保证结果是否是如我所说。 linux建立进程的时候建立了两套段描述符,在文件Segment.h有说明。 #ifndef _ASM_SEGMENT_H #defi...
拷贝用户数据到内核空间: #define __copy_user_zeroing(to,from,size) \ do { \ int __d0, __d1; \ __asm__ __volatile__( \ "0: rep; movsl\n" \ /* 拷贝整长的字节数size / 4 */ " movl %3,%0\n" \ "1: rep; movsb\n" \ /* 拷贝余下的字节数size % 4*/ "2:\n" \ ".section .fixup,\"ax\"\n" \ "3: lea 0(%3,%0,4),%0\n" \ /* 0(%3 + %0 * 4 ) */ ...
(1)让我们忽略linux对段式内存映射的支持。在保护模式下,我们知道无论CPU运行于用户态还是核心态,CPU执行程序所访问的地址都是虚拟地址,MMU 必须通过读取控制寄存器CR3中的值作为当前页面目录的指针,进而根据分页内存映射机制(参看相关文档)将该虚拟...
procfs、seq_file、debugfs和relayfs 级别: 初级 燚 杨 ( [email=yang.y.yi@gmail.com?subject=procfs、seq_file、debugfs和relayfs]yang.y.yi@gmail.com[/email] ), 计算机科学硕士 2006 年 2 月 16 日 本系列文章包括两篇,它们文详细地地介绍了linux系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数与sysfs、sysctl、系统调用、netlink、procfs、seq_file、debugfs和relayfs,并给出具体的例子帮助读...
内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink 级别: 初级 燚 杨 ( [email=yang.y.yi@gmail.com?subject=内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink]yang.y.yi@gmail.com[/email] ), 计算机科学硕士 2006 年 2 月 16 日 本系列文章包括两篇,它们文详细地介绍了 linux 系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数与 sysfs、sysctl、系统调用、netlink、procfs、seq...
在 linux 下用户空间与内核空间数据交换的方式,第 2 部分: procfs、seq_file、debugfs和relayfs 燚 杨 ( [email=yang.y.yi@gmail.com?subject=procfs%E3%80%81seq_file%E3%80%81debugfs%E5%92%8Crelayfs]yang.y.yi@gmail.com[/email] ), 计算机科学硕士 2006 年 2 月 16 日 本 系列文章包括两篇,它们文详细地地介绍了linux系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数与sysfs、 sysctl、系统...
在 linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink 燚 杨 ( [email=yang.y.yi@gmail.com?subject=%E5%86%85%E6%A0%B8%E5%90%AF%E5%8A%A8%E5%8F%82%E6%95%B0%E3%80%81%E6%A8%A1%E5%9D%97%E5%8F%82%E6%95%B0%E4%B8%8Esysfs%E3%80%81sysctl%E3%80%81%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8%E5%92%8Cnetlink]yang.y.yi@gmail.com[/email] ), 计算机科学硕士 ...
http://www.ibm.com/developerworks/cn/linux/l-kerns-usrs/ 系列文章包括两篇,它们文详细地介绍了 linux 系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数与 sysfs、sysctl、系统调用、netlink、procfs、seq_file、debugfs和relayfs,并给出具体的例子帮助读者掌握这些技术的使用。 本文是该系列文章的第一篇,它介绍了内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink,并结合给出的例子...
转自:http://www.ibm.com/developerworks/cn/linux/l-kerns-usrs/ 本系列文章包括两篇,它们文详细地介绍了 linux 系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数与 sysfs、sysctl、系统调用、netlink、procfs、seq_file、debugfs和relayfs,并给出具体的例子帮助读者掌握 这些技术的使用。 本文是该系列文章的第一篇,它介绍了内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink,并结合给出的...
转自:http://www.ibm.com/developerworks/cn/linux/l-kerns-usrs2/ 本系列文章包括两篇,它们文详细地地介绍了linux系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数 与sysfs、sysctl、系统调用、netlink、procfs、seq_file、debugfs和relayfs,并给出具体的例子帮助读者掌 握这些技术的使用。 本文是该系列文章的第二篇,它介绍了procfs、seq_file、debugfs和relayfs,并结合给出的例子程序详细地说明了...