LinuxDown

LinuxDown.com
Linux系统下载网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

LinuxSCI演示:系统调用的函数

2023年9月18日 48点热度

系统调用

就是用户空间应用程序和内核提供的服务之间的一个插口。因为服务是在内核中提供的,因而未能执行直接调用;相反,您必须使用一个进程来跨越用户空间与内核之间的界限。在特定构架中实现此功能的方式会有所不同。为此,本文将着眼于最通用的构架——i386。

在本文中,我将探究LinuxSCI,演示怎么向2.6.20内核添加一个系统调用,之后从用户空间来使用这个函数。我们还将研究在进行系统调用开发时十分有用的一些函数,以及系统调用的其他选择。最后,我们将介绍与系统调用有关的一些辅助机制,例如在某个进程中跟踪系统调用的使用情况。

linux内核和用户利用率_用户空间和内核空间_linux内核空间访问用户空间

SCI

Linux中系统调用的实现会依照不同的构架而有所变化,但是虽然在某种给定的体构架上也会不同。诸如,初期的x86处理器使用了中断机制从用户空间迁移到内核空间中,不过新的IA-32处理器则提供了一些指令对这些转换进行优化(使用sysenter和sysexit指令)。因为存在大量的方式,最终结果也十分复杂,因而本文将着力于插口细节的表层讨论上。

要对Linux的SCI进行改进,您不须要完全理解SCI的内部原理,为此我将使用一个简单的系统调用进程(请参看图1)。每位系统调用都是通过一个单一的入口点多路传入内核。eax寄存器拿来标示应该调用的某个系统调用,这在C库中做了指定(来自用户空间应用程序的每位调用)。当加载了系统的C库调用索引和参数时,都会调用一个软件中断(0x80中断),它将执行system_call函数(通过中断处理程序)linux内核空间访问用户空间linux重启命令,这个函数会根据eax内容中的标示处理所有的系统调用。在经过几个简单测试以后,使用system_call_table和eax中包含的索引来执行真正的系统调用了。从系统调用中返回后,最终执行syscall_exit,并调用resume_userspace返回用户空间。之后继续在C库中执行,它将返回到用户应用程序中。

图1.使用中断方式的系统调用的简化流程

linux内核和用户利用率_linux内核空间访问用户空间_用户空间和内核空间

SCI的核心是系统调用多路分解表。这个表如图2所示,使用eax中提供的索引来确定要调用该表中的那个系统调用(sys_call_table)。图中还给出了表内容的一些样例,以及那些内容的位置。(有关多路分解的更多内容,请参看侧栏“系统调用多路分解”)

用户空间和内核空间_linux内核空间访问用户空间_linux内核和用户利用率

图2.系统调用表和各类链接

用户空间和内核空间_linux内核空间访问用户空间_linux内核和用户利用率

添加一个Linux系统调用

linux内核空间访问用户空间_用户空间和内核空间_linux内核和用户利用率

添加一个新系统调用主要是一些程序性的操作,但应当注意几件事情。本节将介绍几个系统调用的构造linux内核空间访问用户空间,进而展示它们的实现和用户空间应用程序对它们的使用。

向内核中添加新系统调用redhat linux 9.0下载,须要执行3个基本步骤:

添加新函数。更新头文件。针对这个新函数更新系统调用表。

用户空间和内核空间_linux内核空间访问用户空间_linux内核和用户利用率

注意:这个过程忽视了用户空间的需求,我将稍后介绍。

最常见的情况是,您会为自己的函数创建一个新文件。不过,为了简单起见,我将自己的新函数添加到现有的源文件中。清单1所示的前两个函数,是系统调用的简单示例。清单2提供了一个使用表针参数的稍稍复杂的函数。

清单1.系统调用示例的简单内核函数

