linux的系統調用是用中斷實現的

來源:互聯網
上載者:User

linux的系統調用是用中斷實現的 linux的系統調用並不是像普通的函數調用那樣直接在使用者進程空間完成的,它是通過中斷實現的,即:發出中斷 + 調用中斷服務程式。   www.2cto.com  以x86體係為例,     1. 使用者進程在執行系統調用前,先把系統調用名(實際上是系統調用號)、輸入參數等放到寄存器上(EBX,ECX等寄存器)      2. 然後發出int 0x80指令,即觸發128號中斷     3. 系統暫停使用者進程,根據128號中斷找到中斷服務程式,這個程式名就叫system_call()      4. system_call()接著執行。它會從寄存器中找到系統調用名、輸入參數等,並根據系統調用上下文中找到引發系統調用的進程;執行完畢後它又會把輸出結果放到寄存器中。     5. 系統復原使用者進程,進程從寄存器中取到自己想要的東西,然後繼續執行。     補充說明:     系統調用的中斷一般稱為非強制中斷 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.