91精品一区二区三区久久久久久_欧美一级特黄大片色_欧美一区二区人人喊爽_精品一区二区三区av

位置:51電子網 » 技術資料 » D S P

內核和進程調度

發布時間:2012/4/3 0:31:30 訪問次數:1259

    MantisOS使用了類似于UNIX的進程調度模式,提供基于NJM2902V(TE1)優先級的多線程調度和同一優先級中進行輪轉調度服務。它的運行時間片是可配置的,目前設置為lOms。MantisOS也支持互斥信號量和計數信號量。MantisOS在邏輯上把RAM分配成兩部分:一部分是在編譯時分配給全局變量的,另一部分以堆的形式管理。當系統創建一個新的線程時,內核就從堆中分配堆棧空間,當線程結束喇,空間又被歸還給堆。
    內核主要的全局數據結構是線程表,每個線程有一個條目。當線程表靜態分配后,擁有指定的最大線程數和指定大小的存儲單元。在編譯時,最大線程數是可以動態調整的(默認是12)。每個線程表條目是10B(包含一個當前棧指針、棧邊界信息(基本指針和大小)、指向線程開始函數的指針、目前線程狀態、當前線程的掛起狀態、線程優先級、線程的休眠時間、端口號(只用于網絡接收)和指向下一線程的指針)。線程有5種狀態:空閑、運行、就緒、阻塞、休眠。線程的阻塞狀態有兩種:阻塞空閑狀態和阻塞休眠狀態。MOS為線程設置了5種不同的優先級:內核級優先級、休眠級優先級、高優先級、正常級優先級、空閑優先級。當線程掛起時,線程的上下文環境(包括保存的寄存器值)存儲在它的棧中(這非常重要)因為線程的上下文環境比線程表條目要大得多,當線程分配時,它只需要存儲起來即可,所示線程表的靜態開銷炅有120B。
    內核還為每一個優先級別的線程保存表頭和表尾指針(默認為SB大小,總共20B),可方便快速增加和刪除。這樣一來,當操作線程鏈表時,可提高性能,因為這些操作很頻繁,并且時常與中斷一起發生。內核還包括一個2B大小的當前線程指針、1B大小的中斷狀態,1B大小的標志位。這樣,進程調度表總的靜態開銷大小是144B。
    MOS也可以使用信號量機制,應用程序可以根據自己的需要在程序中聲明。信號量是一個5B的結構,包含計數器字節(或稱為“鎖”)、頭指針、尾指針。在任何特定的時間中,任何一個線程要么屬于一個就緒列表,要么屬于信號量列表的。
    系統在以下情況會引發上下文環境的切換:調度器接收到一個來自硬件的定時器中斷、系統調用、信號量的操作。定時器中斷是唯一由內核處理的中斷——其他硬件中斷被直接發送到相關設備驅動中進行處理。設備驅動在接收到中斷后拋出一個信號量,用以激活一個等待線程,該線程處理導致該事件產生的中斷。
    除了驅動線程和用戶線程外,還有一個由內核在啟動時創建的idle線程,idle線程的優先級很低(只有其他線程阻塞時才運行)。idle線程可以檢測CPU的利用情形,并且調整內核參數以節約能量。
    MantisOS使用了類似于UNIX的進程調度模式,提供基于NJM2902V(TE1)優先級的多線程調度和同一優先級中進行輪轉調度服務。它的運行時間片是可配置的,目前設置為lOms。MantisOS也支持互斥信號量和計數信號量。MantisOS在邏輯上把RAM分配成兩部分:一部分是在編譯時分配給全局變量的,另一部分以堆的形式管理。當系統創建一個新的線程時,內核就從堆中分配堆棧空間,當線程結束喇,空間又被歸還給堆。
    內核主要的全局數據結構是線程表,每個線程有一個條目。當線程表靜態分配后,擁有指定的最大線程數和指定大小的存儲單元。在編譯時,最大線程數是可以動態調整的(默認是12)。每個線程表條目是10B(包含一個當前棧指針、棧邊界信息(基本指針和大小)、指向線程開始函數的指針、目前線程狀態、當前線程的掛起狀態、線程優先級、線程的休眠時間、端口號(只用于網絡接收)和指向下一線程的指針)。線程有5種狀態:空閑、運行、就緒、阻塞、休眠。線程的阻塞狀態有兩種:阻塞空閑狀態和阻塞休眠狀態。MOS為線程設置了5種不同的優先級:內核級優先級、休眠級優先級、高優先級、正常級優先級、空閑優先級。當線程掛起時,線程的上下文環境(包括保存的寄存器值)存儲在它的棧中(這非常重要)因為線程的上下文環境比線程表條目要大得多,當線程分配時,它只需要存儲起來即可,所示線程表的靜態開銷炅有120B。
    內核還為每一個優先級別的線程保存表頭和表尾指針(默認為SB大小,總共20B),可方便快速增加和刪除。這樣一來,當操作線程鏈表時,可提高性能,因為這些操作很頻繁,并且時常與中斷一起發生。內核還包括一個2B大小的當前線程指針、1B大小的中斷狀態,1B大小的標志位。這樣,進程調度表總的靜態開銷大小是144B。
    MOS也可以使用信號量機制,應用程序可以根據自己的需要在程序中聲明。信號量是一個5B的結構,包含計數器字節(或稱為“鎖”)、頭指針、尾指針。在任何特定的時間中,任何一個線程要么屬于一個就緒列表,要么屬于信號量列表的。
    系統在以下情況會引發上下文環境的切換:調度器接收到一個來自硬件的定時器中斷、系統調用、信號量的操作。定時器中斷是唯一由內核處理的中斷——其他硬件中斷被直接發送到相關設備驅動中進行處理。設備驅動在接收到中斷后拋出一個信號量,用以激活一個等待線程,該線程處理導致該事件產生的中斷。
    除了驅動線程和用戶線程外,還有一個由內核在啟動時創建的idle線程,idle線程的優先級很低(只有其他線程阻塞時才運行)。idle線程可以檢測CPU的利用情形,并且調整內核參數以節約能量。
相關技術資料
4-3內核和進程調度

熱門點擊

 

推薦技術資料

業余條件下PCM2702
    PGM2702采用SSOP28封裝,引腳小而密,EP3... [詳細]
版權所有:51dzw.COM
深圳服務熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網安備44030402000607
深圳市碧威特網絡技術有限公司
付款方式


 復制成功!
巴林右旗| 弋阳县| 泗洪县| 阳高县| 晋城| 门源| 曲水县| 元氏县| 富宁县| 宣恩县| 泰兴市| 普兰县| 海林市| 长寿区| 阳泉市| 东平县| 商丘市| 盐池县| 化隆| 庆元县| 芦山县| 海兴县| 嵊州市| 社旗县| 许昌市| 苍山县| 乌鲁木齐县| 新丰县| 仁化县| 宣武区| 南华县| 尉氏县| 抚顺县| 长春市| 广宁县| 大港区| 南岸区| 黄龙县| 福安市| 正宁县| 德化县|