日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

系統(tǒng)中斷cpu占用100說明什么 系統(tǒng)中斷


系統(tǒng)中斷cpu占用100說明什么 系統(tǒng)中斷


文章目錄一、系統(tǒng)中斷概念二、硬中斷和軟中斷三、用戶態(tài)和內(nèi)核態(tài)用戶態(tài)切換到內(nèi)核態(tài)的3種切換方式四、系統(tǒng)中斷,內(nèi)核做了哪些事?五、硬件中斷觸發(fā)的過程(8259A芯片中斷控制器的工作流程)1.中斷控制器2. 中斷控制器工作流程一、系統(tǒng)中斷概念
早期計(jì)算機(jī)各個(gè)程序只能串行執(zhí)行、系統(tǒng)資源利用等 。為了解決上述問題,人們就發(fā)明了操作系統(tǒng),引入了中斷機(jī)制,實(shí)現(xiàn)了多道程序的并發(fā)執(zhí)行,提高了系統(tǒng)資源的利用率 。中斷是多程序并發(fā)執(zhí)行的前提條件 。
舉個(gè)例子:
你在家打了一天的游戲或者看了一天的電影,突然你餓了,你就點(diǎn)了個(gè)外賣,然后接著打游戲,等著外賣 。外賣小哥突然敲門,這時(shí)候你第一步要執(zhí)行的動(dòng)作肯定是暫停游戲,而外賣小哥敲門的行為其實(shí)就是申請中斷請求 。此時(shí)中斷處理程序就會(huì)來處理兩件事,一件事就是執(zhí)行掛起游戲這個(gè)進(jìn)程,接著將吃東西這個(gè)進(jìn)程喚醒 。當(dāng)中斷處理程序執(zhí)行結(jié)束,就會(huì)將執(zhí)行掛起的打游戲進(jìn)程恢復(fù) 。
二、硬中斷和軟中斷
操作系統(tǒng)的中斷存在硬中斷和軟中斷
硬中斷由與系統(tǒng)相連的外設(shè)(例如網(wǎng)卡、硬盤)自動(dòng)產(chǎn)生的 。主要是用來通知操作系統(tǒng)外設(shè)狀態(tài)的變化 。比如當(dāng)網(wǎng)卡收到數(shù)據(jù)包的時(shí)候,就會(huì)發(fā)出一個(gè)中斷 。軟中斷為了滿足實(shí)時(shí)系統(tǒng)的要求,中斷處理應(yīng)該是越快越好 。linux為了實(shí)現(xiàn)這個(gè)特點(diǎn),當(dāng)中斷發(fā)生的時(shí)候,硬中斷處理那些短時(shí)間就可以完成的工作,而將那些處理事件比較長的工作,放到中斷之后來完成,也就是軟中斷(softirq)來完成 。硬中斷和軟中斷的區(qū)別軟中斷是執(zhí)行中斷指令產(chǎn)生的,而硬中斷是由外設(shè)引發(fā)的 。硬中斷的中斷號是由中斷控制器提供的,軟中斷的中斷號由指令直接指出,無需使用中斷控制器 。硬中斷是可屏蔽的,軟中斷不可屏蔽 。硬中斷處理程序要確保它能快速地完成任務(wù),這樣程序執(zhí)行時(shí)才不會(huì)等待較長時(shí)間,稱為上半部 。軟中斷處理硬中斷未完成的工作,是一種推后執(zhí)行的機(jī)制,屬于下半部 。三、用戶態(tài)和內(nèi)核態(tài)
當(dāng)一個(gè)進(jìn)程執(zhí)行系統(tǒng)調(diào)用而需要內(nèi)核代碼去執(zhí)行,就稱為內(nèi)核態(tài) 。此時(shí)處理器就處于特權(quán)級最高的(0級)內(nèi)核代碼中執(zhí)行 。當(dāng)進(jìn)程處于內(nèi)核態(tài)時(shí),執(zhí)行的內(nèi)核代碼會(huì)使用當(dāng)前進(jìn)程的內(nèi)核態(tài) 。當(dāng)進(jìn)程執(zhí)行用戶自己的代碼時(shí),則稱其處于用戶態(tài) 。
內(nèi)核態(tài)和用戶態(tài)是操作系統(tǒng)的兩種運(yùn)行級別,這個(gè)和CPU沒有必然的聯(lián)系 。CPU提供了Ring0-Ring3四種級別的運(yùn)行模式,Ring0級別最高,Ring3級別最低 。Linux將Ring3級別作為用戶態(tài),Ring0級別作為內(nèi)核態(tài),沒有使用Ring1和Ring2 。Ring3狀態(tài)不能訪問Ring0的地址空間 。Linux進(jìn)程的4GB地址空間,3G-4G部分大家是共享的,是內(nèi)核態(tài)的地址空間,這里存放的是內(nèi)核的代碼、數(shù)據(jù)和所有內(nèi)核模塊 。用戶運(yùn)行一個(gè)程序,該程序所創(chuàng)建的進(jìn)程開始是運(yùn)行在用戶態(tài)的,如果要執(zhí)行文件讀寫,網(wǎng)絡(luò)數(shù)據(jù)發(fā)送等操作,必須通過write,send等系統(tǒng)調(diào)用,這些系統(tǒng)調(diào)用會(huì)調(diào)用內(nèi)核中的代碼來完成操作;這時(shí),就會(huì)切換到Ring0,然后進(jìn)入3GB-4GB中的內(nèi)核地址空間去執(zhí)行這些代碼完成操作,完成后,切換回Ring3,回到用戶態(tài) 。
用戶態(tài)切換到內(nèi)核態(tài)的3種切換方式系統(tǒng)調(diào)用:當(dāng)用戶進(jìn)程通過系統(tǒng)調(diào)用申請使用操作系統(tǒng)提供的服務(wù)來完成工作時(shí),就要切換到內(nèi)核態(tài)來處理 。異常:當(dāng)CPU在執(zhí)行運(yùn)行在用戶態(tài)下的程序時(shí),發(fā)生了某些事先不可知的異常,這時(shí)會(huì)觸發(fā)由當(dāng)前運(yùn)行進(jìn)程切換到處理此異常的內(nèi)核相關(guān)程序,也就轉(zhuǎn)到了內(nèi)核態(tài) 。外圍設(shè)備的中斷:當(dāng)外圍設(shè)備完成用戶請求操作,會(huì)向CPU發(fā)起相應(yīng)中斷信號,這時(shí)CPU會(huì)暫停當(dāng)前執(zhí)行的指令,轉(zhuǎn)而執(zhí)行該中斷信號對應(yīng)的處理程序,如果先前執(zhí)行的指令是用戶態(tài)的程序,那么這個(gè)轉(zhuǎn)換的過程自然也就發(fā)生了由用戶態(tài)到內(nèi)核態(tài)的轉(zhuǎn)換 。四、系統(tǒng)中斷,內(nèi)核做了哪些事?

推薦閱讀