作業系統的硬體控制功能,通常是通過一些小的函式集合體的形式來提供的,這些函式及呼叫函式的行為統稱為系統呼叫(system call),也就是應用對作業系統(system)的功能進行呼叫(call)的意思,在前面的程式中用到了time()及printf()等函式,這些函式內部也都使用了系統呼叫,這里之所以用“內部”這個詞,是因為在Windows作業系統中,提供回傳當前日期和時刻,以及在顯示幕中顯示字串等功能的系統呼叫的函式名,并不是time()和printf(),系統呼叫是在time()和printf()函式的內部執行的,大家可能會認為這個方法有些繞,不過這是有原因的,
C語言等高級編程語言并不依存于特定的作業系統,這是因為人們希望不管是Windows還是Linux,都能使用幾乎相同的源代碼,因此,高級編程語言的機制就是,使用獨自的函式名,然后再在編譯時將其轉換成相應作業系統的系統呼叫(也有可能是多個系統呼叫的組合),也就是說,用高級編程語言撰寫的應用在編譯后,就轉換成了利用系統呼叫的本地代碼(圖9-6),

圖9-6 高級編程語言的函式呼叫在編譯后變成了系統呼叫
在高級編程語言中,也存在可以直接呼叫系統呼叫的編程語言,不過,利用這種方式做成的應用,移植性①并不友好(也俗稱為有惡意行為的應用),例如,直接呼叫Windows系統呼叫的應用,在Linux上顯然是無法運行的,
Ps:①移植性指的是同樣的程式在不同作業系統下運行時需要花費的時間等,費時越少說明移植性越好,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/224360.html
標籤:其他
上一篇:數碼管顯示
下一篇:解決聯想小新air14,聯想小新15 銳龍版本 realtek 8822ce網卡 網路連接問題 wifi斷流 連接不上 WiF藍牙互相干擾
