內(nèi)核和進(jìn)程調(diào)度
發(fā)布時間:2012/4/3 0:31:30 訪問次數(shù):1270
MantisOS使用了類似于UNIX的進(jìn)程調(diào)度模式,提供基于NJM2902V(TE1)優(yōu)先級的多線程調(diào)度和同一優(yōu)先級中進(jìn)行輪轉(zhuǎn)調(diào)度服務(wù)。它的運(yùn)行時間片是可配置的,目前設(shè)置為lOms。MantisOS也支持互斥信號量和計(jì)數(shù)信號量。MantisOS在邏輯上把RAM分配成兩部分:一部分是在編譯時分配給全局變量的,另一部分以堆的形式管理。當(dāng)系統(tǒng)創(chuàng)建一個新的線程時,內(nèi)核就從堆中分配堆?臻g,當(dāng)線程結(jié)束喇,空間又被歸還給堆。
內(nèi)核主要的全局?jǐn)?shù)據(jù)結(jié)構(gòu)是線程表,每個線程有一個條目。當(dāng)線程表靜態(tài)分配后,擁有指定的最大線程數(shù)和指定大小的存儲單元。在編譯時,最大線程數(shù)是可以動態(tài)調(diào)整的(默認(rèn)是12)。每個線程表?xiàng)l目是10B(包含一個當(dāng)前棧指針、棧邊界信息(基本指針和大小)、指向線程開始函數(shù)的指針、目前線程狀態(tài)、當(dāng)前線程的掛起狀態(tài)、線程優(yōu)先級、線程的休眠時間、端口號(只用于網(wǎng)絡(luò)接收)和指向下一線程的指針)。線程有5種狀態(tài):空閑、運(yùn)行、就緒、阻塞、休眠。線程的阻塞狀態(tài)有兩種:阻塞空閑狀態(tài)和阻塞休眠狀態(tài)。MOS為線程設(shè)置了5種不同的優(yōu)先級:內(nèi)核級優(yōu)先級、休眠級優(yōu)先級、高優(yōu)先級、正常級優(yōu)先級、空閑優(yōu)先級。當(dāng)線程掛起時,線程的上下文環(huán)境(包括保存的寄存器值)存儲在它的棧中(這非常重要)因?yàn)榫程的上下文環(huán)境比線程表?xiàng)l目要大得多,當(dāng)線程分配時,它只需要存儲起來即可,所示線程表的靜態(tài)開銷炅有120B。
內(nèi)核還為每一個優(yōu)先級別的線程保存表頭和表尾指針(默認(rèn)為SB大小,總共20B),可方便快速增加和刪除。這樣一來,當(dāng)操作線程鏈表時,可提高性能,因?yàn)檫@些操作很頻繁,并且時常與中斷一起發(fā)生。內(nèi)核還包括一個2B大小的當(dāng)前線程指針、1B大小的中斷狀態(tài),1B大小的標(biāo)志位。這樣,進(jìn)程調(diào)度表總的靜態(tài)開銷大小是144B。
MOS也可以使用信號量機(jī)制,應(yīng)用程序可以根據(jù)自己的需要在程序中聲明。信號量是一個5B的結(jié)構(gòu),包含計(jì)數(shù)器字節(jié)(或稱為“鎖”)、頭指針、尾指針。在任何特定的時間中,任何一個線程要么屬于一個就緒列表,要么屬于信號量列表的。
系統(tǒng)在以下情況會引發(fā)上下文環(huán)境的切換:調(diào)度器接收到一個來自硬件的定時器中斷、系統(tǒng)調(diào)用、信號量的操作。定時器中斷是唯一由內(nèi)核處理的中斷——其他硬件中斷被直接發(fā)送到相關(guān)設(shè)備驅(qū)動中進(jìn)行處理。設(shè)備驅(qū)動在接收到中斷后拋出一個信號量,用以激活一個等待線程,該線程處理導(dǎo)致該事件產(chǎn)生的中斷。
除了驅(qū)動線程和用戶線程外,還有一個由內(nèi)核在啟動時創(chuàng)建的idle線程,idle線程的優(yōu)先級很低(只有其他線程阻塞時才運(yùn)行)。idle線程可以檢測CPU的利用情形,并且調(diào)整內(nèi)核參數(shù)以節(jié)約能量。
內(nèi)核主要的全局?jǐn)?shù)據(jù)結(jié)構(gòu)是線程表,每個線程有一個條目。當(dāng)線程表靜態(tài)分配后,擁有指定的最大線程數(shù)和指定大小的存儲單元。在編譯時,最大線程數(shù)是可以動態(tài)調(diào)整的(默認(rèn)是12)。每個線程表?xiàng)l目是10B(包含一個當(dāng)前棧指針、棧邊界信息(基本指針和大小)、指向線程開始函數(shù)的指針、目前線程狀態(tài)、當(dāng)前線程的掛起狀態(tài)、線程優(yōu)先級、線程的休眠時間、端口號(只用于網(wǎng)絡(luò)接收)和指向下一線程的指針)。線程有5種狀態(tài):空閑、運(yùn)行、就緒、阻塞、休眠。線程的阻塞狀態(tài)有兩種:阻塞空閑狀態(tài)和阻塞休眠狀態(tài)。MOS為線程設(shè)置了5種不同的優(yōu)先級:內(nèi)核級優(yōu)先級、休眠級優(yōu)先級、高優(yōu)先級、正常級優(yōu)先級、空閑優(yōu)先級。當(dāng)線程掛起時,線程的上下文環(huán)境(包括保存的寄存器值)存儲在它的棧中(這非常重要)因?yàn)榫程的上下文環(huán)境比線程表?xiàng)l目要大得多,當(dāng)線程分配時,它只需要存儲起來即可,所示線程表的靜態(tài)開銷炅有120B。
內(nèi)核還為每一個優(yōu)先級別的線程保存表頭和表尾指針(默認(rèn)為SB大小,總共20B),可方便快速增加和刪除。這樣一來,當(dāng)操作線程鏈表時,可提高性能,因?yàn)檫@些操作很頻繁,并且時常與中斷一起發(fā)生。內(nèi)核還包括一個2B大小的當(dāng)前線程指針、1B大小的中斷狀態(tài),1B大小的標(biāo)志位。這樣,進(jìn)程調(diào)度表總的靜態(tài)開銷大小是144B。
MOS也可以使用信號量機(jī)制,應(yīng)用程序可以根據(jù)自己的需要在程序中聲明。信號量是一個5B的結(jié)構(gòu),包含計(jì)數(shù)器字節(jié)(或稱為“鎖”)、頭指針、尾指針。在任何特定的時間中,任何一個線程要么屬于一個就緒列表,要么屬于信號量列表的。
系統(tǒng)在以下情況會引發(fā)上下文環(huán)境的切換:調(diào)度器接收到一個來自硬件的定時器中斷、系統(tǒng)調(diào)用、信號量的操作。定時器中斷是唯一由內(nèi)核處理的中斷——其他硬件中斷被直接發(fā)送到相關(guān)設(shè)備驅(qū)動中進(jìn)行處理。設(shè)備驅(qū)動在接收到中斷后拋出一個信號量,用以激活一個等待線程,該線程處理導(dǎo)致該事件產(chǎn)生的中斷。
除了驅(qū)動線程和用戶線程外,還有一個由內(nèi)核在啟動時創(chuàng)建的idle線程,idle線程的優(yōu)先級很低(只有其他線程阻塞時才運(yùn)行)。idle線程可以檢測CPU的利用情形,并且調(diào)整內(nèi)核參數(shù)以節(jié)約能量。
MantisOS使用了類似于UNIX的進(jìn)程調(diào)度模式,提供基于NJM2902V(TE1)優(yōu)先級的多線程調(diào)度和同一優(yōu)先級中進(jìn)行輪轉(zhuǎn)調(diào)度服務(wù)。它的運(yùn)行時間片是可配置的,目前設(shè)置為lOms。MantisOS也支持互斥信號量和計(jì)數(shù)信號量。MantisOS在邏輯上把RAM分配成兩部分:一部分是在編譯時分配給全局變量的,另一部分以堆的形式管理。當(dāng)系統(tǒng)創(chuàng)建一個新的線程時,內(nèi)核就從堆中分配堆棧空間,當(dāng)線程結(jié)束喇,空間又被歸還給堆。
內(nèi)核主要的全局?jǐn)?shù)據(jù)結(jié)構(gòu)是線程表,每個線程有一個條目。當(dāng)線程表靜態(tài)分配后,擁有指定的最大線程數(shù)和指定大小的存儲單元。在編譯時,最大線程數(shù)是可以動態(tài)調(diào)整的(默認(rèn)是12)。每個線程表?xiàng)l目是10B(包含一個當(dāng)前棧指針、棧邊界信息(基本指針和大。⒅赶蚓程開始函數(shù)的指針、目前線程狀態(tài)、當(dāng)前線程的掛起狀態(tài)、線程優(yōu)先級、線程的休眠時間、端口號(只用于網(wǎng)絡(luò)接收)和指向下一線程的指針)。線程有5種狀態(tài):空閑、運(yùn)行、就緒、阻塞、休眠。線程的阻塞狀態(tài)有兩種:阻塞空閑狀態(tài)和阻塞休眠狀態(tài)。MOS為線程設(shè)置了5種不同的優(yōu)先級:內(nèi)核級優(yōu)先級、休眠級優(yōu)先級、高優(yōu)先級、正常級優(yōu)先級、空閑優(yōu)先級。當(dāng)線程掛起時,線程的上下文環(huán)境(包括保存的寄存器值)存儲在它的棧中(這非常重要)因?yàn)榫程的上下文環(huán)境比線程表?xiàng)l目要大得多,當(dāng)線程分配時,它只需要存儲起來即可,所示線程表的靜態(tài)開銷炅有120B。
內(nèi)核還為每一個優(yōu)先級別的線程保存表頭和表尾指針(默認(rèn)為SB大小,總共20B),可方便快速增加和刪除。這樣一來,當(dāng)操作線程鏈表時,可提高性能,因?yàn)檫@些操作很頻繁,并且時常與中斷一起發(fā)生。內(nèi)核還包括一個2B大小的當(dāng)前線程指針、1B大小的中斷狀態(tài),1B大小的標(biāo)志位。這樣,進(jìn)程調(diào)度表總的靜態(tài)開銷大小是144B。
MOS也可以使用信號量機(jī)制,應(yīng)用程序可以根據(jù)自己的需要在程序中聲明。信號量是一個5B的結(jié)構(gòu),包含計(jì)數(shù)器字節(jié)(或稱為“鎖”)、頭指針、尾指針。在任何特定的時間中,任何一個線程要么屬于一個就緒列表,要么屬于信號量列表的。
系統(tǒng)在以下情況會引發(fā)上下文環(huán)境的切換:調(diào)度器接收到一個來自硬件的定時器中斷、系統(tǒng)調(diào)用、信號量的操作。定時器中斷是唯一由內(nèi)核處理的中斷——其他硬件中斷被直接發(fā)送到相關(guān)設(shè)備驅(qū)動中進(jìn)行處理。設(shè)備驅(qū)動在接收到中斷后拋出一個信號量,用以激活一個等待線程,該線程處理導(dǎo)致該事件產(chǎn)生的中斷。
除了驅(qū)動線程和用戶線程外,還有一個由內(nèi)核在啟動時創(chuàng)建的idle線程,idle線程的優(yōu)先級很低(只有其他線程阻塞時才運(yùn)行)。idle線程可以檢測CPU的利用情形,并且調(diào)整內(nèi)核參數(shù)以節(jié)約能量。
內(nèi)核主要的全局?jǐn)?shù)據(jù)結(jié)構(gòu)是線程表,每個線程有一個條目。當(dāng)線程表靜態(tài)分配后,擁有指定的最大線程數(shù)和指定大小的存儲單元。在編譯時,最大線程數(shù)是可以動態(tài)調(diào)整的(默認(rèn)是12)。每個線程表?xiàng)l目是10B(包含一個當(dāng)前棧指針、棧邊界信息(基本指針和大。⒅赶蚓程開始函數(shù)的指針、目前線程狀態(tài)、當(dāng)前線程的掛起狀態(tài)、線程優(yōu)先級、線程的休眠時間、端口號(只用于網(wǎng)絡(luò)接收)和指向下一線程的指針)。線程有5種狀態(tài):空閑、運(yùn)行、就緒、阻塞、休眠。線程的阻塞狀態(tài)有兩種:阻塞空閑狀態(tài)和阻塞休眠狀態(tài)。MOS為線程設(shè)置了5種不同的優(yōu)先級:內(nèi)核級優(yōu)先級、休眠級優(yōu)先級、高優(yōu)先級、正常級優(yōu)先級、空閑優(yōu)先級。當(dāng)線程掛起時,線程的上下文環(huán)境(包括保存的寄存器值)存儲在它的棧中(這非常重要)因?yàn)榫程的上下文環(huán)境比線程表?xiàng)l目要大得多,當(dāng)線程分配時,它只需要存儲起來即可,所示線程表的靜態(tài)開銷炅有120B。
內(nèi)核還為每一個優(yōu)先級別的線程保存表頭和表尾指針(默認(rèn)為SB大小,總共20B),可方便快速增加和刪除。這樣一來,當(dāng)操作線程鏈表時,可提高性能,因?yàn)檫@些操作很頻繁,并且時常與中斷一起發(fā)生。內(nèi)核還包括一個2B大小的當(dāng)前線程指針、1B大小的中斷狀態(tài),1B大小的標(biāo)志位。這樣,進(jìn)程調(diào)度表總的靜態(tài)開銷大小是144B。
MOS也可以使用信號量機(jī)制,應(yīng)用程序可以根據(jù)自己的需要在程序中聲明。信號量是一個5B的結(jié)構(gòu),包含計(jì)數(shù)器字節(jié)(或稱為“鎖”)、頭指針、尾指針。在任何特定的時間中,任何一個線程要么屬于一個就緒列表,要么屬于信號量列表的。
系統(tǒng)在以下情況會引發(fā)上下文環(huán)境的切換:調(diào)度器接收到一個來自硬件的定時器中斷、系統(tǒng)調(diào)用、信號量的操作。定時器中斷是唯一由內(nèi)核處理的中斷——其他硬件中斷被直接發(fā)送到相關(guān)設(shè)備驅(qū)動中進(jìn)行處理。設(shè)備驅(qū)動在接收到中斷后拋出一個信號量,用以激活一個等待線程,該線程處理導(dǎo)致該事件產(chǎn)生的中斷。
除了驅(qū)動線程和用戶線程外,還有一個由內(nèi)核在啟動時創(chuàng)建的idle線程,idle線程的優(yōu)先級很低(只有其他線程阻塞時才運(yùn)行)。idle線程可以檢測CPU的利用情形,并且調(diào)整內(nèi)核參數(shù)以節(jié)約能量。
熱門點(diǎn)擊
- T-MAC協(xié)議
- TRAMA協(xié)議
- S-MAC協(xié)議
- 互鎖電路
- 共模輸入電壓范圍
- SPIN路由協(xié)議
- 電磁繼電器的結(jié)構(gòu)和工作原理
- 耳機(jī)檢測
- Sift協(xié)議
- LTS協(xié)議
推薦技術(shù)資料
- 業(yè)余條件下PCM2702
- PGM2702采用SSOP28封裝,引腳小而密,EP3... [詳細(xì)]
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究