《Linux设计与实现》笔记——系统调用工作原理、添加系统调用的过程

系统调用的意义

为了和用户空间上的进程进行交互,内核提供的提供的一组接口。

应用程序通过这组接口访问硬件和其他操作系统资源。

完成对硬件和资源访问的控制。安全、可靠,多任务、虚拟必须

硬件设备的抽象(提供设备的独立性)。

异常,陷入,系统调用 : 用户空间进入内核空间的三种方式

原理

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);
}
  • 编译内核,重新启动
时间: 2024-10-06 08:22:22

《Linux设计与实现》笔记——系统调用工作原理、添加系统调用的过程的相关文章

《CSS设计指南》笔记--CSS工作原理

通过阅读和学习书籍<CSS设计指南>总结 <CSS设计指南>/Charles lvyke-Smith著.李松峰译-人民邮电出版社 本书网站:http://www.stylinwithcss.com 强烈推荐!!深入浅出,精简,适合入门!! CSS工作原理 2.1 剖析CSS规则 ??规则实际上就是一条完整的CSS指令.规则声明了要修改的元素和要应用给该元素的样式. 2.1.1 为文档添加样式的三种方法 ??有三种方法可以把CSS添加到网页中,分别是写在元素标签里(行内样式),写在&

Linux系统开机启动时的工作原理

Linux系统开机启动时的工作原理也是深入了解Linux系统核心工作原理的一个很好的途径. 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息.时钟信息.PnP特性等等.在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了.在BIOS将系统的控制权交给硬盘第一个扇区之后,就开始由Linux来控制系统了. 启动第二步--读取MB

HTTPS详解二:SSL / TLS 工作原理和详细握手过程

HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流程,但总感觉少了点什么,应该是少了对安全层的针对性介绍,那么这篇文章就算是对HTTPS 详解一的补充吧.还记得这张图吧. HTTPS 和 HTTP的区别 显然,HTTPS 相比 HTTP最大的不同就是多了一层 SSL (Secure Sockets Layer 安全套接层)或 TLS (Transp

linux驱动之platform平台总线工作原理(一)

5.5.4.platform平台总线工作原理 5.5.4.1.何为平台总线 (1)platform总线相对于i2c.usb.spi.pci等总线是不同的,他们属于物理总线,platform总线是属于虚拟总线.抽象出来的,platform总线下的设备并不对应于真实存在的一种设备,这种总线在真实的物理是是没有的.比如i2c在物理上有i2c总线,但是platform总线在物理上并没有这种总线. (2)CPU和外部通信时,有两种连接方式,一种叫做地址总线式连接,一种叫做专用接口式连接,有一些设备是通过地

Linux课堂作业2(inode工作原理以及软硬连接的区别)

inode工作原理: 一个文件包括元数据和数据内容,元数据存放在inode table中,而数据内容存放在block块中,inode存放着各个文件的元数据条目,其内容包括,一些基本的元数据比如mode,ownership,sizetimestamp,还存放着指向数据的指针,这些指针分为直接指针和间接指针,双重间接指针甚至三种间接指针.直接指针代表直接指向数据内容的block块,间接指针下一层指向虽然是一个数据块,但是数据块内却不是文件的数据内容,而是一个指针数据块,如果块大小为4k,每个指针占4

大数据学习笔记2--hdfs工作原理及源码分析

windows下配置hadoop hadoop 安装包解压,路径不要有特殊字符 lib和bin直接解压出来的不可用,需要自己重新编译 配置环境变量:HADOOP_HOME,path中添加:bin目录 namenode 整个文件系统的管理节点.它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表.接收用户的操作请求. 响应客户端的请求,上传文件: client申请上传文件,namenode查看元数据信息,查看客户端申请的路径是否已存在 namenode返回可用的datan

Linux内核中添加系统调用接口简单示例

1. Linux体系结构 Linux系统的地址空间分为用户空间和内核空间,通过系统调用和硬件中断能够完成从用户空间到内核空间的转移. 2. 系统调用接口 ① 一般情况下,用户进程不能访问内核空间.Linux内核中提供了一组用于实现各种系统功能的子程序,用户可以调用它们访问Linux内核的数据和函数,这些子程序称为系统调用接口(SCI). ② 系统调用和普通函数的区别:系统调用由操作系统内核实现,运行于内核态:普通函数调用由函数库或用户自己提供,运行于用户态. 3. 系统调用分类:主要分3大类 ①

系统栈的工作原理(转)

1.开篇 本篇文章着重写的是系统中栈的工作原理,以及函数调用过程中栈帧的产生与释放的过程,有可能名字过大,如果不合适我可以换一个名字,希望大家能够指正,小丁虚心求教!如果有哪里写的不清楚的或者错误的地方请及时更正,小丁再次谢过了.文章里面有错别字,也可能会有好友说寄存器的32.16位的区别其实我感觉这里主要讲的还是些原理性的东西,后续会将文章图片错别字进行调整.(图片里面的posh改为push) 2.内存的不同用途 根据不同的操作系统,一个进程可能被分配到不同的内存区域去执行.但是不管什么样的操

Oracle NET工作原理、配置及连接问题排查

一.Oracle NET配置文件 Oracle NET是一个软件层,支持不同网络协议之间的转换.不同的物理机器可以借助这个软件层实现相互间的通信,具体而言就是实现对oracle的远程访问. oracle net配置文件包括listener.ora,tnsnames.ora,sqlnet.ora和ldap.ora:配置文件都是放在$ORACLE_HOME\network\admin目录下. sqlnet.ora文件在客户端上,确定解析方式,通过这个文件来决定怎么样找一个连接中出现的连接字符串 tn