我正在開發一個簡單的操作系統,只是爲了更好地瞭解它的內部。在開發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