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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

SylixOS 经得起检验的国产操作系统 (四)

發(fā)布時間:2024/3/7 windows 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SylixOS 经得起检验的国产操作系统 (四) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

內(nèi)核服務(wù)

?????? SylixOS內(nèi)核小巧,它提供的操作系統(tǒng)最基礎(chǔ)的服務(wù),這些服務(wù)包括:

?????? 1.????????線程管理

?????? 2.????????協(xié)程管理

?????? 3.????????事件標(biāo)志組管理

???????4.????????中斷管理

???????5.????????調(diào)度器

???????6.????????內(nèi)存管理

???????7.????????消息隊列

???????8.????????計數(shù)、互斥、二值信號量

???????9.????????定時器管理

???????10.????資源回收器

???????這些最基礎(chǔ)的功能構(gòu)成了SylixOS所有功能與服務(wù)的核心。SylixOS本身是一個實時操作系統(tǒng),所以內(nèi)核調(diào)度器(scheduler)使用基于優(yōu)先級的搶占式調(diào)度算法,調(diào)度器調(diào)度的基本單元為線程。SylixOS永遠運行優(yōu)先級最高的線程。

??????? SylixOS調(diào)度器支持緊耦合同構(gòu)多處理(SMP)并且調(diào)度器調(diào)度時間復(fù)雜度為O1),換句話說,調(diào)度器每次調(diào)度消耗的時間與需要調(diào)度的線程總數(shù)量沒有關(guān)系,即調(diào)度時間確定,這種系統(tǒng)適合于對時間有嚴格要求的工業(yè)與軍事系統(tǒng)。此調(diào)度器同樣支持同優(yōu)先級線程,這些線程可按先進先出或者時間片輪轉(zhuǎn)調(diào)度算法。

??????? SylixOS線程(thread)有以下六種狀態(tài):

??????? 1.????????初始化

??????? 2.????????就緒

??????? 3.????????運行

??????? 4.????????阻塞

??????? 5.????????僵死

??????? 6.????????停止

?????? 線程各狀態(tài)遷移順序由下圖所示:

????? 【初始化】狀態(tài)表示一個線程剛剛創(chuàng)建,操作系統(tǒng)為它分配了運行所必須的資源但是沒有將它送入調(diào)度器。此時用戶可以獲取線程句柄,選擇合適的時間啟動線程。很多操作系統(tǒng)的線程沒有這種狀態(tài)。SylixOS加入這種狀態(tài)主要是為了適應(yīng)“靜態(tài)系統(tǒng)”的要求,所謂靜態(tài)系統(tǒng)就是運行線程確定,所需資源確定,行為確定的系統(tǒng),例如汽車電子控制單元(ECU系統(tǒng)。這類系統(tǒng)對響應(yīng)和可靠性要求非常高,所以SylixOS可以提前分配好線程所有需要的資源,為它的運行做好一切準備,這樣就不會因為資源短缺造成嚴重后果。

????? 【就緒】狀態(tài)表示一個線程可以被執(zhí)行,即線程得到了除CPU以外運行所需要的所有資源,例如線程等待的信號量已經(jīng)有效,這時線程請求調(diào)度器調(diào)度,至于調(diào)度器合適將CPU資源提供個這個線程以使其運行,則依賴于上面所說的調(diào)度器算法。

????? 【運行】狀態(tài)表示一個線程正在執(zhí)行,即就緒后,系統(tǒng)調(diào)度器為這個線程分配了CPU資源使其得以運行。

????? 【阻塞】狀態(tài)表示線程現(xiàn)在不能繼續(xù)執(zhí)行,必須需要等待指定的事件發(fā)生,例如線程正在等待信號量有效,或者消息隊列中的信息,或者一個信號,一個同步I/O請求等等。這個狀態(tài)下線程得不到執(zhí)行,除非等待的事件到達或者設(shè)置的超時時間到達,如果這兩種情況發(fā)生,則線程進入就緒隊列。等待調(diào)度器再次執(zhí)行,同時將等待的結(jié)果告知用戶代碼。

????? 【僵死】線程結(jié)束時需要回收操作系統(tǒng)在創(chuàng)建它時分配的資源,有些資源是它自身運行時無法回收的,例如內(nèi)核對象,堆棧等,這時線程通知操作系統(tǒng)相關(guān)的回收器,并把自己設(shè)置為僵死狀態(tài)等待回收器徹底銷毀自己。

????? 【停止】狀態(tài)表示線程被其他線程或者系統(tǒng)強行暫停執(zhí)行,此狀態(tài)只有SMP系統(tǒng)會出現(xiàn),當(dāng)一個核正在運行的線程(或進程)向另一個核上的線程發(fā)送信號時,這時發(fā)送信號的目標(biāo)線程正在另一個核上運行,則內(nèi)核會自動將目標(biāo)設(shè)置為停止?fàn)顟B(tài),然后等信號發(fā)送完畢后再將這個任務(wù)恢復(fù)執(zhí)行。

