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

原创 2017年01月03日 20:02:35
目前正在通读《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.系统调用的执行:
将系统调用号和参数压入寄存器,然后触发软中断来陷入内核。
应用程序通知内核的机制是靠软中断实现的:通过引发一个异常来促使系统切换到内核态去执行异常处理程序。此时的异常处理程序实际上就是系统调用处理程序。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

《Linux内核设计与实现》读书笔记(五)- 系统调用

主要内容: 什么是系统调用Linux上的系统调用实现原理一个简单的系统调用的实现 1. 什么是系统调用 简单来说,系统调用就是用户程序和硬件设备之间的桥梁。 用户程序在需要的时...

《Linux内核设计与实现》——系统调用

一、与内核通信  1、系统tiao'yon

《Linux内核设计与实现》——第5章(系统调用)

一、通过系统调用与内核通信1. 什么是系统调用 让应用程序受限的访问硬件设备 提供创建新进程并与已有进程通信的机制 提供申请操作系统其他资源能力 在Linux中,系统调用是用户空间访问内核的唯一手...

把握linux内核设计思想(一):系统调用

【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】         一般情况下进程不能访问内核所占内存空间也不能调用内核函数。为了...

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 《Linux内核分析》笔记

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 《Linux内核分析》笔记内核态和系统调用操作系统将进程划分为内核态和用户态,用户的程序运行在用户态下,而涉及低级和设备资源的调用在内...

linux内核分析笔记----系统调用

from: http://www.cnblogs.com/hanyan225/archive/2011/07/08/2100667.html    在Linux中,系统调用是用户空间...

Linux内核笔记(二) 系统调用

Linux内核笔记(二) 系统调用     一.   系统调用的概念 二.   系统调用的意义 三.   系统调用的实现 四.   C库与系统调用的...

linux内核文件IO的系统调用实现分析

转载:http://chrischeng.w16.mc-test.com/linux-special/tech-centers/unix-linux-plat/linux-system-analysi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)