Architecture 了解系统调用以及.net如何访问内核
最近,我一直在阅读有关操作系统设计的书籍。所有用户空间程序都通过“系统调用接口”使用内核服务的想法让我进一步思考了这一点,并提出了以下一些问题Architecture 了解系统调用以及.net如何访问内核,architecture,operating-system,Architecture,Operating System,最近,我一直在阅读有关操作系统设计的书籍。所有用户空间程序都通过“系统调用接口”使用内核服务的想法让我进一步思考了这一点,并提出了以下一些问题 系统调用是在每个操作系统上用特定的语言实现的,比如“C/C++”,还是某种汇编语言或机器代码 操作系统在系统调用之上提供了一个API。API通常用C或C++编写。若系统调用是汇编语言,那个么这些API是如何生成汇编代码的 Java字节码或MSIL代码是转换为API调用还是直接转换为系统调用 系统调用如何引起内核的注意?它会发出某种中断吗 系统调用如何引起
CHKM #12 ; Trigger a trap causing entry in to kernel mode to be handled by routine #12.
系统调用是在每个操作系统上用特定的语言实现的,比如“C/C++”,还是某种汇编语言或机器代码
通常是汇编语言,但有时可以用C语言编写
操作系统在系统调用之上提供了一个API。API通常用C或C++编写。若系统调用是汇编语言,那个么这些API是如何生成汇编代码的
调用系统需要汇编语言来执行trap指令,并为系统服务设置硬件寄存器。操作系统总是提供可以从高级语言调用的包装器函数,这些函数将解包参数、导致陷阱并重新打包从系统服务返回的参数
Java字节码或MSIL代码是转换为API调用还是直接转换为系统调用
字节码对系统服务一无所知。它们必须由虚拟机调用
系统调用如何引起内核的注意?它会发出某种中断吗
操作系统为中断、故障和陷阱定义了一个内核模式处理程序表。在系统系统上有多个表(例如,中断分开),但逻辑上你可以把它看作一个表。
当中断、故障或陷阱发生时,CPU在表中查找对应事件的条目。该条目指定用于处理该事件的例程
对于系统服务,处理器将定义一个或多个明确触发调用系统服务的陷阱的指令。大概是这样的:
CHKM #12 ; Trigger a trap causing entry in to kernel mode to be handled by routine #12.
系统调用是在每个操作系统上用特定的语言实现的,比如“C/C++”,还是某种汇编语言或机器代码
通常是汇编语言,但有时可以用C语言编写
操作系统在系统调用之上提供了一个API。API通常用C或C++编写。若系统调用是汇编语言,那个么这些API是如何生成汇编代码的
调用系统需要汇编语言来执行trap指令,并为系统服务设置硬件寄存器。操作系统总是提供可以从高级语言调用的包装器函数,这些函数将解包参数、导致陷阱并重新打包从系统服务返回的参数
Java字节码或MSIL代码是转换为API调用还是直接转换为系统调用
字节码对系统服务一无所知。它们必须由虚拟机调用