我正在开发一个简单的操作系统,只是为了更好地了解它的内部。在开发Boot loader
和在16-bit Real Mode
上运行的简单内核时,我遇到了陌生术语System Call
和熟悉的Interrupt
。系统调用和中断的执行有何不同?
我一直在谷歌搜索的条款,因为只发现概念仍然不清楚给我。据我所知,在least privileged mode
中运行的应用程序使用系统调用来请求运行在Higher Privileged mode(Ring 0)
中运行的内核的服务。
我还不清楚系统调用是如何实现的。
说,我正在写一个简单的C程序到print a word
并编译它。现在,我剩下一个可执行文件,其中包含系统调用以在屏幕上打印给定的单词。是对应于给定的情况下我的问题如下:
问题1:
一旦执行该程序时,系统调用通知请求的内核 - 到底发生在这里的低层次方面编程吗?
问题2:
中断可以是系统呼叫时,反之亦然?
如果看起来我没有清楚地理解概念,请向我解释系统调用的概念。
感谢你。
注意,你不必在实模式特权级别。系统调用是调用操作系统的通用术语。中断可以用来执行一个系统调用,但x86也有专门的指令('syscall','sysenter')。 – Jester
这是否意味着系统调用和中断是相同的? –
不,他们不一样。中断可以用来实现系统调用,但这不是他们的主要目的。 – Jester