亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2164 | 回復(fù): 4
打印 上一主題 下一主題

[內(nèi)核入門] 請(qǐng)教ULK3中關(guān)于中斷的兩個(gè)問(wèn)題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2017-01-12 07:28 |只看該作者 |倒序?yàn)g覽
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽

論壇徽章:
13
15-16賽季CBA聯(lián)賽之八一
日期:2016-07-08 21:00:1415-16賽季CBA聯(lián)賽之同曦
日期:2017-02-15 14:26:1515-16賽季CBA聯(lián)賽之佛山
日期:2017-02-20 14:19:2615-16賽季CBA聯(lián)賽之青島
日期:2017-05-07 16:49:1115-16賽季CBA聯(lián)賽之廣夏
日期:2017-07-30 09:13:1215-16賽季CBA聯(lián)賽之廣東
日期:2018-07-05 22:34:3615-16賽季CBA聯(lián)賽之江蘇
日期:2018-09-03 12:10:2115-16賽季CBA聯(lián)賽之上海
日期:2018-09-25 03:49:2215-16賽季CBA聯(lián)賽之廣東
日期:2018-09-25 04:09:12
2 [報(bào)告]
發(fā)表于 2017-01-12 07:28 |只看該作者
回復(fù) 1# ymc4444


以下是我的個(gè)人理解,除了回答你的問(wèn)題,也有自己額外的總結(jié),希望你能把分給我
問(wèn)題一:任務(wù)門本來(lái)就是硬件為方便軟件進(jìn)行進(jìn)程(任務(wù))切換設(shè)計(jì)的。
CPU上有個(gè)TR寄存器,它期望軟件在內(nèi)存中為每個(gè)進(jìn)程安排各自的TSS段以及任務(wù)門,穿過(guò)任務(wù)門時(shí),硬件負(fù)責(zé)將該任務(wù)門中“TSS段寄存器值”賦給TR寄存器,從而達(dá)到進(jìn)程切換的目的。
只不過(guò)Linux切換進(jìn)程(任務(wù)),并不使用任務(wù)門,因?yàn)閺膶蛹?jí)關(guān)系來(lái)看,硬件比軟件更底層,它沒(méi)有充足的信息來(lái)舍棄不需要的操作,導(dǎo)致通過(guò)任務(wù)門切換進(jìn)程時(shí),硬件上會(huì)執(zhí)行一堆臃腫的操作,效率不行。

新問(wèn)題:那么Linux是怎么切換進(jìn)程的呢?
進(jìn)程的切換,本質(zhì)就是硬件狀態(tài)的改變:
進(jìn)程A運(yùn)行時(shí),SS+ESP寄存器指向進(jìn)程A的堆棧,CS+EIP寄存器指向進(jìn)程A的指令,CR3寄存器指向進(jìn)程A的目錄表。。
切換到進(jìn)程B,無(wú)非是讓SS+ESP寄存器指向進(jìn)程B的堆棧,CS+EIP寄存器指向進(jìn)程B的指令,CR3寄存器指向進(jìn)程B的目錄表。。
而修改SS、ESP、CS、EIP、CR3等等這些操作,硬件都向軟件提供對(duì)應(yīng)的指令了,所以穿過(guò)任務(wù)門時(shí)硬件做的操作,軟件當(dāng)然也可以自己做,從而在軟件層面也可以設(shè)計(jì)進(jìn)程切換的過(guò)程,并沒(méi)有什么奇怪。

不使用任務(wù)門,不代表Linux就可以沒(méi)有TSS這個(gè)東西了,因?yàn)椴恢皇谴┻^(guò)任務(wù)門時(shí)才需要它。比如用戶態(tài)執(zhí)行系統(tǒng)調(diào)用穿過(guò)陷阱門往內(nèi)核態(tài)切換時(shí),就要根據(jù)TR寄存器找到“當(dāng)前進(jìn)程的TSS段”,根據(jù)里面的SS0、ESP0成員值,修改SS、ESP寄存器,切換到該進(jìn)程的內(nèi)核堆棧,以及將當(dāng)前進(jìn)程的EFLAGS寄存器壓入內(nèi)核堆棧。

