《Linux设计与实现》笔记——系统调用工作原理、添加系统调用的过程
2016-06-30 21:45
615 查看
系统调用的意义
为了和用户空间上的进程进行交互,内核提供的提供的一组接口。应用程序通过这组接口访问硬件和其他操作系统资源。
完成对硬件和资源访问的控制。安全、可靠,多任务、虚拟必须
硬件设备的抽象(提供设备的独立性)。
异常,陷入,系统调用 : 用户空间进入内核空间的三种方式
原理
sys_write会根据系统write输出的文件,调用相应struct file ,operations中的write方法。
添加系统调用的过程
以kernel 2.6.11为例 long my_syscall(int i);下载kernel 2.6的内核源码,切换到根目录
在/arch/i386/kernel/entry.S中sys_call_table最后添加 .long my_syscall
在/ include/asm-i386/unistd.h中的最后添加系统调用编号
#define __NR_my_syscall 338将NR_syscalls 数值+1
在/arch/i386/kernel/sys_i386.c文件添加系统调用的实现(不用修改mkefile)
asmlinkage long sys_my_syscall(int i){}
编写用户程序
#include<syscall.h> #include<linux/unistd.h> #define __NR_my_syscall 338 _syscall1(long, my_syscall, int, i) Int main(){ Int a = my_syscall(5); }
编译内核,重新启动
相关文章推荐
- 应用领航:盘点那些年我们一起追过的OS
- 无奇不有!盘点各国自己开发的操作系统
- 可自定义oem的萝卜家园 Ghost XP 新春装机版 V200801 下载
- C#实现判断操作系统是否为Win8以上版本
- js获取本机操作系统类型的两种方法
- Linux操作系统添加新硬盘方法
- Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
- java如何获取本地操作系统进程列表
- Linux rdesktop操作系统下远程登录Windows XP桌面
- 32位操作系统认出超出4G内存的方法
- Linux rpm tar 操作系统下软件的安装与卸载方法
- JavaScript 获取用户客户端操作系统版本
- jsp 获取客户端的浏览器和操作系统信息
- Windows 操作系统的安全设置
- php判断当前操作系统类型
- PHP获取用户的浏览器与操作系统信息的代码
- Perl操作系统环境变量的脚本代码
- javascript获取本机操作系统类型的方法
- 封装好的js判断操作系统与浏览器代码分享
- javascript实现获取浏览器版本、操作系统类型