gpt4 book ai didi

c - 系统调用和中断的实现有何不同?

转载 作者:太空宇宙 更新时间:2023-11-04 08:06:05 24 4
gpt4 key购买 nike

我正在开发一个简单的操作系统,只是为了更好地了解它的内部结构。关于开发 Boot loader和一个在 16-bit Real Mode 上运行的简单内核, 我遇到了一个陌生的术语 System Call和一个熟悉的Interrupt .

从那以后我一直在谷歌搜索术语,结果发现这些概念对我来说仍然不清楚。据我所知,系统调用由在 least privileged mode 中运行的应用程序使用。向在 Higher Privileged mode(Ring 0) 中运行的内核请求服务.

我仍然不清楚系统调用是如何实现的。

比如说,我正在为 print a word 编写一个简单的 C 程序并编译它。现在,我剩下一个可执行文件,其中包含一个系统调用,用于在屏幕上打印给定的单词。我的问题对应于给定的场景如下:

问题 1:

程序一执行,系统调用就会将请求通知内核 - 就低级编程而言,这里到底发生了什么?

问题 2:

中断可以是系统调用还是相反?


如果我似乎没有清楚地理解这些概念,请向我解释系统调用的概念。


谢谢。

最佳答案

在大多数系统上,中断和系统调用(以及异常处理程序)以相同的方式实现。

As soon the Program is executed, the system call informs the kernel of the request - What exactly happens here in terms of low level programming?

通常,系统调用是汇编语言例程的包装器。事件的顺序是:

  1. 调用系统例程
  2. 系统例程解压参数并将它们加载到寄存器中。
  3. 系统例程通过执行更改模式指令(到高于用户模式的某个模式)来强制异常(由数字标识)。
  4. CPU 通过调度到系统调度表中的异常处理程序来处理异常。
  5. 处理程序执行系统服务。
  6. 处理程序执行异常返回或中断指令,将进程返回到用户模式(或从中调用的任何模式)和系统服务例程。
  7. 系统服务例程从寄存器中解压返回值并更新参数。
  8. 返回调用函数。

Can an Interrupt be a System Call or vice versa?

没有。它们以相同的方式发送。

大概操作系统可以将系统调用和中断映射到同一个处理程序,但这会很麻烦。

关于c - 系统调用和中断的实现有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42834369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com