




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
5.1.1LiteOS-A內核簡介通過本節學習,您可以:了解LiteOS-A內核簡介LiteOS-A內核簡介LiteOS-A適配的系統及設備類型:小型系統(smallsystem)面向應用處理器例如ArmCortex-A的設備,支持的設備最小內存為1MB,可以提供更高的安全能力、標準的圖形框架、視頻編解碼的多媒體能力。可支撐的產品如智能家居領域的IPCamera、電子貓眼、路由器以及智慧出行域的行車記錄儀等。LiteOS-A要求設備具備一定的處理能力,對比LiteOS-M,LiteOS-A支持以下特性:(1)MMU支持:通過MMU支持內核態和用戶態分離,支持虛擬單元;(2)支持獨立進程:調度對象分別為進程、線程;(3)支持文件系統:包括虛擬文件和塊設備等;(4)支持更復雜的IPC:包括LiteIPC等;(5)支持多核調度:支持雙核MCU,支持雙核調度;(6)支持POSIX3接口:為APP開發提供更多幫助。LiteOS-A內核簡介LiteOS-A的源碼目錄:關鍵目錄:arch:存放了arm架構相關的代碼,以及中斷管理相關代碼compat:POSIX標準目的是為了提供源碼級的軟件可移植性。一個系統提供了POSIX接口,則任何其它的系統可以通過POSIX調用該系統drivers:內核驅動代碼,分別對應塊設備驅動、字符設備驅動、內存設備驅動LiteOS-A內核簡介關鍵目錄:kernel:base:基礎內核,進程管理、內存管理、內核通信機制、時間管理、軟件定時器等模塊。include:內核相關模塊頭文件。LiteOS-A的源碼目錄:謝謝5.1.2LiteOS-A內核架構通過本節學習,您可以:了解LiteOS-A內核架構LiteOS-A內核架構LiteOS-A內核分為內核空間和用戶空間,如圖所示。LiteOS-A內核架構(1)基礎內核:進程管理:支持進程和線程,采用了高優先級優先加同優先級時間片輪轉的搶占式調度機制。內存管理:對物理內存和虛擬內存分別進行管理。中斷異常:對中斷的異常處理。時間管理:對操作系統時間進行管理,提供給應用程序所有和時間有關的服務。通信機制:包括事件、信號量、互斥鎖、消息隊列、信號等。1.
內核空間LiteOS-A內核架構(2)擴展組件:主要包括文件系統、網絡協議、權限管理、動態加載、調測工具等。文件系統:輕量級內核支持FAT,JFFS2,NFS,ramfs,procfs等眾多文件系統,并對外提供完整的POSIX標準的操作接口;內部使用VFS(VirtualFileSystems,虛擬文件系統)層作為統一的適配層框架,方便移植新的文件系統,各個文件系統也能自動利用VFS層提供的豐富的功能。LiteOS-A內核架構網絡協議:網絡協議基于開源LWIP(LightWeightIP協議)構建。支持多種協議:IP、ICMP、ND、MLD、UDP、TCP、IGMP、ARP、PPP支持的API:socketAPI網絡協議的擴展特性:多網絡接口IP轉發、TCP擁塞控制、RTT估計和快速恢復、快速重傳。支持多種應用程序LiteOS-A內核架構支持的協議:IP協議:包括IPV4和IPV6,支持IP分片于重裝,支持多網絡接口下數據包轉發。ICMP協議:用于網絡調試維護。ND(NeighborDiscovery)協議:IP6鄰居發現協議。MLD協議:組播偵聽發現協議,于IPv6組播中組成員管理。UDP協議:用戶數據包協議。TCP:支持TCP擁塞控制,RTT估計,快恢復和重傳等。IGMP:用于網絡組管理,可以實現多播數據的接收。ARP協議:地址解析協議。PPP協議:包括PPPoS(串口點對點協議)、PPPoE(以太網上的點對點協議)。LiteOS-A內核架構適用的應用程序:HTTP(S)服務SNTP客戶端SMTP(S)客戶端ping工具NetBIOS名稱服務mDNS響應程序MQTT客戶端TFTP服務DHCP客戶端DNS客戶端AutoIP/APIPA(零配置)SNMP代理LiteOS-A內核架構(3)HDF框架HDF框架是外設驅動統一標準框架,提供了GPIO、SDIO、I2C、USB、WLAN等各種外設接口方式。HDF框架特性:支持多內核平臺。支持用戶態驅動。可配置組件化驅動模型。基于消息的驅動接口模型。基于對象的驅動、設備管理。HDI(HardwareDriverInterface)統一硬件接口。支持電源管理、PnP(Plug-and-Play,即插即用)。LiteOS-A內核架構LiteOS-A內核架構的頂部是用戶空間,用戶空間主要是用戶進程和POSIX接口組成。OpenHarmony內核使用musllibc庫,支持標準POSIX接口,開發者可基于POSIX標準接口開發內核之上的組件及應用。2.用戶空間謝謝5.1.3LiteOS-A內核態啟動流程通過本節學習,您可以:了解LiteOS-A內核態啟動流程LiteOS-A內核態啟動流程內核啟動流程如圖所示。LiteOS-A內核態啟動流程內核啟動流程包含匯編啟動階段和C語言啟動階段兩部分。匯編啟動階段完成CPU初始設置,關閉dcache/icache與MMU,使能FPU及neon,設置MMU建立虛實地址映射,設置系統棧,清理bss段,調用C語言main函數等。C語言啟動階段包含OsMain函數及開始調度等。LiteOS-A內核態啟動流程OsMain函數用于內核基礎初始化和架構、板級初始化等,其整體由內核啟動框架主導初始化流程,如圖所示。LiteOS-A內核態啟動流程①LOS_INIT_LEVEL_EARLIEST:最早期初始化。不依賴架構,單板以及后續模塊會對其有依賴的純軟件模塊初始,例如:內核Trace模塊初始化。②LOS_INIT_LEVEL_ARCH_EARLY:架構早期初始化。與架構相關,后續模塊會對其有依賴的模塊初始化,如啟動過程中非必需的功能,建議放到⑥LOS_INIT_LEVEL_ARCH層。LiteOS-A內核態啟動流程③LOS_INIT_LEVEL_PLATFORM_EARLY:平臺早期初始化。與單板平臺、驅動相關,后續模塊會對其有依賴的模塊初始化,如啟動過程中必需的功能,建議放到⑦LOS_INIT_LEVEL_PLATFORM層。④LOS_INIT_LEVEL_KMOD_PREVM:內存初始化前的內核模塊初始化。在內存初始化之前需要使能的模塊初始化。LiteOS-A內核態啟動流程⑤LOS_INIT_LEVEL_VM_COMPLETE:基礎內存就緒后的初始化。此時內存初始化完畢,需要進行使能且不依賴進程間通訊機制與系統進程的模塊初始化。⑥LOS_INIT_LEVEL_ARCH:架構后期初始化。與架構拓展功能相關,后續模塊會對其有依賴的模塊初始化。LiteOS-A內核態啟動流程⑦LOS_INIT_LEVEL_PLATFORM:平臺后期初始化。單板平臺、驅動相關,后續模塊會對其有依賴的模塊初始化,例如:驅動內核抽象層初始化(mmc、mtd)。⑧LOS_INIT_LEVEL_KMOD_BASIC:內核基礎模塊初始化。內核可拆卸的基礎模塊初始化。例如:VFS初始化。LiteOS-A內核態啟動流程⑨LOS_INIT_LEVEL_KMOD_EXTENDED:內核擴展模塊初始化。內核可拆卸的擴展模塊初始化。例如:系統調用初始化、ProcFS初始化、Futex初始化、HiLog初始化、LiteIPC初始化。⑩LOS_INIT_LEVEL_KMOD_TASK:內核任務創建。進行內核任務的創建(內核任務,軟件定時器任務)。例如:資源回收系統常駐任務的創建、SystemInit任務創建、CPU占用率統計任務創建等。謝謝5.1.4LiteOS-A用戶態啟動流程通過本節學習,您可以:了解LiteOS-A用戶態啟動流程LiteOS-A用戶態啟動流程用戶態啟動是從根進程開始的。根進程是系統的第一個用戶態進程,進程ID為1。用戶態啟動進程樹如圖所示。1號進程接下來會創建和啟動其他的用戶態進程例如/bin/shell。LiteOS-A用戶態啟動流程鴻蒙中的init進程作用類似于Linux中的init進程,主要作用是完成系統啟動后,用戶可以操作前的一些初始化操作,例如孵化一些用戶的服務,創建一些必要的文件目錄結構等。Init進程是由SysemInit()函數來啟動的,SystemInit()函數代碼如下所示:
SystemInit()
ProcFsInit();
mem_dev_register();
imx6ull_driver_init();
imx6ull_mount_rootfs();
DeviceManagerStart();//HDF,加載驅動,使外設可以正常工作。
uart_dev_init();
......
OsUserInitProcess();LiteOS-A用戶態啟動流程在SystemInit()函數中,通過OsUserInitProcess()啟動init進程,具體是通過OsUserInitProcessStart()函數來實現的。OsUserInitProcessStart()函數的代碼如下:
STATICUINT32OsUserInitProcessStart(UINT32processID,TSK_INIT_PARAM_S*param)
{
UINT32intSave;
INT32taskID;
INT32ret;
taskID=OsCreateUserTask(processID,param);
if(taskID<0){
returnLOS_NOK;
}
ret=LOS_SetTaskScheduler(taskID,LOS_SCHED_RR,OS_TASK_PRIORITY_LOWEST);
if(ret<0){
PRINT_ERR("Userinitprocesssetschedulerfailed!ERROR:%d\n",ret);
SCHEDULER_LOCK(intSave);
(VOID)OsTaskDeleteUnsafe(OS_TCB_FROM_TID(taskID),OS_PRO_EXIT_OK,intSave);
return-ret;
}
returnLOS_OK;
}謝謝5.2.1中斷與異常處理的概念和機制通過本節學習,您可以:了解中斷與異常處理的概念和機制中斷與異常處理的概念中斷異常處理是操作系統對運行期間發生的異常情況(芯片硬件異常)進行處理的一系列動作,例如虛擬內存缺頁異常、打印異常發生時函數的調用棧信息、CPU現場信息、任務的堆棧情況等。異常指可以打斷CPU正常運行流程的一些事情,如未定義指令異常、試圖修改只讀的數據異常、不對齊的地址訪問異常等。中斷與異常處理機制LiteOS-A的中斷異常處理流程:外設可以在沒有CPU介入的情況下完成一定的工作,但某些情況下也需要CPU為其執行一定的工作。當外設需要CPU時,將產生一個中斷信號,該信號連接至中斷控制器。中斷控制器是一方面接收其它外設中斷引腳的輸入,另一方面它會發出中斷信號給CPU。可以通過對中斷控制器編程來打開和關閉中斷源、設置中斷源的優先級和觸發方式。CPU收到中斷控制器發送的中斷信號后,中斷當前任務來響應中斷請求。當異常發生時,CPU暫停當前的程序,先處理異常事件,然后再繼續執行被異常打斷的程序。中斷與異常處理機制常用的中斷控制器有VIC(VectorInterruptController,向量中斷控制器)和GIC(GeneralInterruptController,通用中斷控制器)。LiteOS-A內核支持的是ARM公司的Cortex-A/R系列的芯片,GIC是ARM公司給Cortex-A/R系列芯片提供的一個中斷控制器,類似Cortex-M中的NVIC。GIC控制器有4個版本V1-V4,V2版本是給ARMv7-A架構使用的,比如Cortex-A5,Cortex-A7、Cortex-A9、Cortex-A15等。中斷與異常處理機制當GIC控制器接收到外部中斷信號以后匯報給ARM內核,ARM內核提供了四個信號給GIC來匯報中斷情況:VFIQ、VIRQ、FIQ和IRQ,如圖所示。中斷與異常處理機制4個信號含義如下:VFIQ:虛擬快速FIQVIRQ:虛擬外部IRQFIQ:快速中斷IRQIRQ:外部中斷IRQGIC控制器接收眾多的外部中斷,并對其進行處理,最終通過四個信號報給ARM內核。中斷與異常處理的概念和機制LiteOS-A當前支持ARMv7-a指令集架構,以ARMv7-a架構為例,中斷和異常處理的入口為中斷向量表,中斷向量表包含各個中斷和異常處理的中斷向量,如表所示。中斷向量異常中斷名稱_exception_handlersresetvector復位osExceptUndeflnstrHd未定義的指令osExceptSwiHdl軟件中斷osExceptPrefetchAbortHdl預取指令中止osExceptDataAbortHdl數據訪問中止osExceptAddrAbortHd地址異常中止OslrqHandler外部中斷請求osExceptFiqHd快速中斷請求謝謝5.2.2中斷與異常處理接口與應用通過本節學習,您可以:了解中斷與異常處理接口說明與應用中斷與異常處理接口與應用OpenHarmonyLiteOS-A內核的中斷模塊提供的接口跟LiteOS-M基本相同,包括創建中斷、刪除中斷、打開和關閉中斷等接口,如表所示。1.
中斷與異常處理管理接口功能分類接口名描述創建中斷LOS_HwiCreate中斷創建,注冊中斷號、中斷觸發模式、中斷優先級、中斷處理程序。中斷被觸發時,會調用該中斷處理程序刪除中斷LOS_HwiDelete根據指定的中斷號,刪除中斷打開中斷LOS_IntUnLock打開當前處理器所有中斷響應關閉中斷LOS_IntLock關閉當前處理器所有中斷響應恢復中斷LOS_IntRestore與LOS_IntLock配套使用,恢復到使用LOS_IntLock關閉所有中斷之前的狀態中斷與異常處理接口與應用中斷管理的一般開發流程如下:(1)調用中斷創建接口LOS_HwiCreate創建中斷。(2)調用LOS_HwiDelete接口刪除指定中斷,此接口根據實際情況使用,判斷是否需要刪除中斷。2.中斷管理應用謝謝5.3.1進程管理通過本節學習,您可以:了解進程管理進程管理進程是系統資源管理的基本單元。OpenHarmonyLiteOS-A內核提供的進程模塊主要用于實現用戶態進程的隔離,不涉及內核態進程。進程模塊主要為用戶提供多個進程,實現了進程之間的切換和通信,幫助用戶管理業務程序流程。進程采用搶占式調度機制,采用高優先級優先加同優先級時間片輪轉的調度算法。進程一共有32個優先級(0-31),用戶進程可配置的優先級有22個(10-31),最高優先級為10,最低優先級為31。高優先級的進程可搶占低優先級進程,低優先級進程必須在高優先級進程阻塞或結束后才能得到調度。每一個用戶態進程均擁有自己獨立的進程空間,相互之間不可見,實現進程間隔離。用戶態根進程init由內核態創建,其它用戶態子進程均由init進程創建而來。1.
進程的概念進程管理進程有多種狀態,各狀態之間的關系如圖所示:2.進程狀態初始化(Init):進程正在被創建。就緒態(Ready):進程在就緒列表中,等待CPU調度。運行態(Running):進程正在運行。阻塞態(Pending):進程被阻塞掛起。本進程內所有的線程均被阻塞時,進程被阻塞掛起。僵尸態(Zombies):進程運行結束,等待父進程回收其控制塊資源。進程管理初始化→就緒態:進程創建或fork時,拿到對應進程控制塊后進入Init狀態,即進程初始化階段,當該階段完成后進程將被插入調度隊列,此時進程進入就緒狀態。就緒態→運行態:發生進程切換時,就緒列表中優先級最高且獲得時間片的進程被執行,從而進入運行態。若此時該進程中已無其它線程處于就緒態,則進程從就緒列表刪除,只處于運行態;若此時該進程中還有其它線程處于就緒態,則該進程依舊在就緒隊列,此時進程的就緒態和運行態共存,但對外呈現的進程狀態為運行態。
初始化就緒態阻塞態運行態僵尸態進程管理運行態→阻塞態:進程在最后一個線程轉為阻塞態時,進程內所有的線程均處于阻塞態,此時進程同步進入阻塞態,然后發生進程切換。阻塞態→就緒態:阻塞進程內的任意線程恢復就緒態時,進程被加入到就緒隊列,同步轉為就緒態。就緒態→阻塞態:進程內的最后一個就緒態線程轉為阻塞態時,進程從就緒列表中刪除,進程由就緒態轉為阻塞態。
初始化就緒態阻塞態運行態僵尸態進程管理運行態→就緒態:有更高優先級的進程創建或者恢復后,會發生進程調度,此刻就緒列表中最高優先級進程變為運行態,那么原先運行的進程由運行態變為就緒態。若進程的調度策略為LOS_SCHED_RR(時間片輪轉),且存在同一優先級的另一個進程處于就緒態,則該進程的時間片消耗光之后,該進程由運行態轉為就緒態,另一個同優先級的進程由就緒態轉為運行態。
初始化就緒態阻塞態運行態僵尸態進程管理運行態→僵尸態:當進程的主線程或所有線程運行結束后,進程由運行態轉為僵尸態,等待父進程回收資源。
初始化就緒態阻塞態運行態僵尸態進程管理進程管理主要是合理的分配各個進程使用CPU的時間。用戶態進程由Init進程分解而來,如圖所示。fork進程時會將父進程的進程虛擬內存空間克隆到子進程,子進程實際運行時通過寫時復制機制將父進程的內容按需復制到子進程的虛擬內存空間。3.進程運行機制用戶態進程
多線程用戶態進程
多線程Init進程
多線程進程管理OpenHarmonyLiteOS-A內核的進程管理模塊提供了進程組、用戶組、進程創建等接口。4.進程接口功能分類接口名接口描述獲取進程IDLOS_GetCurrProcessID獲取當前進程的進程ID進程組LOS_GetProcessGroupID獲取指定進程的進程組IDLOS_GetCurrProcessGroupID獲取當前進程的進程組ID用戶及用戶組LOS_GetUserID獲取當前進程的用戶IDLOS_GetGroupID獲取當前進程的用戶組IDLOS_CheckInGroups檢查指定用戶組ID是否在當前進程的用戶組內進程管理功能分類接口名接口描述進度調度參數控制LOS_GetProcessScheduler獲取指定進程的調度策略LOS_SetProcessScheduler設置指定進程的調度參數,包括優先級和調度策略LOS_SetProcessPriority設置進程優先級LOS_GetProcessPriority獲取進程優先級系統支持的最大進程數LOS_GetSystemProcessMaximum獲取系統支持的最大進程數目LOS_GetUsedPIDList獲得已使用的進程ID列表進程管理功能分類接口名接口描述創建進程LOS_Fork創建子進程等待進程LOS_Wait等待子進程結束并回收子進程LOS_Waitid等待相應ID的進程結束退出進程LOS_Exit退出進程謝謝5.3.2任務管理通過本節學習,您可以:了解任務管理任務管理從系統的角度看,任務Task是競爭系統資源的最小運行單元。任務可以使用或等待CPU、使用內存空間等系統資源,并獨立于其它任務運行。OpenHarmony內核中使用一個任務表示一個線程。OpenHarmony內核中同優先級進程內的任務統一調度、運行。OpenHarmony內核中的任務采用搶占式調度機制,同時支持時間片輪轉調度和FIFO調度方式。內核的任務一共有32個優先級(0-31),最高優先級為0,最低優先級為31。當前進程內,高優先級的任務可搶占低優先級任務,低優先級任務必須在高優先級任務阻塞或結束后才能得到調度。1.
任務管理概念任務管理任務的各狀態如圖所示:
初始化就緒態阻塞態運行態退出初始化(Init):任務正在被創建。就緒態(Ready):任務在就緒隊列中,等待CPU調度。運行態(Running):任務正在運行。阻塞態(Blocked):任務被阻塞掛起。Blocked狀態包括:pending(因為鎖、事件、信號量等阻塞)、suspended(主動pend)、delay(延時阻塞)、pendtime(因為鎖、事件、信號量時間等超時等待)。退出態(Exit):任務運行結束,等待父任務回收其控制塊資源。任務管理初始化→就緒態:任務創建拿到控制塊后為初始化階段(Init狀態),當任務初始化完成將任務插入調度隊列,此時任務進入就緒狀態。就緒態→運行態:任務創建后進入就緒態,發生任務切換時,就緒隊列中最高優先級的任務被執行,從而進入運行態,此刻該任務從就緒隊列中刪除。
初始化就緒態阻塞態運行態退出任務管理運行態→阻塞態:正在運行的任務發生阻塞(掛起、延時、讀信號量等)時,任務狀態由運行態變成阻塞態,然后發生任務切換,運行就緒隊列中剩余最高優先級任務。阻塞態→就緒態:阻塞的任務被恢復后(任務恢復、延時時間超時、讀信號量超時或讀到信號量等),此時被恢復的任務會被加入就緒隊列,從而由阻塞態變成就緒態。
初始化就緒態阻塞態運行態退出任務管理就緒態→阻塞態:任務也有可能在就緒態時被阻塞(掛起),此時任務狀態會由就緒態轉變為阻塞態,該任務從就緒隊列中刪除,不會參與任務調度,直到該任務被恢復。運行態→就緒態:有更高優先級任務創建或者恢復后,會發生任務調度,此刻就緒隊列中最高優先級任務變為運行態,那么原先運行的任務由運行態變為就緒態,并加入就緒隊列中。
初始化就緒態阻塞態運行態退出任務管理運行態→退出態:運行中的任務運行結束,任務狀態由運行態變為退出態。
初始化就緒態阻塞態運行態退出任務管理OpenHarmonyLiteOS-A內核的任務管理模塊提供了創建任務、刪除任務、控制任務狀態、獲取任務信息等幾種功能,具體如表所示。2.任務管理接口功能分類接口名接口描述任務的創建和刪除
LOS_TaskCreate創建任務,若所創建任務的優先級比當前的運行的任務優先級高且任務調度沒有鎖定,則該任務將被調度進入運行態LOS_TaskCreateOnly創建任務并阻塞,任務恢復前不會將其加入就緒隊列中LOS_TaskDelete刪除指定的任務,回收其任務控制塊和任務棧所消耗的資源任務的狀態控制
LOS_TaskResume恢復掛起的任務LOS_TaskSuspend掛起指定的任務,該任務將從就緒任務隊列中移除LOS_TaskJoin阻塞當前任務,等待指定任務運行結束并回收其資源LOS_TaskDetach修改任務的joinable屬性為detach屬性,detach屬性的任務運行結束會自動回收任務控制塊資源LOS_TaskDelay延遲當前任務的執行,在延后指定的時間(tick數)后可以被調度LOS_TaskYield將當前任務從具有相同優先級的任務隊列,移動到就緒任務隊列的末尾任務管理功能分類接口名接口描述任務調度
LOS_TaskLock鎖定任務調度,阻止任務切換LOS_TaskUnlock解鎖任務調度。通過該接口可以使任務鎖數量減1,若任務多次加鎖,那么任務調度在鎖數量減為0時才會完全解鎖LOS_GetTaskScheduler獲取指定任務的調度策略LOS_SetTaskScheduler設置指定任務的調度參數,包括優先級和調度策略LOS_Schedule觸發主動的任務調度任務信息獲取
LOS_CurTaskIDGet獲取當前任務的IDLOS_TaskInfoGet獲取指定任務的信息LOS_GetSystemTaskMaximum獲取系統支持的最大任務數任務優先級
LOS_CurTaskPriSet設置當前正在運行的任務的優先級LOS_TaskPriSet設置指定任務的優先級LOS_TaskPriGet獲取指定任務的優先級任務綁核操作
LOS_TaskCpuAffiSet綁定指定任務到指定CPU上運行,僅在多核下使用LOS_TaskCpuAffiGet獲取指定任務的綁核信息,僅在多核下使用任務管理任務管理的一般開發流程如下:(1)通過LOS_TaskCreate創建一個任務。指定任務的執行入口函數指定任務名指定任務的棧大小指定任務的優先級(2)任務參與調度運行,執行用戶指定的業務代碼。(3)任務執行結束。3.任務管理應用謝謝5.3.3調度器通過本節學習,您可以:了解調度器調度器調度器(scheduler)是一個操作系統的核心部分,是CPU時間的管理員,負責選擇最適合的就緒進程來執行。1.
調度器概念周期性調度器CPU上下文切換主調度器選擇進程調度器類進程調度器主要完成兩件事:選擇某些就緒進程來執行。打斷某些執行的進程讓他們變為就緒態調度器主調度器:通過調用schedule()函數來完成進程的選擇和切換。周期性調度器:根據頻率自動調用scheduler_tick函數,根據進程運行時間觸發調度。上下文切換:主要做兩個事情,切換地址空間、切換寄存器和棧空間。調度器類:每個調度器都有一個優先級,它會按照優先級順序遍歷調度類,擁有一個可執行進程的最高優先級的調度器類勝出,去選擇下面要執行的那一個程序。周期性調度器CPU上下文切換主調度器選擇進程調度器類進程調度器2.調度器運行機制OpenHarmony在系統啟動內核初始化之后開始調度。系統根據進程和線程的優先級及線程的時間片消耗情況選擇最優的線程進行調度運行。線程一旦調度到就會從調度隊列上刪除,線程在運行過程中發生阻塞,會被加入到對應的阻塞隊列中并觸發一次調度,調度其它線程運行。如果調度隊列上沒有可以調度的線程,則系統就會選擇KIdle進程的線程進行調度運行。調度器OpenHarmonyLiteOS-A內核的調度器模塊提供了調度相關的接口。3.調度器
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 民國茶葉消費量與產量動態關系研究
- 內部濕度差異對硬化水泥漿體特性的影響研究
- 公共物品維護管理辦法
- 變頻器效率優化-洞察及研究
- 鞭毛狀微生物阪崎腸桿菌的乳粉檢測技術研究
- AI大模型在金融領域反欺詐中的應用研究與優化策略
- 安全生產事故應急預案范本2020年
- 安全 培訓 方案
- 煤礦安全生產法律法規匯編
- 宏定義風險評估-洞察及研究
- 2024年遼寧省高校畢業生“三支一扶”計劃考試真題
- 北京市大興區2025年初中學業水平考試地理真題(含答案)
- 第三代社保卡培訓
- 辦公室應聘題庫及答案
- 2025年河北中考地理真題含答案
- 鐵礦尾礦清運方案(3篇)
- 國開機考答案 管理學基礎2025-06-27
- 國家開放大學《思想道德與法治》社會實踐報告范文一
- 【9語安徽中考卷】2025年安徽省中考招生考試真題語文試卷(真題+答案)
- 2025年空氣過濾器行業分析報告
- 同等學力人員申請碩士學位電子科學與技術學科綜合水平全國統一考試大綱(第二版)
評論
0/150
提交評論