[笔记]《Linux内核设计与实现》第五章系统调用

目前正在通读《Linux内核设计与实现》一书,本文是对第五章<系统调用>的总结。
1.系统调用是什么?
由内核提供的一组接口,在Linux中,系统调用是用户空间访问内核的唯一手段;除异常和陷入外,它们是内核唯一的合法入口。
2.与库函数和应用程序接口(API)有怎样的关系?
3.如何增加系统调用?
3.1 限定词:asmlinkage
所有的系统调用都需要这个限定词。这是一个编译命令,通知编译器仅从栈中提取该函数的参数。
所有的系统调用,在内核中其方法名都被加上前缀"sys_"。
3.2 系统调用号
在Linux中,每个系统调用被赋予一个系统调用号。内核使用系统调用表sys_call_table为每个有效的系统调用指定唯一的系统调用号。每一种体系结构中,都明确定义了这个表。
表项是以64位类型存放的。
3.3步骤:
3.3.1 编写完系统调用,符合设计规范,做必要的兼容和合法性检查;
3.3.2 在系统调用表的最后加入一个表项;从0开始,在表中的位置(index值)就是它的系统调用号;
3.3.3 系统调用必须被编译进内核映象,实现方法就是把它放入kernel/下的一个相关文件中;
4.系统调用的执行:
将系统调用号和参数压入寄存器,然后触发软中断来陷入内核。
应用程序通知内核的机制是靠软中断实现的:通过引发一个异常来促使系统切换到内核态去执行异常处理程序。此时的异常处理程序实际上就是系统调用处理程序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值