asmlinkage long sys_getjiffies( void )
{
  return (long)get_jiffi

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 中断 内核 函数 系统 调用
最后更新:2023年9月18日

Linux系统下载网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

Linux系统下载网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
Linux运维视频教程 一般配置,即默认以后台程序方式运行是一个意思 linux web proxy 超越期待!Linux下的高效Web代理服务器及技巧详解 公众号获取账号所属类目的公共库模板标题列表 开源社区评测:Linux游戏开发对比 Linux chown命令:更改文件和目录所有权 高速无线网络畅享,tplink300M Linux驱动带你飞 Linux系统的秘密技巧:轻松修改文件创建日期 Windows远程连接Linux,轻松跨平台操作 关于linux下获取文件的创建时间与实战的相关资料 树莓派Linux系统:极简体验大比拼 Linux系统如何修改文件的时间touch命令的描述指令? Linux上运行exe文件的软件,你绝对不能错过这些 蓝牙耳机怎么连接电脑?笔记本蓝牙适配器的开启方法 全新Linux局域网聊天软件 系统启动时自动运行程序的三种功能方法介绍 Linux系统下载攻略:掌握这些技巧,轻松get Linux查看端口占用情况linux命令:ps、grep、kill 剖析ARM Linux内核:奥秘与精髓解读 康华:Linux内核空间和用户空间的区别及用法
快速定位目标文件,Linux文档管理软件!Linux运维视频教程简洁高效:Linux创建用户,配置sudo权限指南ls-alrtAFR-a显建站服务器的参考价值-显Linux查看GTK版本的实用技巧14种嵌入式操作系统的特点及特点解决RedHat浏览器中文乱码问题的七种方法Linux命令行不会删除的文件,很抱歉这个技巧unix系统和linux系统 Unix和Linux系统的经验技巧,你了解吗?lastb列出登入系统失败的用户相关信息补充说明命令嵌入式操作系统的特点及发展前景分析嵌入式Linux文件系统的结构是基于树状的根在顶部Linux操作系统下载:选择适合你的发行版获取UbuntuLinux操作系统的PDF文件文件的基础知识介绍Linux下Python开发经验与技巧分享Linux,下的日志文件系统的载体介绍-苏州安嘉Linux编程:系统IO速度稳定性评测IMAP和POP有什么区别?如何配置邮件客户端使用IMAPLinux轻松下载文件,简单操作!Linux远程主机的指定目录内容的使用命令
高效安全!搭建Linux系统FTP服务器攻略 红旗Linux桌面应用教程:安装使用指南 5G,主分区,空间起始位置日志文件系统 Linux系统连接服务器:从入门到精通的技巧! RedHat命令:轻松安装Linux软件包 轻松实现Linux SSH下载文件:九个详细步骤分享 动漫必备!6款超实用图像处理工具! Linux装网卡驱动,轻松解决! Linux培训讲师:优势与挑战 Linux爬虫软件,轻松抓取所需数据 Linux软件下载路径,快速找到所需软件 Linux更改目录主人,简单易学! Linux LVM扩容:简单易学 Linux轻松驾驭 DOS,命令完美融合 多样选择:linux安装多桌面环境 Linux USB转串口驱动评测及下载对比 linux kernel社区 揭秘LinuxKernel社区的真实实力! CentOS服务器安装教程:轻松配置个人电脑 了解Linux默认文件系统的发展历史包括它的诞生以及未来发展 江苏省五年制高职计算机网络技术专业网络组建与应用
标签聚合
应用 linux服务器 操作 linux系统 软件 文件 命令 内核 文件目录 电脑
书籍
课程
技术群
技术干货大合集↓
  • 2023年9月 / 98篇
  • 2023年8月 / 122篇
  • 2023年7月 / 122篇
  • 2023年6月 / 119篇
  • 2023年5月 / 123篇
  • 2023年4月 / 113篇
  • 2023年3月 / 265篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 LinuxDown.com ALL RIGHTS RESERVED.

京ICP备14023444号-2