1.系统调用 必须检查参数是否有效,系统调用在内核空间调用,安全性
2.文件io检查文件描述符,进程检查pid
3.保护用户提供的指针是否有效
在接收一个用户指针之前
1.指针指向的内存区域属于用户空间,进程决不能哄骗内核去读内核进程里的数据
2.指针指向的内存区域在进程的地址空间里,进程决不能哄骗内核去读其他进程的数据
3.如果是读,内存标志位为读,如果是写,内存标志位为写,内存决不能绕过内核访问限制
内核不轻易接受用户传递过来的指针
内核空间和用户空间之间的数据交互
1.向用户空间写数据,copy_to_user(),其中需要三个参数,源地址,目标地址,要负责是数据长度
2.从用户空间读数据,copy_from_user(),
这两个函数都会引起堵塞,当包含用户数据的页不是存到物理内存而是外部硬盘时,内核就会休眠,直到缺页处理程序将数据从硬盘移回内存。