?????? SylixOS系統(tǒng)上線程實體的狀態(tài)永遠是以上六種狀態(tài)之一。

?

??????協(xié)程(coroutine),又稱作協(xié)同程序是比線程還小的可執(zhí)行代碼序,在windows操作系統(tǒng)上稱為纖程。一個線程內(nèi)可以擁有多個協(xié)程,這些協(xié)程共享線程除了棧之外的所有資源,例如優(yōu)先級,內(nèi)核對象等等。由于線程內(nèi)的所有協(xié)程共享線程本身的內(nèi)核對象,所以調(diào)度器本身并不知道協(xié)程的存在,協(xié)程的運行是靠所屬線程被調(diào)度時被執(zhí)行的。一個線程內(nèi)的協(xié)程共享所屬線程的優(yōu)先級,一個線程內(nèi)部的協(xié)程不可被強占。只能輪轉(zhuǎn)運行。而且當(dāng)前正在運行協(xié)程必須主動放棄CPU另同線程內(nèi)的另一個協(xié)程才能得以運行,當(dāng)線程被刪除時,線程內(nèi)的所有協(xié)程也同時被全部刪除。

?????? SylixOS在內(nèi)核中引入?yún)f(xié)程概念,而不是使用庫模擬出的協(xié)程,這樣SylixOS內(nèi)部的協(xié)程管理更加便捷高效。

??????事件標(biāo)志組(eventset)是SylixOS提供的一個線程同步通信機制。每一個事件標(biāo)志組包含有32位事件標(biāo)志,在應(yīng)用中每一位可以代表一個事件,線程可以等待事件標(biāo)志組中的一個事件或者同時等待多個事件。線程等待多個事件時既可以等待多個事件同時發(fā)生,也可以等待多個事件中任何一個事件的發(fā)生。指定的事件發(fā)生后,等待相應(yīng)事件的線程將會從阻塞狀態(tài)被轉(zhuǎn)換成就緒狀態(tài)。這時只要調(diào)度器調(diào)度該線程,它就可以執(zhí)行。

??????

?????? SylixOS中斷系統(tǒng)結(jié)構(gòu)如下圖所示,它本身可以支持無限數(shù)量的中斷(interrupt)源,具體的中斷向量表(interrupt vector)大小由編譯時的配置決定。

?????? SylixOS和大多數(shù)操作系統(tǒng)一樣使用平板中斷向量表,如果系統(tǒng)硬件中存在有主從級聯(lián)中斷,則需要在板級支持包(BSP)中進行相關(guān)的抽象。當(dāng)系統(tǒng)發(fā)生中斷時,BSP代碼按操作系統(tǒng)要求處理好相關(guān)中斷上下文(context)后,調(diào)用操作系統(tǒng)統(tǒng)一的中斷入口API。操作系統(tǒng)根據(jù)中斷向量號來決定運行哪些之前已經(jīng)注冊的中斷服務(wù)。驅(qū)動程序不需要操作中斷的具體行為,只需要注冊相關(guān)的中斷向量即可。

?????? SylixOS同時支持單向量多中斷服務(wù)函數(shù)表,所以像PCI總線這樣的多級中斷系統(tǒng),使用此類中斷向量管理,用戶驅(qū)動程序?qū)⒆兊姆浅:唵巍?/span>

?

?????? SylixOS調(diào)度器只管理一種資源:CPU。調(diào)度器決定當(dāng)前時刻將CPU分配給哪個線程,即運行哪個線程。每一個CPU核心只能同時運行一個線程,如果沒有任何就緒的用戶線程,則調(diào)度器讓CPU運行永遠就緒的空閑(idle)線程。

