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

Solaris內(nèi)核目錄( 八 )



某些情況下為了析取進(jìn)程信息、進(jìn)行進(jìn)程控制,控制進(jìn)程可能需要目標(biāo)進(jìn)程臨時(shí)
完成某種特殊的操作 。例如,pfiles(1)命令可以列出目標(biāo)進(jìn)程打開(kāi)的每個(gè)文件的信息,這需要目標(biāo)進(jìn)程針對(duì)每個(gè)打開(kāi)的文件句柄做stat(2)系統(tǒng)調(diào)用 。運(yùn)行在Solaris系統(tǒng)上的進(jìn)程典型地花費(fèi)大量時(shí)間阻塞在某個(gè)系統(tǒng)調(diào)用上,為了獲得目標(biāo)進(jìn)程的控制權(quán)完成控制進(jìn)程提交的任務(wù),需要在目標(biāo)進(jìn)程阻塞時(shí)搶奪CPU,保護(hù)當(dāng)前系統(tǒng)調(diào)用狀態(tài),當(dāng)控制進(jìn)程提交的任務(wù)完成后恢復(fù)保存的系統(tǒng)調(diào)用狀態(tài)繼續(xù)執(zhí)行目標(biāo)進(jìn)程原來(lái)的任務(wù) 。

為了達(dá)到這個(gè)目的,procfs實(shí)現(xiàn)了另外一個(gè)代理LWP,而不是使用目標(biāo)進(jìn)程中現(xiàn)
有LWP,否則狀態(tài)保存、恢復(fù)更加復(fù)雜 。procfs提供了一種機(jī)制創(chuàng)建代理LWP(注意PCAGENT控制消息) 。代理LWP創(chuàng)建成功后將是目標(biāo)進(jìn)程中唯一可運(yùn)行LWP,直到它消亡 。
目標(biāo)進(jìn)程中執(zhí)行代理LWP以完成控制進(jìn)程提交的任務(wù),比如在目標(biāo)進(jìn)程中執(zhí)行系統(tǒng)調(diào)用 。然后銷(xiāo)毀代理LWP,恢復(fù)保存的進(jìn)程/LWP狀態(tài) 。proc結(jié)構(gòu)中有一個(gè)成員p_agenttp,指向創(chuàng)建的代理LWP 。內(nèi)核代碼通過(guò)檢查該指針判斷目標(biāo)進(jìn)程中是否存在代理LWP 。

kthread_t * p_agenttp; /* thread ptr for /proc agent lwp */

proc(4)手冊(cè)頁(yè)介紹了進(jìn)程控制的更多細(xì)節(jié) 。

--------------------------------------------------------------------------

后記:

本篇與<>都是<>的一部分,由于很多東西缺乏內(nèi)核Hacking經(jīng)驗(yàn)和常用術(shù)語(yǔ)約定,翻譯得相當(dāng)牽強(qiáng),好在可以對(duì)照/usr/include/下的頭文件反復(fù)理解 。<<[805-3024] Solaris設(shè)備驅(qū)動(dòng)程序編程指南>>和<<[805-4038] Solaris流編程指南>>是對(duì)理解<>很好的補(bǔ)充 。此外可以在comp.Unix.programmer和comp.unix.solaris上向Sun開(kāi)發(fā)人員請(qǐng)教 。

推薦閱讀