Linux 上的系统调用实际上是如何发生的?

2024-01-09

受到这个问题的启发

如何强制GDB反汇编? https://stackoverflow.com/questions/1237489/how-can-i-force-gdb-to-disassemble

和这个相关的

什么是 INT 21 小时? https://stackoverflow.com/questions/1245809/what-is-int-21h

Linux下系统调用实际上是如何发生的?执行调用时会发生什么,直到调用实际的内核例程?


假设我们谈论的是 x86:

  1. The 系统调用ID http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html存入EAX寄存器
  2. 系统调用所需的任何参数都存入由系统调用指定的位置 http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html。例如,某些系统调用期望其参数驻留在 EBX 寄存器中。其他人可能希望他们的论点位于堆栈的顶部。
  3. An INT 0x80中断被调用。
  4. Linux 内核为 EAX 寄存器中的 ID 标识的系统调用提供服务,并将任何结果存放在预先确定的位置。
  5. 调用代码使用任何结果。

可能我已经有些生疏了,已经过去几年了……

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 上的系统调用实际上是如何发生的? 的相关文章

  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • 如何更改 Apache 服务器的根目录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何更改 Apache 服务器的文档根目录 我基本上想要localhost从 来 users spencer projects目录而不是
  • 如何在 Bash 中给定超时后终止子进程?

    我有一个 bash 脚本 它启动一个子进程 该进程时不时地崩溃 实际上是挂起 而且没有明显的原因 闭源 所以我对此无能为力 因此 我希望能够在给定的时间内启动此进程 如果在给定的时间内没有成功返回 则将其终止 有没有simple and r
  • Gtk-ERROR **:检测到 GTK+ 2.x 符号

    我正在使用 gcc 编译我的 c 应用程序 并使用以下标志 gcc evis c pkg config cflags libs gtk 2 0 libs clutter gtk 1 0 libs gthread 2 0 Wall o evi
  • Linux 上的用户空间能否实现本机代码的抢占式多任务处理?

    我想知道是否可以在 Linux 用户空间的单个进程中实现本机代码的抢占式多任务处理 也就是说 从外部暂停一些正在运行的本机代码 保存上下文 交换到不同的上下文 然后恢复执行 所有这些都由用户空间精心安排 但使用可能进入内核的调用 我认为这可
  • 删除 Git 存储库,但保留所有文件

    在我使用 Linux 的过程中的某个时刻 我决定将我的主目录中的所有内容都放入源代码管理中是个好主意 我不是在问这是否是一个好主意 我是在问如何撤销它 删除存储库的原因是我最近安装了 Oh My Zsh 而且我非常喜欢它 问题是我的主目录有
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • 如何在基于 Linux 的系统上的 C 程序中使用 mqueue?

    如何在基于 Linux 的系统上的 C 程序中使用 mqueue 消息队列 我正在寻找一些好的代码示例 可以展示如何以正确且正确的方式完成此操作 也许是一个操作指南 下面是一个服务器的简单示例 该服务器接收来自客户端的消息 直到收到告诉其停
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 在 C++ linux 中将 STRINGS 写入串口

    我知道这个问题遍布互联网 但仍然没有任何东西能让我完全解决这个问题 我想用 C linux 将数据写入 Propeller 板的串行端口 从控制台获取输入时程序运行良好 但是当我向它写入字符串时总是返回 ERROR Invalid comm
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - Ubuntu [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一台运行 Ubuntu 的笔记本电脑 我想将其用作 Subversion 服务器 既让我自己在本地承诺 也让其他人远程承诺 要使其
  • 当 mov 指令导致页面错误并且在 x86 上禁用中断时会发生什么?

    我最近在自定义 Linux 内核 2 6 31 5 x86 驱动程序中遇到一个问题 其中 copy to user 会定期不将任何字节复制到用户空间 它将返回传递给它的字节数 表明它没有复制任何内容 经过代码检查 我们发现代码在调用 cop
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he
  • Linux中使用管道进行进程间通信

    我已经编写了在 linux 中写入数字以进行管道传输的代码 如下所示 但显示错误 任何人都可以帮助我解决这个问题 基本上该程序的问题陈述如下 一个程序将打开一个管道 向管道写入一个数字 其他程序将打开同一管道 读取数字并打印它们 关闭两个管
  • 捕获数据包后会发生什么?

    我一直在阅读关于网卡捕获数据包后会发生什么的内容 我读得越多 我就越困惑 首先 我读过传统上 在网卡捕获数据包后 它会被复制到内核空间中的一个内存块 然后复制到用户空间 供随后处理数据包数据的任何应用程序使用 然后我读到了 DMA 其中 N
  • Web 应用程序的带宽和流量模拟器?

    您能否建议如何创建一个测试环境来模拟 Web 应用程序中的各种类型的带宽和流量 或者也许是一个针对本地主机执行此操作的开源程序 我认为在编写网络应用程序时这是一个非常重要的主题 但这不是一个常见的主题 我能想象创建这种环境的唯一方法是在本地
  • PyPI 上的轮子平台约束有什么限制吗?

    是否有任何地方 PEP 或其他地方 声明关于 Linux 轮子上传范围的限制 PyPI http pypi io 应该有 具体来说 上传是否被认为是可接受的做法linux x86 64轮子到 PyPI 而不是manylinux1 x86 6

随机推荐

  • Hilt - CoroutineDispatcher 上缺少绑定

    我正在重构我的应用程序Hilt作为依赖注入管理器 我有一个构造函数可注入类 构造函数中有两个参数 其中一个参数是CoroutineDispatcher class SubscriptionsLocalDataSource Inject co
  • Bitbucket 要求输入密码来克隆存储库

    我正在从一台新计算机克隆 bitbucket 上的存储库 但它要求我输入密码 我的 bitbucket 密码不起作用 克隆 GitHub 上的存储库效果很好 任何建议将不胜感激 这是我使用 Bitbucket 密码后不断看到的错误 remo
  • R网状无法找到已安装的python库

    我正在尝试在 R 中使用 Reticulate 但在安装包时遇到问题 特别是psycopg2但我也尝试过安装twisted结果相同 我加载后reticulate在 R 中 我仔细检查以确保我的包已安装 gt conda install en
  • 将 Perl 代码转换为 PHP

    我需要将以下 perl 函数转换为 php pack SSA12AC4L id loc name ar split get gt getIP time 60 60 我在 PHP 中使用以下代码 用于测试 echo pack SSA12AC4
  • 将一个值分解为 2 的幂

    我需要实现一个函数 使用 java 将一个值分解为 2 的幂 例如 14 8 4 2 我需要找到两个值被分解的幂 对于上面的示例 我需要 2 3 1 作为输出 我该如何实现呢 利用 Java 使用的二进制表示形式 我不知道你想要 2 的幂采
  • 如何在 XDocument 元素的名称中使用“:”字符?

    我正在使用 XDocument 创建一个 RSS 代码如下 var document new XDocument new XDeclaration 1 0 utf 8 null new XElement rss new XElement c
  • 在哪里可以查看 Google Analytics iOS 崩溃日志?

    在 Google Analytics Native SDK for iOS v2 Beta 中 我在文档中找到了以下行 Optional automatically track uncaught exceptions with Google
  • Github GraphQL 搜索与过滤

    根据我有限的搜索 GraphQL 似乎只能支持等值过滤 所以 是否可以使用以下过滤条件进行Github GraphQL搜索 星星 gt 10 货叉 gt 3 总提交 gt 5 总问题 gt 1 未决问题 尺寸 gt 2k 分数 gt 5 上
  • Android DatePicker 没有星期日

    我正在使用日期选择器来选择特定日期 日期选择器不应允许选择星期日 到目前为止 我正在检测选择后的星期日并显示一条消息 但如果日期选择器不允许星期日 那就更好了 有没有办法做到这一点 检测星期日的代码 private static class
  • 使用 angular2-jwt 的 Angular 6

    将我的应用程序从 Angular 4 迁移到 Angular 6 最新版本 后 我的 Auth 服务中出现了一个非常奇怪的错误 具体来说 当我尝试执行以下操作时 angular2 jwt 包会导致致命错误 serve or build 该应
  • 使用 C 中的位掩码和位运算符检查字符是否为 ASCII

    我需要编写程序来检查标准输入中的每个单独的字符 看看它是否是 ASCII 字符 我知道它需要检查的是第 8 位 代码中的第 7 位 如果我没记错的话 是否为 0 因为 ASCII 只使用 7 位 但我很难弄清楚如何准确地让它检查具体位 这就
  • git-diff 中有类似 diff --show-c-function 的东西吗?

    我一直在处理 git 存储库中的一个文件 如果我有该文件的原始 git 版本的副本 我可以运行 diff show c function 来比较这两个文件 其中 理论上 它显示了已被调用的任何函数的全部内容改变了 这对于弄清楚我专门对文件做
  • 增加 Sublime Text 2 中最近项目的数量?

    是否可以增加 Sublime Text 2 中 项目 gt 最近的项目 菜单中显示的最近项目的数量 我搜索了设置 但没有找到任何内容 编辑这个文件 Library Application Support Sublime Text 2 Pac
  • RectF使用dp还是px?

    在Canvas中 用RectF画一个矩形 需要将top和left设置为dp还是px Integer padding 10 Integer width 100 It is dp or px Integer height 50 RectF po
  • Hadoop:如何将减速器输出合并到单个文件? [复制]

    这个问题在这里已经有答案了 我知道 shell 中的 getmerge 命令可以完成这项工作 但是 如果我想在作业结束后通过 HDFS API for java 合并这些输出 我该怎么办 我真正想要的是 HDFS 上的单个合并文件 我唯一能
  • C# 通用字符串解析为任何对象

    我将对象值存储在字符串中 例如 string values new string 213 4 10 hello MyValue 有什么方法可以通用地初始化适当的对象类型吗 例如 类似的东西 double foo1 AwesomeFuncti
  • Clojure 从指定位置的 Vector 中删除项目

    有没有办法根据索引从向量中删除项目 目前我正在使用 subvec 来分割向量并再次重新创建它 我正在寻找向量的 assoc 的反面 subvec可能是最好的方法 Clojure 文档说subvec is O 1 并且非常快 因为生成的向量与
  • 如何创建自定义列表累加器,即 List[(Int, Int)]?

    我正在尝试使用 Apache Spark 中的自定义累加器来累积列表中的对 结果应该有List Int Int 类型 为此 我创建了自定义累加器 import org apache spark AccumulatorParam class
  • 是什么导致了错误“返回类型‘TableRow’不是‘Widget’,如方法‘build’所定义”

    我正在 Flutter Dart 创建一个应用程序 目前正在研究该应用程序的布局 我正在尝试创建一个标准的表格布局 它工作得很好 直到我想将代码外包到不同的文件中 此时 我创建了一个扩展 StatelessWidget 的类 它重写返回 T
  • Linux 上的系统调用实际上是如何发生的?

    受到这个问题的启发 如何强制GDB反汇编 https stackoverflow com questions 1237489 how can i force gdb to disassemble 和这个相关的 什么是 INT 21 小时 h