??????如上所述,對于單核CPU系統(tǒng),一般的多任務(wù)操作系統(tǒng)在宏觀上是多任務(wù)并行處理,但在微觀上,同時只有一個線程運行。調(diào)度器根據(jù)調(diào)度算法和當(dāng)前就緒線程的相關(guān)參數(shù)來判斷誰將運行。對于緊耦合多CPU系統(tǒng)(SMP,例如酷睿,龍芯多核),他們可以同時運行與內(nèi)核數(shù)量相當(dāng)?shù)木€程,例如雙核處理器可以同時運行兩個線程,如果這兩個線程沒有資源沖突,則理論運行速度將達到單核兩倍(真正的并行處理系統(tǒng)),但是沒有資源沖突的線程是理想狀態(tài),所以真實運行的N核系統(tǒng)是不可能達到單核系統(tǒng)N倍的效率。對于多核系統(tǒng),SylixOS調(diào)度器將決定這些核同時運行哪些線程。對于硬實時的SylixOS來說,調(diào)度器將CPU分配給就緒線程中優(yōu)先級最高的幾個線程,這個調(diào)度算法時間復(fù)雜度也為O1)。

??????? SylixOS提供三種形式的內(nèi)存管理:堆內(nèi)存管理(heap),定長分區(qū)內(nèi)存管理(pool),虛擬內(nèi)存管理(vmm)。這三種內(nèi)存管理有著不同的用途。

?????? 堆內(nèi)存管理類似于我們常用的mallocfree操作,操作系統(tǒng)有兩個非常關(guān)鍵的內(nèi)存堆:“內(nèi)核內(nèi)存堆”和“系統(tǒng)內(nèi)存堆”。內(nèi)核堆負責(zé)系統(tǒng)內(nèi)核對象的緩沖。系統(tǒng)堆負責(zé)內(nèi)核基礎(chǔ)緩沖區(qū),驅(qū)動程序緩沖區(qū)等。

?????? 虛擬內(nèi)存管理只用于有硬件內(nèi)存管理單元(MMU)的處理器。它管理了整個虛擬內(nèi)存空間和物理頁面的分配,回收,映射,權(quán)限。是操作系統(tǒng)內(nèi)存管理的核心。例如后面將要提到的進程,文件映射,缺頁中斷系統(tǒng)等等,都需要虛擬內(nèi)存管理的支持。同時它也接管了所有內(nèi)存的異常訪問處理(映射錯誤或者權(quán)限錯誤)。

??????? SylixOS物理內(nèi)存采用頁式內(nèi)存管理算法。物理頁面使用伙伴算法,虛擬空間采用哈希紅黑二叉樹保證分配與回收的速度。

?????? 消息隊列是SylixOS提供的多任務(wù)同步通信方式之一,它將一個消息從一個任務(wù)傳遞到另一個任務(wù),這樣一個線程可以將產(chǎn)生的數(shù)據(jù)或者事件發(fā)送出去,由指定的任務(wù)繼續(xù)處理。這也是操作系統(tǒng)多任務(wù)最常用的同步通信方式。

?????? 信號量也是SylixOS提供的多任務(wù)同步通信方式之一,SylixOS的信號量分為三種:計數(shù)信號量、二值信號量、互斥信號量。信號量既可以用作任務(wù)間的通信,也可以用于中斷與任務(wù)的通信。SylixOS有關(guān)信號量對線程狀態(tài)的影響如下圖所示。

?????? 計數(shù)信號量內(nèi)部是一個32/64位計數(shù)器,當(dāng)計數(shù)值為0時等待的線程將被阻塞,如果不為0則計數(shù)器減一線程繼續(xù)運行。發(fā)送信號量時,如果此時有線程阻塞在對應(yīng)的信號量上,則阻塞的任務(wù)將被激活,如果沒有則計數(shù)器加一。

?????? 二值信號量顧名思義,它只有兩種狀態(tài):有效和無效。線程等待此信號量時如果信號量有效,則信號量立即變?yōu)闊o效狀態(tài),同時當(dāng)前線程不阻塞并繼續(xù)執(zhí)行。如果信號量是無效狀態(tài),則線程被阻塞。發(fā)送信號量時,如果此時有線程阻塞在對應(yīng)的信號量上,則阻塞的線程將被激活,如果沒有等待此信號量的線程,則將信號量置為有效狀態(tài)。

???????互斥信號量(簡稱互斥量)是SylixOS為保護共享資源設(shè)計的一種鎖機制(大多數(shù)操作系統(tǒng)擁有此功能),互斥信號量的基本行為類似于二值信號量,但是功能更加強大。但它并不能取代二值信號量,因為釋放互斥信號量的線程必須是之前獲取該信號量的線程,所以互斥量不能被用作線程同步通信。SylixOS的互斥量提供兩種方法避免優(yōu)先級倒置(又名優(yōu)先級反轉(zhuǎn)),一種是優(yōu)先級繼承算法,一種是優(yōu)先級天花板算法,創(chuàng)建互斥量時通過選項來選擇需要使用的算法。同時互斥量支持資源死鎖檢測,死鎖可重入功能,同樣也是根據(jù)創(chuàng)建選項確定。

