日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

一步步编写操作系统 53 任务状态段TSS介绍

發布時間:2023/12/10 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一步步编写操作系统 53 任务状态段TSS介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

操作系統是利用PCB來維護所有任務的,包括進程和線程,但cpu提供的是TSS,linux系統可沒用它,因為效率太低。但是還是要了解下TSS才清楚操作系統中某些操作的原因。

本節中所講的特權級與它有著密不可分的聯系,TSS作用不止涉及特權級,還包括任務寄存器環境,任務管理相關的內容,為了不干擾大家,這里只介紹和特權級相關的內容,待將來咱們用到更多內容時再和大伙兒細說。

TSS,即Task State Segment,意為任務狀態段,它是處理器在硬件上原生支持多任務的一種實現方式,也就是說處理器原本是想讓操作系統開發廠商利用此結構實現多任務,人家處理器廠商已經提供了多任務管理的解決方案,盡管后來操作系統并不買賬^_^,這是后話,以后再議。TSS是一種數據結構,它用于存儲任務的環境。咱們一睹為快,見圖

TSS是每個任務都有的結構,它用于一個任務的標識,相當于任務的身份證,程序擁有此結構才能運行,這是處理器硬件上用于任務管理的系統結構,處理器能夠識別其中每一個字段。該結構看上去也有點復雜,里面眾多寄存器都囊括到這104字節中啦,其實這104字節只是TSS的最小尺寸,根據需要,還可以再接上個IO位圖,這些內容將在后面章節用到時補充。這里目前只需要關注28字節之下的部分,這里包括了3個棧指針,這是怎么回事呢。

在沒有操作系統的情況下,可以認為進程就是任務,任務就是一段在處理器上運行的程序,相當于某個計算機高手在脫離操作系統的情況下所寫的代碼,它能讓計算機很好地運行。在有了操作系統之后,程序可分為用戶程序和操作系統內核程序,故,之前完整的一個任務也因此被分為用戶部分和內核部分,由于內核程序是位于0特權級,用戶程序位于3特權級,所以,一個任務按特權級來劃分的話,實質上是被分成了3特權級的用戶程序和0特權級的內核程序,這兩部分加在一起才是能讓處理器完整運行的程序,也就是說完整的任務要歷經這兩種特權的變換。所以,我們平時在Linux下所寫程序只是個半成品,咱們只負責完成用戶態下的部分,內核態的部分由操作系統提供。

任務是由處理器執行的,任務在特權級變換時,本質上是處理器的當前特權級在變換,由一個特權級變成了另外一個特權級。這就開始涉及到棧的問題了,處理器固定,處理器在不同特權級下,應該用不同特權級的棧,原因是如果在同一個棧中容納所有特權級的數據時,這種交叉引用會使棧變得非常混亂,并且,用一個棧容納多個特權級下的數據,棧容量有限,這很容易溢出。舉個例子,處理器位于0特權級時要用0特權級的棧,3特權級下也只能用3特權級的棧。

每個任務的每個特權級下只能有一個棧,不存在一個任務的某個特權級下存在多個同特權級棧的情況。也就是說,一共4個特權級,一個任務“最多”有4個棧。既然一個TSS代表一個任務,每個任務又有4個棧,那為什么TSS中只有3個棧:ss0和esp0、ss1和esp1、ss2和esp2?它們分別代表0級棧的段選擇子和偏移量、1級棧的段選擇子和偏移量、2級棧的段選擇子和偏移量。大家看,我在前面說的一個任務最多擁有4個棧,并不是所有的任務都是這樣。

要想搞清楚這個問題,得先弄明白TSS中記錄的3個棧是用來干嗎的。

剛才已經說過,特權級在變換時,需要用到不同特權級下的棧,當處理器進入不同的特權級時,它自動在TSS中找同特權級的棧,你懂的,TSS是處理器硬件原生的系統級數據結構,處理器當然知道TSS中哪些字段是目標棧的選擇子及偏移量。

