【问题标题】:Difference between User vs Kernel System call用户与内核系统调用之间的区别
【发布时间】:2014-07-13 19:25:03
【问题描述】:

系统调用是程序向操作系统内核请求服务的方式。

它们可以发生在用户模式和内核模式中。

有什么区别?

例如:

  • 开销
  • 系统时间

【问题讨论】:

    标签: performance system-calls difference kernel-mode usermode


    【解决方案1】:

    @Leo,

    您能否详细说明在内核空间中进行系统调用时的变化?为了更好地理解 Linux 内核,它是用 C 和汇编语言编写的

    请注意,系统调用只是用户空间和内核空间之间的接口。当您需要一些计算机资源(文件、网络等)时,您要求内核将其提供给您(在后台您要求内核运行内核代码,由内核负责)。

    系统调用的开销是您需要执行 CPU 中断。正如 Will 提到的,时间很大程度上取决于 CPU 类型。

    【讨论】:

    【解决方案2】:

    系统调用是您在应用程序(“用户模式”)和内核之间转换的方式。

    系统调用比正常的函数调用慢,但来自 Intel 和 AMD 的较新 x86 芯片有一个特殊的sysenter/syscall 操作码,使其只需一百纳秒左右,无论给予还是索取。

    【讨论】:

    • 您能否详细说明在内核空间中进行系统调用时的变化?为了更好地理解 Linux 内核,它是用 C 和汇编语言编写的。
    • @Leo 答案强调使用系统调用的正确方法 - 从用户空间。但是如果你想绕过这个并从内核调用系统调用,它是可以做到的,但是你必须自己处理特权模式——不要忘记你从内核进入系统调用时拥有很高的特权。 stackoverflow.com/questions/15841327/…
    猜你喜欢
    • 2020-02-22
    • 2018-12-29
    • 2022-01-21
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 2013-09-30
    • 2011-08-04
    • 2018-04-25
    相关资源
    最近更新 更多