【问题标题】:How does a system call work [duplicate]系统调用如何工作[重复]
【发布时间】:2014-07-25 00:44:59
【问题描述】:

系统调用是如何工作的?
系统调用过程中有哪些操作?
有各种系统调用,如open , read, write, socket 等。我想知道它们一般是如何工作的?

【问题讨论】:

标签: c process operating-system system-calls


【解决方案1】:

简而言之,系统调用的工作原理如下:

  • 首先,用户应用程序设置系统调用的参数。
  • 参数设置完毕后,程序执行“系统调用”指令。
  • 此指令导致异常导致处理器跳转到新地址并开始执行代码的事件

  • 新地址的指令保存用户程序的状态,找出你想要的系统调用,调用内核中实现该系统调用的函数,恢复你的用户程序状态,并将控制权返回给用户程序。

调用open()系统调用的用户应用程序的可视化解释:

需要注意的是,系统调用接口(它充当操作系统提供的系统调用的链接)调用操作系统内核中的预期系统调用并返回系统调用的状态和任何返回值。 调用者不需要知道系统调用是如何实现的或者它在执行过程中做了什么
另一个例子:调用printf()库调用的C程序,它调用write()系统调用

有关更详细的解释,请阅读Operating System Concepts 的 CH-1 中的第 1.5.1 节和 CH-2 中的第 2.3 节。

【讨论】:

  • 这个link 也有帮助
  • 这是一个非常好的和准确的解释。我只想补充一点,中断的 CPU 指令是“int 0x80”和“syscall”。第二个更现代,更快。 CPU知道跳转到哪里(那个新地址)的原因也是因为操作系统之前已经设置了它(事先告诉了CPU)。同样在中断指令之后,CPU 会从用户模式切换到内核模式,因为在用户模式下 CPU 不允许您直接接触硬件。
猜你喜欢
  • 1970-01-01
  • 2011-09-08
  • 2023-04-09
  • 2014-11-17
  • 2015-02-23
  • 1970-01-01
  • 1970-01-01
  • 2014-01-31
相关资源
最近更新 更多