特權級轉移分為兩類,一類是由中斷門、調用門等手段實現低特權級轉向高特權級,另一類則相反,是由調用返回指令從高特權級返回到低特權級,這是唯一一種能讓處理器降低特權級的情況。

對于第1種——特權級由低到高的情況,由于不知道目標特權級對應的棧地址在哪里,所以要提前把目標棧的地址記錄在某個地方,當處理器向高特權級轉移時再從中取出來加載到SS和ESP中以更新棧,這個保存的地方就是TSS。處理器會自動地從TSS中找到對應的高特權級棧地址,這一點對開發人員是透明的,咱們只需要在TSS中記錄好高特權級的棧地址便可。

也就是說,除了調用返回外,處理器只能由低特權級向高特權級轉移,TSS中所記錄的棧是轉移后的高特權級目標棧,所以它一定比當前使用的棧特權級要高,只用于向更高特權級轉移時提供相應特權的棧地址。進一步說,TSS中不需要記錄3特權級的棧,因為3特權級是最低的,沒有更低的特權級會向它轉移。

不是每個任務都有4個棧,一個任務可有擁有的棧的數量取決于當前特權級是否還有進一步提高的可能,即取決于它最低的特權級別。比如3特權級的程序,它是最低的特權級,還能提升三級,所以可額外擁有2、1、0特權級棧,用于將特權分別轉移到2、1、0級時使用。2特權級的程序,它還可以提升兩級,所以可額外擁有1、0特權級棧,用于將特權級分別轉移到1、0級時使用。以此類推,1特權級的程序,它可以額外擁有0特權級棧,0特權級已經是至高無上了,只有這一個0級棧。以上所說的低特權級轉向高特權級的過程稱為“向內層轉移”,想想4個特權級劃分的同心圓就知道了,高特權級位于里面。

對于第2種——由高特權返回到低特權級的情況,處理器是不需要在TSS中去尋找低特權級目標棧的。其中一個原因我想您已經猜到了:TSS中只記錄2、1、0特權級的棧,假如是從2特權級返回到3特權級,上哪找3特權級的棧?另一方面的原因是,低特權級棧的地址其實已經存在了,這是由處理器的向高特權級轉移指令(如int、call等)實現的機制決定的,換句話說,處理器知道去哪里找低特權級的目標棧,等我把后面內容“啰嗦完”您就知道了。

由于特權級向低轉移后,處理器特權級有了變化,同樣也需要將當前棧更新為低特權級的棧,它如何找到對應的低特權級棧呢。正常情況下,特權級是由低向高轉移在先,由高向低返回在后,即只有先向更高特權級轉移,才能談得上再從高特權級回到低特權級,否則沒有“去”就談不上“回”(寧可被罵啰嗦我也要說清楚)。當處理器由低向高特權級轉移時,它自動地把當時低特權級的棧地址(SS和ESP)壓入了轉移后的高特權級所在的棧中(隨著以后深入學習大家會明白這一點),所以,當用返回指令如retf或iret從高特權級向低特權級返回時,處理器可以從當前使用的高特權級的棧中獲取低特權級的棧段選擇子及偏移量。由高特權級返回低特權級的過程稱為“向外層轉移”。

當下次處理器再進入到高特權級時,它依然會在TSS中尋找對應的高特權級棧,而TSS中棧指針值都是固定的,每次進入高特權級都會用重復使它們。也就是說,即使曾經轉移到高特權級下用過高特權級棧,處理器也不會自動把該高特權級棧指針更新到TSS中,因為在從高特權級返回時,處理器需要把棧更新為低特權級的棧選擇子及esp指針,而原先在段寄存器SS和寄存器esp中高特權級下的棧段選擇子及指針會被處理器自動丟棄。換句話說,如果想保留上一次高特權級的棧指針,咱們得自己手動更新TSS中相應棧的數據。

對啦,有沒有同學有疑問,上面光說處理器從TSS中找更高特權級的棧地址,那處理器是怎樣找到TSS的?