??????? SylixOS提供兩種類型的定時器:高速內(nèi)核定時器,任務(wù)級定時器。高速內(nèi)核定時器顧名思義,它的定時周期可以非常短,頻率可以高過操作系統(tǒng)的時鐘。但需要注意的是,高速定時器的用戶回調(diào)函數(shù)可能運行在中斷上下文中(由BSP代碼決定),所以只能進行簡單的操作,一般用于發(fā)送信號量激活等待線程,或者通知什么事情發(fā)生。

?????? 任務(wù)級定時器速度較慢,他提供普通精度的定時要求。定時器服務(wù)函數(shù)運行在操作系統(tǒng)t_timer內(nèi)核線程中。

?????? 需要注意的是:SylixOS內(nèi)核提供的定時器只用于內(nèi)核模塊或者內(nèi)核應(yīng)用,進程需要使用與信號系統(tǒng)相關(guān)的posix定時器。

????????SylixOS的回收器主要是記錄一個進程的資源使用情況,在進程退出時將釋放進程的所有資源,它們包括內(nèi)核對象,文件描述符,進程空間,依賴的動態(tài)鏈接庫等等。進程相關(guān)的內(nèi)容將在下面進程一節(jié)詳細講解。

?

(本篇結(jié)束)

總結(jié)

以上是生活随笔為你收集整理的SylixOS 经得起检验的国产操作系统 (四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人日日夜夜 | 无码精品人妻一区二区三区湄公河 | 丰满人妻一区二区三区四区 | 精品美女在线 | 中国黄色网页 | 夜夜视频| 免费黄色av网址 | 国产精品一区二区不卡 | 伊人久久97 | 精品三区视频 | 久久精品欧美 | 国产91绿帽单男绿奴 | 色女人影院 | 日本视频黄色 | www.97av.com| 日本色综合网 | 亚洲色欧美另类 | 蜜桃av中文字幕 | 日本熟妇浓毛 | 国产女人高潮毛片 | 日本一区二区三区久久 | 嫩草一区 | 色老头在线观看 | 丰满岳乱妇一区二区三区 | 啪啪一级片 | 天天做天天摸天天爽天天爱 | 国产看真人毛片爱做a片 | 800av在线播放| 毛片av在线观看 | 精品一区二区免费视频 | 久久久久久久国产视频 | 亚洲a中文字幕 | 久久久新 | 色在线免费观看 | 亚洲色图2 | 无码黑人精品一区二区 | 欧美一区二区免费电影 | 什么网站可以看毛片 | 久久精品久久精品久久 | 蜜桃综合网 | 色综合久久五月 | 岛国片在线免费观看 | 岛国av片| 国产黄色大全 | 亚洲一区二区三区四区在线观看 | 一个人免费在线观看视频 | 狠狠入 | 毛茸茸成熟亚洲人 | 亚洲一区二区在线观看视频 | 青草视频在线看 | 国产人伦精品一区二区三区 | 亚洲少妇xxx| 国产3p精品一区 | 亚洲风情亚aⅴ在线发布 | 欧美日韩高清免费 | 老女人做爰全过程免费的视频 | 国产在线超碰 | 人妻91麻豆一区二区三区 | 亚洲一区二区在线视频 | 欧美日韩二区三区 | 国产美女精品一区二区三区 | 欧美国产另类 | 午夜视频免费在线 | 69精品人妻一区二区三区 | 激情黄色小说视频 | 福利网址在线观看 | 强辱丰满人妻hd中文字幕 | 亚洲中文字幕无码专区 | 草莓视频在线观看18 | 免费不卡毛片 | 色播在线观看 | 亚洲专区视频 | 一区二区三区四区五区在线视频 | 亚欧洲精品 | 久久看毛片 | 亚洲无吗在线观看 | 欧美一级电影在线 | 亚洲天堂三级 | 懂爱av| 强开乳罩摸双乳吃奶羞羞www | 波多野42部无码喷潮 | 一区二区三区欧美 | 69精品视频 | 黄色岛国片 | 99热亚洲精品 | 综合久久久 | 美女隐私免费观看 | 动漫玉足吸乳羞免费网站玉足 | 久草资源站 | 色女人网站 | 视色网 | 日韩一二三四区 | 国产a∨精品一区二区三区仙踪林 | 婷婷丁香花五月天 | 激情三区| 永久看看免费大片 | 野外吮她的花蒂高h在线观看 | 久艹视频在线观看 | 中文字幕中文在线 |