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

xcy6666 xcy6666     2022-07-30     141

关键词:

系统调用的意义

为了和用户空间上的进程进行交互,内核提供的提供的一组接口。
应用程序通过这组接口访问硬件和其他操作系统资源。
完成对硬件和资源访问的控制。安全、可靠,多任务、虚拟必须
硬件设备的抽象(提供设备的独立性)。

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

原理

这里写图片描述
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);
}
  • 编译内核,重新启动

《linux内核设计与实现》笔记——vfs

关于VFS有一篇很好的博客http://www.ibm.com/developerworks/cn/linux/l-vfs/建议先阅读本文为基础,然后继续阅读该文章。VFS,虚拟文件系统,为用户提供了文件和文件系统相关的接口。这些接口可以跨越各种文件系统和不同介质执行。VFS... 查看详情

操作系统--哈工大-李治军-实验2-系统调用实现(笔记)(代码片段)

文章目录系统调用函数的实现系统调用过程总结系统调用函数的实现注:C函数代码复制的这位大佬:https://blog.csdn.net/qq_42518941/article/details/119037501实现思路参考的哈工大-李治军老师-操作系统原理与实践-系统调用很多细... 查看详情

《linux内核设计与实现》读书笔记linux内核简介

Unix的历史①Unix诞生于1969年,至今仍然被认为是现存操作系统中最强大和最优秀的系统。②Unix起源于一个失败的多用户操作系统Multics,Multics终止而Unix萌生。③1973年整个Unix操作系统用C语言进行了重写,为后面各种... 查看详情

socket与系统调用深度分析(代码片段)

...可能的话应该尽量多掌握一些系统调用,这会对你的程序设计过程带来意想不到的帮助。系统调用是怎么工作的?  一般的,进程是不能访问内核的。它不能访问内核所占内存空间也不能调用内核函数。CPU硬件决定了这些(这就... 查看详情

《linux设计与实现》学习笔记——定时器和时间管理

基本概念系统定时器一种可编程硬件芯片,能够以固定频率产生中断,定时器中断,他的中断处理程序负责更新系统时间,负责执行需要周期性运行的任务。触发中断的频率即节拍率,可以编程预定。动态定时器一种用来推迟执... 查看详情

《内核设计与实现》读书笔记-进程管理

进程是所有操作系统的核心概念,同样在linux上也不例外。主要内容:进程和线程进程的创建进程的终止1.进程和线程1.1进程进程是处于执行期的程序以及相关的资源的总称。线程是进程中活动的对象。内核调度的对象是线程,... 查看详情

读薄《linux内核设计与实现》-中断与同步

这篇文章是《读薄「Linux内核设计与实现」》系列文章的第IV篇,本文主要讲了以下问题:中断和中断处理程序的概念与实现原理、Linux中的下半部以及内核同步方法。0x00中断和中断处理程序I中断中断是一种特殊的电信号,由硬... 查看详情

工作流引擎的工作原理与功能

...是企业流程再造的核心产品,并且提供以业务建模、流程设计、流程仿真、界面设计、业务整合、部署执行、系统管理、业务监控为主线的全闭环式业务系统生命周期管理。协同工作流引擎支持原有业务系统和流程的重组,是国... 查看详情

opengl原理学习笔记

...下OpenGL的工作原理,初步认识计算机对于图形渲染的底层设计与实现,第一次接触,也没学过C艹,欢迎各位批评指正。一 什么是OpenGL?    OpenGL是一个开放标准(specification),是一种接口规范,并没有固定实现。每个... 查看详情

《linux内核设计与实现》笔记——内核同步简介

相关概念竞争条件多个执行线程(进程/线程/中断处理程序)并发(并行)访问共享资源,因为执行顺序不一样造成结果不一样的情况,称为竞争条件(racecondition)举例说明#include<thread>usingnamespacestd;inti=0;voidthread1(){//for(intx=0;x&... 查看详情

《linux内核设计与实现》学习笔记——i/o调度算法

I/O调度子系统用于调度来自多个进程对块设备的I/O请求。电梯调度首先,如果队列中已存在一个对相邻磁盘扇区操作的请求,那么新请求将和这个已经存在的请求合并为一个请求。2.如果队列中存在一个驻留时间过长的请求,那... 查看详情

操作系统--哈工大-李治军-实验2-系统调用实现(笔记)(代码片段)

文章目录系统调用函数的实现系统调用过程总结系统调用函数的实现注:C函数代码复制的这位大佬:https://blog.csdn.net/qq_42518941/article/details/119037501实现思路参考的哈工大-李治军老师-操作系统原理与实践-系统调用很多细... 查看详情

《linux内核设计与实现》读书笔记从内核出发(代码片段)

内核源码获取①可以直接登录linux内核官方网站http://www.kernel.org,可以随时获取当前版本的linux源代码②也可以使用git工具从远程仓库下载,地址:LinuxKernel:Linux内核源码镜像如:gitclonegit@gitee.com:mirrors/linux_old1.git这... 查看详情

微机原理与系统设计笔记8|可编程并行接口芯片8255a&&可编程定时器计时器芯片82538254(代码片段)

...程定时器、计时器芯片8253、8254,增加了一些具体系统的设计案例。打算整理汇编语言与接口微机这方面的学习记录。本部分介绍可编程并行接口芯片8255A&&可编程定时器、计时器芯片8253、8254,增加了一些具体系统的设计... 查看详情

[架构之路-24]:目标系统-系统软件-c语言的结构与程序的工作原理-程序控制函数调用栈函数调用性能优化

...43;数据结构1.3程序的结构化框架1.4程序的层次模型1.5程序设计的层次模型第2章C语言概述2.1C语言本质2.2C语言关键字2.3C语言在编程语言的中的位置第3章C语言结构化代码组织第4章C语言结构化数据表示第5章C语言结构化数据运算第6... 查看详情

[架构之路-22]:目标系统-系统软件-汇编语言结构与x86指令系统以及cpu的工作原理函数调用与堆栈操作

...43;数据结构1.2程序的结构化框架1.3程序的层次模型1.4程序设计的层次模型第2章汇编语言概述2.1指令系统编程的困境2.2什么是汇编语言2.3编程语言的本质 2.4汇编语言的本质第3章X86汇编程序的结构3.1概述3.2定义代码段:code标... 查看详情

《linux内核设计与实现》读书笔记linux进程管理(代码片段)

进程与线程①进程就是处于执行期的程序,通常进程还包含挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间及一个或多个执行线程,还包含存放全局变量的数据段等。②线... 查看详情

线上防雪崩利器——熔断器设计原理与实现

前言这是一篇根据工作中遇到的问题总结出的最佳实践。上周六,我负责的业务在凌晨00-04点的支付全部失败了。结果一查,MD,晚上银行维护,下游支付系统没有挂维护公告,在此期间一直请求维护中的银行,当然所有返回就... 查看详情