系統(tǒng)調(diào)用
系統(tǒng)調(diào)用是操作系統(tǒng)提供給用戶的一種服務(wù),程序設(shè)計人員在編寫程序的時候可以用來請求操作系統(tǒng)的服務(wù)。
百度百科的描述:由操作系統(tǒng)實現(xiàn)提供的所有系統(tǒng)調(diào)用所構(gòu)成的集合即程序接口或應(yīng)用編程接口(Application Programming Interface辜昵,API)。是應(yīng)用程序同系統(tǒng)之間的接口症见。
常見的系統(tǒng)調(diào)用包括:文件相關(guān)操作、系統(tǒng)控制狰晚、進程控制筒饰。
內(nèi)核態(tài)和用戶態(tài)
CPU有兩種模式:內(nèi)核態(tài)和用戶態(tài),當(dāng)發(fā)生用戶程序系統(tǒng)調(diào)用時候壁晒,從用戶進程進入內(nèi)核態(tài)瓷们,CPU進入內(nèi)核態(tài)。
用戶程序只在用戶態(tài)下運行秒咐,有時需要訪問系統(tǒng)核心功能谬晕,這時通過系統(tǒng)調(diào)用接口使用系統(tǒng)調(diào)用。
Linux按照特權(quán)等級携取,把進程的運行空間分為內(nèi)核空間和用戶空間攒钳。內(nèi)核空間具有最高權(quán)限,可以直接訪問所有資源雷滋,用戶空間只能訪問首先資源不撑,不能直接訪問內(nèi)存等硬件設(shè)備,必須通過系統(tǒng)調(diào)用陷入到內(nèi)核中晤斩,才能訪問這些特權(quán)資源焕檬。也就是說,進程既可以在用戶空間運行澳泵,又可以在內(nèi)核空間中運行实愚。進程在用戶空間運行時,被稱為進程的用戶態(tài)兔辅,陷入內(nèi)核空間時腊敲,被稱為進程的內(nèi)核態(tài)
中斷
中斷是CPU的一個功能,就是CPU停下當(dāng)前的工作维苔,保留現(xiàn)場后自動地轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序碰辅,CPU控制權(quán)發(fā)生改變。處理完該事件后再返回斷點繼續(xù)執(zhí)行被剛才被打斷的程序介时。
中斷分為軟中斷和硬中斷
軟中斷是利用硬件中斷的概念乎赴,用軟件方式進行模擬忍法,實現(xiàn)宏觀上的異步執(zhí)行效果。很多情況下榕吼,軟中斷和“信號”類似。同時勉失,軟中斷又是和硬中斷相對應(yīng)的羹蚣,“硬中斷是外部設(shè)備對CPU的中斷”,“軟中斷通常是硬件中斷服務(wù)程序?qū)?nèi)核的中斷”
作為系統(tǒng)調(diào)用而言乱凿,對于i386則是通過軟中斷int80實現(xiàn)
對于其它的軟中斷顽素,則是在硬件中斷之后觸發(fā)的軟中斷!
第一類是由CPU外部引起的徒蟆,稱作中斷胁出,如I/O中斷、時鐘中斷段审、控制臺中斷等全蝶。
第二類是來自CPU的內(nèi)部事件或程序執(zhí)行中的事件引起的 過程,稱作異常寺枉,如由于CPU本身故障(電源電壓低于105V或頻率在47~63Hz之外)抑淫、
程序故障(非法操作碼、地址越界姥闪、浮點溢出等)等引起的過程始苇。
第三類由于在程序中使用了請求系統(tǒng)服務(wù)的系統(tǒng)調(diào)用而引發(fā)的過程,稱作“陷入”(trap,或者陷阱)筐喳。前兩類通常都稱作中斷催式,它們的產(chǎn)生往往是無意、
被動的避归,而陷入是有意和主動的荣月。
第一類(中斷)+第二類(異常)= 中斷
第三類(系統(tǒng)調(diào)用)= 系統(tǒng)調(diào)用
上下文切換
CPU上下文分為:中斷上下文、進程上下文槐脏、線程上下文