系统调用

2024/4/12 1:08:03

Linux内核分析(四)

Linux内核分析 —— 【实验四:系统调用 】 “计算机科学领域的任何问题都可以通过增加一个中间层来解决。”这句名言几乎概括了整个计算机体系架构的设计要点。我们都知道计算机由硬件系统和软件系统构成,后者是建立在前者的基础上。硬件的性能在制造产…

从用户态代码调用到内核态调用单步调试之旅01

0x01 缘由 一直在从事linux c/c相关网络开发,现在想进一步深入到内核,了解更多的东西,以支撑上层应用的开发。在linux上写个c/s 通讯过程很简单,如何写得高并发、稳定才是真正的难点。0x02 linux c服务端和客户端代码 服务端&…

操作系统概念学习笔记 6 系统调用

操作系统概念学习笔记 6 系统调用 系统调用 系统调用(system call),通常用c或c编写,对底层任务(如需直接访问硬件)可能以汇编语言指令的形式提供。 一个系统调用的例子: 编写一个从一个文件读取数据并复制到另一个文件的简单程序&#xf…

mit6.s081 笔记

1、系统调用 系统调用具体过程。 在任何地方,当我们需要使用系统调用时,只需要include “user/user.h”,就可以通过里面的函数声明来调系统调用,其函数的具体实现由 user/usys.pl 脚本帮我们生成对应的汇编代码(具体代…

文件系统调用(open、read、write、close)

文件系统调用 文件使用方式:打开文件→文件读/写→关闭文件 打开文件—open() int open(filename,int flags); int open(filename,int flags,mode_t mode);标志含义O_RDONLY以只读的方式打开文件O_WRONLY以只写方式打开文件O_RDWR以读写方式打开文件O_APPEND以追…

在shell中执行一条可执行程序(./a.out) 系统执行的过程

目录 系统调度过程 用户空间角度: 内核角度 1、调用fork创建一个新进程 2、使用_fo_fork创建新进程 3、父进程调用wake_up_new_task尝试唤醒新进程 4、CPU选择一个合适的进程来运行; 5、运行新进程 6、实现负载均衡 系统调度过程 分析在命令行…

【Linux】—— Linux下的文件缓冲区

缓冲区机制 根据应用程序对文件的访问方式,即是否存在缓冲区,对文件的访问可以分为带缓冲区的操作和非缓冲区的文件操作: a)带缓冲区文件操作:高级标准文件I/O操作(eg:C库定义的fwrite和fread已经printf函…

MIT6.S081Lab2:system calls

准备环境 按照官方指南准备环境,即下面三行命令 $ git fetch$ git checkout syscall$ make clean如果git checkout syscall的时候提示makefile文件的修改没有提交的话,把makefile文件改回原来的样子即可,反正也只是添加了几句编译新加的文件…

添加Linux系统调用(ubuntu, 3.13.0)

环境:Ubuntu 14.04 64位 内核版本:3.13.0 下载Linux源码 安装必备软件 apt-get gcc make libncurses5-dev 下载源码 apt-get linux-source 下载后的源码在/usr/src下面 我的是/usr/src/linux-source-3.13.0/linux-source-3.13.0.tar.bz2 解压&a…

Linux内核源码阅读之系统调用execve()

asmlinkage int sys_execve(struct pt_regs regs) 前言 sys_execve()根据参数中指定的二进制文件路径,执行相应的二进制文件。我们可能会疑惑,参数中是一个pt_regs结构,哪里有文件路径?事实上,系统调用也属于中断&…

拦截 open调用 (进程白名单,文件白名单)

拦截 open 文章目录 拦截 open第一个需求文件结构进程白名单文件白名单 测试代码第一个版本版本二代码演示 增加一个日志记录代码解释 gcc -shared -fPIC -o libintercept.so intercept.c -ldlLD_PRELOAD./libintercept.so ./processA在Linux中,我们可以使用LD_PREL…

【Linux从入门到精通】文件操作(C语言vs系统调用)

文章目录 一、C语言的文件IO相关函数操作 1、1 fopen与fclose 1、2 fwrite 1、3 fprintf与fscanf 1、4 fgets与fputs 二、系统调用相关接口 2、1 open与close 2、2 write和read 三、简易模拟实现cat指令 四、总结 🙋‍♂️ 作者:Ggggggtm 🙋‍…

浅谈Linux中系统调用代码相关

一、系统调用简介 操作系统为用户态的进程与硬件设备进行交互提供了一组接口,在应用程序和硬件之间设置一个额外的层有诸多优点: 1. 使得编程更容易,不需要用户学习硬件设备的低级编程 2. 提高了系统的安全性,内核在满足某个请…

内核态与用户态、系统调用与库函数、文件IO与标准IO、缓冲区等概念介绍

概述 Linux提供了两套可以用于文件的IO接口: 文件IO: open、create、close、lseek、read、write、fcntl、ioctl等标准IO: FILE、fopen、fwrite、fread、等 为了理解文件IO和标准IO的区别,可能要先理解下用户态与内核态&#xf…

uabntu上linux系统调用号查询

当进行系统调用的时候,linux中会触发0x80的中断,进入该中断例程函数后,然后在根据系统调用号来决定进入哪个系统调用 例如,在C函数里实现内嵌汇编,触发系统调用的中断0x80,在根据系统调用号调用open函数 s…

Linux ARM系统调用过程分析(一)——Linux编程中的API函数和系统调用的关系

Linux ARM系统调用过程分析(一)——Linux编程中的API函数和系统调用的关系 备注:   1. Kernel版本:5.4   2. 使用工具:Source Insight 4.0 文章目录Linux ARM系统调用过程分析(一)——Linux编程中的API函数和系统调用的关系前言系统API系…

VFS中的read/write系统调用

VFS中的read/write系统调用 ​ VFS所隐含的主要思想在于引入了一个通用的文件模型(common file model),这个模型能够表示所有支持的文件系统。VFS是所有文件系统的抽象。 ​ linux内核对每个文件读写操作都必须使用一个指针,指向要访问的具…

Linux下特有的reboot()函数的简介

1.Linux下c程序通过调用reboot()函数&#xff0c;可以实现系统的重启、挂机、Power Down等功能。 2.(1)对于libc5或libc4来说&#xff0c;库函数的原型声明中包含四个参数&#xff0c;具体函数原型声明如下&#xff1a; #include<unistd.h> #include<linux/reboot.…

进程之操作系统的概念

再小的努力&#xff0c;乘以365都很明显。文章目录 操作系统操作系统的概念设计操作系统的目的 管理 ps:如何理解管理如何进行管理 操作系统管理软硬件资源小总结系统调用和库函数的概念小总结 操作系统 在讲述进程的时候我们先讲述一下操作系统&#xff08;os&#xff09;,因…

操原上机(一) 在Linux中增加新的系统调用

要求 在LINUX中增加新的系统调用 1、编写新的系统调用函数&#xff08;指函数实现部分&#xff09; 2、注册新的系统调用&#xff08;声明系统调用函数和编号&#xff09; 3、编译新LINUX内核 4、编译和安装模块 5、启动新的LINUX内核 6、编写应用程序测试新的系统调用 建议…

【Linux】驱动

驱动 驱动程序过程 系统调用 用户空间 内核空间 添加驱动和调用驱动 驱动程序是如何调用设备硬件 驱动 在计算机领域&#xff0c;驱动&#xff08;Driver&#xff09;是一种软件&#xff0c;它充当硬件设备与操作系统之间的桥梁&#xff0c;允许它们进行通信和协同工作。驱动程…

Linux文件IO编程——系统调用及用户编程接口(API)

1.系统调用 所谓系统调用指操作系统提供给用户程序调用的一组“特殊”接口&#xff0c;用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。例如用户可以通过进程控制相关的系统调用来创建进程、实现进程调度、进程管理等。 Linux为了更好地保护内核空间&#xff…

详解Linux中的fork,exec,wait

fork举例 #include "kernel/types.h" #include "user/user.h"int main() {int pid;pid fork();printf("fork() returned %d\n",pid);if(pid 0){printf("child\n");}else{printf("parent\n");}exit(0); }在第12行&#xf…

Linux内核:基于int指令的经典系统调用过程分析

众所周知&#xff0c;代码运行可以存在多种不同的特权级别&#xff0c;而针对Linux系统&#xff0c;即为&#xff1a;用户模式(user mode)和内核模式(kernel mode)。在用户模式下&#xff0c;CPU的功能空间受到极大的限制&#xff0c;是没有权利访问多少系统资源的&#xff0c;…

深入Android系统(二)Bionic库

Bionic库是Android的基础库之一&#xff0c;也是连接Android和Linux的桥梁。Bionic库中包含了很多基本系统功能接口&#xff0c;这些功能大部分来自 Linux&#xff0c;但是和标准的 Linux 之间有很多细微差别。同时Bionic库中增加了一些新的模块&#xff08;像log、linker&…

操作系统概念学习笔记 2 系统中断

操作系统概念学习笔记 2 系统中断 概述 现代操作系统是中断驱动的。如果没有进程可执行&#xff0c;没有I/O设备可服务&#xff0c;没有用户可响应&#xff0c;那么操作系统就会安静的等待事件的发生。 事件的发生几乎总是通过中断或者陷阱来表征的。 陷阱&#xff08;tra…

LInux: fork()究竟是如何工作的?为何一个变量能够接受两个返回值?

LInux: fork函数究竟是如何工作的&#xff1f;为何一个变量能够接受两个返回值&#xff1f; 前言一、fork()用法二 、fork()应用实例展示三、fork()工作原理3.1 为什么要创建子进程&#xff1f;3.2 fork()究竟干了些什么&#xff1f;3.3 fork为什么会存在两个返回值&#xff1f…

linux下系统调用timerfd和epoll

1&#xff1a;EPOLL epoll在Linux2.6内核正式提出&#xff0c;是基于事件驱动的I/O方式&#xff0c;相对于select来说&#xff0c;epoll没有描述符个数限制&#xff0c;使用一个文件描述符管理多个描述符&#xff0c;将用户关心的文件描述符的事件存放到内核的一个事件表中&am…

《操作系统》by李治军 | 实验3 - 系统调用

目录 一、实验内容 二、实验准备 1、系统调用的具体流程 &#xff08;一&#xff09;调用接口函数 API &#xff08;二&#xff09;触发 0x80 号中断 &#xff08;三&#xff09;跳转到 system_call 函数 &#xff08;四&#xff09;执行系统调用函数 sys_xxx 2、总结概…

磁盘I/O那些事

转载&#xff1a;最近生产环境对小文件的写入较多&#xff0c;导致磁盘I/O某进程占用较高&#xff0c;虽然现在没有暴露很多问题&#xff0c;我想当数据量大后&#xff0c;这里肯定是相关瓶颈&#xff0c;所以预先学习下相关知识点&#xff0c;尤其是小文件的读写&#xff1b; …

Linux 内核学习经验总结

开篇 学习内核&#xff0c;每个人都有自己的学习方法&#xff0c;仁者见仁智者见智。以下是我在学习过程中总结出来的东西&#xff0c;对自身来说&#xff0c;我认为比较有效率&#xff0c;拿出来跟大家交流一下。 内核学习&#xff0c;一偏之见&#xff1b;疏漏难免&#xf…

Linux内核分析(五)

Linux 内核分析——【实验五&#xff1a;系统调用运行机制】 前文提到系统调用是通过int 0x80来产生的&#xff0c;所以从本质上来说它是一种中断。那么什么是中断呢&#xff1f;中断被定义为一个事件&#xff0c;该事件改变了处理器执行的指令顺序。在linux系统下设置了256个…

系统调用——文件操作相关函数

1.open open, creat - open and possibly create a file or device 打开一个文件&#xff0c;也可能创建一个文件&#xff0c;返回文件描述符 //头文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> //接口 int open(const char *pa…

linux4.0新增32位ARM的系统调用

修改内核源码 Linux系统为每一个系统调用赋予一个系统调用号。当应用程序执行一个系统调用时&#xff0c;应用程序就可以知道执行和调用到哪个系统调用了&#xff0c;从而不会造成混乱。系统调用号一旦分配之后就不会有任何变更&#xff0c;否则已经编译好的应用程序就不能运行…

Linux man命令使用

很多时候在使用Linux命令的时候&#xff0c;会对某个命令的某个参数的使用不是很清除&#xff0c;或者对某个命令的使用不清楚&#xff0c;这个时候我们一般就会使用系统自带的man命令&#xff0c;也就是用户手册。 如&#xff0c;查看grep命令的介绍&#xff0c; man grep …

gcc/g++编译过程、system系统调用过程

文章目录一、system系统调用1.实例1&#xff1a;01_test.c2.实例2&#xff1a;02_waibu.c3.实例3&#xff1a;03_system.c4.实例4&#xff1a;calc 计算器二、gcc/g编译1.预处理&#xff1a;gcc -E hello.c -o hello.i2.编译&#xff1a; gcc -S hello.i -o hello.s3.汇编&…

操作系统与设备和程序交互

操作系统与设备和程序交互 在操作系统正常运行之后&#xff0c;操作系统如何与设备和程序交互&#xff1f; 在这就就涉及到interface(接口)的设计问题。 操作系统的interface是什么呢&#xff1f; 在我们看来&#xff0c;操作系统的interface包含三个 中断(面向外设是通过…

【Linux从入门到精通】文件I/O操作(C语言vs系统调用)

文章目录 一、C语言的文件IO相关函数操作 1、1 fopen与fclose 1、2 fwrite 1、3 fprintf与fscanf 1、4 fgets与fputs 二、系统调用相关接口 2、1 open与close 2、2 write和read 三、简易模拟实现cat指令 四、总结 &#x1f64b;‍♂️ 作者&#xff1a;Ggggggtm &#x1f64b;‍…

【操作系统笔记十四】科普:POSIX 是什么

注&#xff1a;本文转载自该文章posix是什么都不知道&#xff0c;还好意思说你懂Linux&#xff1f; Linux开发者越来越多&#xff0c;但是仍然有很多人整不明白POSIX是什么。本文就带着大家来了解一下到底什么是POSIX&#xff0c;了解他的历史和重要性。 一、什么是 POSIX&…

《Linux内核分析》(五)——Linux系统调用的执行过程

作者&#xff1a;Sandy 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验环境&#xff1a;cLinux64位 &#xff08;32位系统可能结果会不同&#xff09; 依照学术诚信条款&#xff0c;我保证此回答为本人原创&am…

《Linux内核分析》(四)——扒开系统调用的三层皮(上)

作者&#xff1a;Sandy 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验环境&#xff1a;cLinux64位 &#xff08;32位系统可能结果会不同&#xff09; 依照学术诚信条款&#xff0c;我保证此回答为本人原创&am…

Linux添加系统调用详解

今晚有点不在状态&#xff0c;就来总结一下在Linux中添加一个系统调用吧&#xff0c;示例平台Ubuntu 1604 64位&#xff0c;内核版本linux-4.4.4 欢迎大家评论交流&#xff0c;题主从linux-2.6一直到linux-4.15的内核都添加过系统调用&#xff0c;各个大版本之间添加系统调用还…