簡(jiǎn)單粗暴的說(shuō):硬件提供給“懶程序”一種切換進(jìn)程的方式,就是通過(guò)int(或jmp、call)穿過(guò)其它進(jìn)程的任務(wù)門即可,硬件會(huì)根據(jù)任務(wù)門中的“TSS段寄存器”修改TR寄存器,將整個(gè)TSS段讀到CPU的高級(jí)緩存并使用;Linux切換進(jìn)程時(shí),并不修改TR寄存器,因?yàn)樗恍枰薷腡SS段中的部分必要內(nèi)容,所以所有進(jìn)程有一個(gè)“公共TSS”,CPU的時(shí)間片輪到自己時(shí),要根據(jù)自己在GDT中的TSS段描述符,找到自己的TSS內(nèi)容,并修改“公共TSS”,這樣CPU只需要往高級(jí)緩存讀緩存失效的那一部分。

你的反問(wèn)+“信號(hào)”的躺槍,表示你還需要好好體會(huì)一下。
信號(hào)和進(jìn)程切換都是在內(nèi)核態(tài)往用戶態(tài)切換時(shí),判斷要不要做,它們的區(qū)別是“進(jìn)程切換”到用戶態(tài)后,就留在用戶態(tài)了,直到下一次中斷(或異常、陷阱),而“信號(hào)”切換用戶態(tài)執(zhí)行完信號(hào)處理函數(shù)后,要馬上回到內(nèi)核態(tài),因?yàn)檫要執(zhí)行其它關(guān)心該信號(hào)的進(jìn)程的的信號(hào)處理函數(shù)呢。

我們平時(shí)寫信號(hào)處理函數(shù),也沒(méi)有加int保證返回內(nèi)核,那么信號(hào)處理函數(shù)執(zhí)行完是如何“自覺(jué)”回到內(nèi)核態(tài)的呢?
因?yàn)閮?nèi)核在切換到用戶態(tài)之前,在用戶態(tài)堆棧“返回地址”的位置(就是平時(shí)我們寫funa()調(diào)用funb(),編譯器為funb()執(zhí)行完,取返回funa()的地址的位置),安排了一個(gè)指向返回內(nèi)核態(tài)的指令的地址。

問(wèn)題二:“用戶態(tài)<->內(nèi)核態(tài)切換”、“進(jìn)程切換”,兩種切換不要搞混淆。
硬件自己引起的“中斷”(可以理解為不是程序里的int指令引起的吧),比如時(shí)鐘中斷、缺頁(yè)/除0異常等,是沒(méi)有你說(shuō)的這個(gè)檢查的,因?yàn)橛布旧淼脑O(shè)計(jì)會(huì)對(duì)這些情況進(jìn)行保證,而進(jìn)程自己通過(guò)int指令企圖“中斷”,才會(huì)跟當(dāng)前進(jìn)程有關(guān)系,作為比軟件底層的硬件,硬件工程師無(wú)法確保軟件不會(huì)在不合理的情形下int,所以才要根據(jù)進(jìn)程的信息進(jìn)行檢查。

新問(wèn)題:app程序通過(guò)int切換到內(nèi)核態(tài),讓進(jìn)程從3級(jí)變成0級(jí),權(quán)利提高了,是不是就可以為所欲為了?
不可以。app擁有權(quán)利的時(shí)候,同時(shí)也必須按照內(nèi)核工程師寫的代碼執(zhí)行,即已淪為傀儡,除非能找到內(nèi)核的漏洞。

評(píng)分

參與人數(shù) 2信譽(yù)積分 +10 收起 理由
ymc4444 + 5 很給力!
nswcfd + 5 回答的不錯(cuò),學(xué)些了!

查看全部評(píng)分

論壇徽章:
20
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-17 12:21:08
3 [報(bào)告]
發(fā)表于 2017-01-20 10:22 |只看該作者
task gate的行為是CPU規(guī)定的,跟OS層面的“任務(wù)/進(jìn)程”沒(méi)有關(guān)系,更談不上調(diào)度(OS層面的概念)。

問(wèn)題二描述的也是CPU的行為,跟“任務(wù)/進(jìn)程”沒(méi)有關(guān)系。
估計(jì)是翻譯的原因吧,什么時(shí)候“中斷處理程序”是個(gè)“程序”啊

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2017-01-22 16:48 |只看該作者
中斷有兩種觸發(fā)方式,一種就是硬件異步產(chǎn)生的,常規(guī)的中斷,比如你按了一個(gè)鍵,這種的是不檢查特權(quán)的,
還有一種是匯編指令int,軟件模擬中斷,這種的是要檢查的

論壇徽章:
20
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-17 12:21:08
5 [報(bào)告]
發(fā)表于 2017-01-25 12:07 |只看該作者
筆誤,學(xué)習(xí)了。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP