操作系統(tǒng) 系統(tǒng)調(diào)用機(jī)制

系統(tǒng)調(diào)用:用戶在編程時(shí)可以調(diào)用的操作系統(tǒng)功能

系統(tǒng)調(diào)用是操作系統(tǒng)提供給編程人員的唯一接口,使CPU狀態(tài)從用戶態(tài)陷入內(nèi)核態(tài)

每個(gè)操作系統(tǒng)都提供幾百種系統(tǒng)調(diào)用(進(jìn)程控制,進(jìn)程通信,文件使用,目錄操作,設(shè)備管理,信息維護(hù)等)

應(yīng)用程序->系統(tǒng)調(diào)用;應(yīng)用程序->C函數(shù)庫/API接口->系統(tǒng)調(diào)用;

內(nèi)核函數(shù)處理系統(tǒng)調(diào)用

系統(tǒng)調(diào)用機(jī)制的設(shè)計(jì)

1.中斷/異常機(jī)制支持系統(tǒng)調(diào)用服務(wù)的實(shí)現(xiàn);2.選擇一條特殊指令:陷入指令(訪管指令),引發(fā)異常,完成用戶態(tài)到內(nèi)核態(tài)的切換;3.系統(tǒng)調(diào)用號(hào)和參數(shù):每個(gè)系統(tǒng)調(diào)用都事先給定一個(gè)編號(hào)(功能號(hào))4. 系統(tǒng)調(diào)用表:存放系統(tǒng)調(diào)用服務(wù)例程的入口地址

參數(shù)傳遞過程問題

怎樣實(shí)現(xiàn)用戶程序的參數(shù)傳遞給內(nèi)核?

3種常用實(shí)現(xiàn)方法

1.由陷入指令自帶參數(shù):陷入指令的長(zhǎng)度有限,且還要攜帶系統(tǒng)調(diào)用功能號(hào),只能自帶有限的參數(shù);2. 通過通用寄存器傳遞參數(shù),這些寄存器是操作系統(tǒng)和用戶程序都能訪問的,但寄存器的個(gè)數(shù)會(huì)限制傳遞參數(shù)的數(shù)量 3. 在內(nèi)存中開辟專用堆棧區(qū)來傳遞參數(shù)。

系統(tǒng)調(diào)用執(zhí)行過程

當(dāng)CPU執(zhí)行到特殊的陷入指令時(shí):

中斷/異常機(jī)制:硬件保護(hù)現(xiàn)場(chǎng);通過查中斷向量表把控制權(quán)轉(zhuǎn)給系統(tǒng)調(diào)用總?cè)肟诔绦?/p>

系統(tǒng)調(diào)用總?cè)肟诔绦颍罕4娆F(xiàn)場(chǎng);將參數(shù)保存在內(nèi)核堆棧里;通過查系統(tǒng)調(diào)用表把控制權(quán)轉(zhuǎn)給相應(yīng)的系統(tǒng)調(diào)用處理例程或內(nèi)核函數(shù)

執(zhí)行系統(tǒng)調(diào)用例程

恢復(fù)現(xiàn)場(chǎng),返回用戶程序

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 安大大 + 原創(chuàng)作品轉(zhuǎn)載請(qǐng)注明出處 + 《Linux操作系統(tǒng)分析》MOOC課程 用戶態(tài)、內(nèi)核態(tài)和中斷處理過程 程序...
    夏天的籃球閱讀 1,705評(píng)論 0 0
  • 所有的程序員在寫程序的時(shí)候都離不開通過庫函數(shù)的方式和系統(tǒng)調(diào)用打交道 什么是用戶態(tài)和內(nèi)核態(tài)?(從CPU指令級(jí)別的角度...
    那只大象閱讀 3,743評(píng)論 1 5
  • 8086匯編 本筆記是筆者觀看小甲魚老師(魚C論壇)《零基礎(chǔ)入門學(xué)習(xí)匯編語言》系列視頻的筆記,在此感謝他和像他一樣...
    Gibbs基閱讀 37,334評(píng)論 8 114
  • 一些天使墮落得叫人心疼 整個(gè)世界突然蘇醒 愛情那是個(gè)什么玩意 墻外繞城而來的弱水 滲往地獄的巖漿 夜夜夢(mèng)醒處模糊的...
    陌諾流年閱讀 441評(píng)論 44 56