TSS是硬件支持的系統數據結構,它和GDT等一樣,由軟件填寫其內容,由硬件使用。GDT也要加載到寄存器GDTR中才能被處理器找到,TSS也是一樣,它是由TR(Task Register)寄存器加載的,每次處理器執行不同任務時,將TR寄存器加載不同任務的TSS就成了。至于怎么加載以及相關工作原理,目前咱們用不到,還是放在后面說比較合適。

您看,正是由于處理器提供了硬件方面的框架,所以很多工作都是“自動”完成的,雖然操作系統看上去很底層的樣子,但其實也屬于“應用型”開發。

好啦,TSS中有關特權級的內容就說到這,為了不干擾大家學習特權級,TSS的其它方面將會在后續章節中逐步說明。

總結

以上是生活随笔為你收集整理的一步步编写操作系统 53 任务状态段TSS介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产一区视频在线观看免费 | 91红桃视频 | av在线视| 成人青青草 | 熟妇人妻一区二区三区四区 | 成人av动漫在线 | 欧美色图一区 | 国产又爽又色 | 99人人爽 | 国产91绿帽单男绿奴 | 美日韩丰满少妇在线观看 | 伊人网站在线观看 | 3p视频在线 | 国产性生活视频 | 日韩一区二区三区三四区视频在线观看 | 国产免费高清视频 | 密桃成熟时在线观看 | www.自拍偷拍 | 精品免费久久久 | 成人福利小视频 | 日韩视频一区二区 | 亚洲最新在线观看 | 国产精品国产三级国产播12软件 | 国产成年人视频 | av大西瓜 | 日韩av视屏 | 亚洲青春草 | 人妖一区二区三区 | 亚洲免费片 | 欧美成人vr18sexvr| 日老女人视频 | 丰满放荡岳乱妇91ww | 激情在线视频 | 青青青在线免费 | 日韩毛片在线视频 | av在线免费观看不卡 | 国产精品一区在线观看你懂的 | 在线精品亚洲欧美日韩国产 | 国产午夜片 | www.色哟哟 | 秋葵视频成人 | 国产精品夜夜爽 | 99热精品在线观看 | 欧美国产日韩精品 | 亚洲最大在线视频 | 苏晴忘穿内裤坐公交车被揉到视频 | 欧美视频导航 | 老妇裸体性激交老太视频 | 一边摸一边做爽的视频17国产 | 91全免费 | 狠狠艹狠狠干 | 亚洲综合视频在线播放 | 另类男人与善交video | 欧美爱爱网 | av成人在线播放 | 免费观看日批视频 | 动漫3d精品一区二区三区乱码 | 第一色综合| 免费看国产精品 | 国产人妖在线视频 | av鲁丝一区鲁丝二区鲁丝三区 | 日本吃奶摸下激烈网站动漫 | 欧美精品乱码 | www.亚洲天堂 | 日本黄色xxxx | 久色婷婷 | 午夜有码 | 成人免费淫片aa视频免费 | 国产激情无码一区二区三区 | 51ⅴ精品国产91久久久久久 | 人妻视频一区二区 | 日本免费色视频 | 成人高清在线 | 永久免费看mv网站入口亚洲 | 五月婷婷爱爱 | 中文字幕网站 | 国产aa毛片 | aa片在线观看视频在线播放 | 激情小说图片视频 | 亚洲精品一区二区三区区别 | 欧美日韩激情在线一区二区三区 | 可以免费看的av | 黑人操亚洲人 | 色哟哟黄色 | 美女扒开下面让男人捅 | 欧美性天天影院 | 成人av动漫在线 | 国产一二三区精品 | 国产美女网站视频 | 99精品在线| 丁香婷婷色 | 欧美人与禽性xxxxx杂性 | 夜夜嗨av一区二区三区四区 | 日韩av在线播放不卡 | 进去里视频在线观看 | 国产男人搡女人免费视频 | 国产春色| 国产高清一区在线观看 | 成人免费观看视频大全 |