ale*_*ari 1 linux assembly system-calls usermode kernel-mode
尽管我知道这个主题的范围要广泛得多,但我处于 Linux 环境中
假设我正在编写一个简单的 C 程序,并且想向终端写入“Hello”。显而易见的方法是使用 C 标准库 printf,它又使用 write 系统调用(包装函数而不是系统调用本身),而 write 系统调用又调用实际的汇编系统调用指令(或 int)。不太明显的方法是在我的 C 源文件中使用一些内联汇编,或者直接创建一个包含系统调用指令的汇编文件。
似乎在一天结束时,我们以某种方式结束了系统调用(指令 syscall 或 int)。这是唯一的方法吗?
在现代 PC 中,术语“应用程序”与“用户程序”的含义相同吗?
我编写的 PowerPoint、Google Chrome、Visual Studio Code、Photoshop 或 C 程序都是需要系统调用来请求操作系统服务以执行写入文件等特权操作的应用程序/用户程序的示例,这样说是否正确?
在传统的操作系统上,是的,几乎所有操作系统服务都是通过系统调用请求的。但是,可能存在一些例外情况:
MRS读取 AArch64 上的 CPU 类型和功能的指令。当用户软件执行这样的指令时,就会发生陷阱。操作系统(例如 FreeBSD)可以模拟丢失的指令或在特权上下文中执行它,然后继续执行。还有其他示例,但几乎所有与操作系统的交互确实都是通过系统调用发生的。
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |