1、系統調用和庫函數的關系
系統調用通過軟中斷int 0x80從用戶態進入內核態。 函數庫中的某些函數調用了系統調用。
函數庫中的函數可以沒有調用系統調用,也可以調用多個系統調用。 編程人員可以通過函數庫調用系統調用。
高級編程也可以直接采用int 0x80進入系統調用,而不必通過函數庫作為中介。 如果是在核心編程,也可以通過int 0x80進入系統調用,此時不能使用函數庫。因為函數庫中的函數是內核訪問不到的。
2、從用戶調用庫函數到系統調用執行的流程。
1) 假設用戶調用ssize_t write (int fields, cont void *buff, size_t nbytes);庫函數。
2) 庫函數會執行int 0x80中斷。因為中斷使得進程從用戶態進入內核態,所以參數通過寄存器傳送。
3) 0x80中斷對應的中斷例程被稱為system call handler。
其工作是:
i. 存儲大多數寄存器到內核堆棧中。這是匯編代碼寫的。
ii. 執行真正的系統調用函數
主站蜘蛛池模板:
正宁县|
邢台县|
历史|
桦川县|
永昌县|
鸡西市|
灵寿县|
蕲春县|
金秀|
吴旗县|
阜新市|
沽源县|
阜宁县|
金溪县|
桂东县|
桐庐县|
漯河市|
尉犁县|
岗巴县|
桦南县|
固始县|
天台县|
崇阳县|
日照市|
休宁县|
张家界市|
济宁市|
车险|
沛县|
西华县|
昌平区|
固镇县|
凤庆县|
三明市|
南皮县|
山阴县|
鄂温|
盱眙县|
正镶白旗|
诸暨市|
皋兰县|