思想解读:optee中的多线程处理
快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈
思考:
1、optee中到底是否支持多線程?
2、您想問的是optee os是否支持多線程? 還是optee環境中的TA或應用程序中是否支持多線程?
說明: 這里需要明確一點: 你看到的官方文檔中也不一定對。
我們通常所說的多線程,一般是這樣產生的:
1、在kernel中,調用了kthead_create之類的函數,產線一個kernel線程
2、在某一個應用程序中,調用pthread_create之類的函數,產線了一個user線程
在這么的一個大系統通,也許只有8個core,但確運行著數十個或數百個線程,他們以task_struct結構體的形式表述。 然后再有內核的調度程序來選擇執行,從而達到了一個硬件分時復用的效果。
那么在optee中是怎樣的呢?
在optee中沒有創建kernel線程的接口、在TA和應用程序中也沒有創建user線程的接口,那么就意味著沒有多線程了嗎? 燃鵝,卻有著另外的一種形式,也是可以產線多線程,總結如下:
- optee中有一個threads[CFG_NUM_THREADS]變量,用于存放沒有處理完成的線程,變量類型為thread_ctx結構體(類似于linux kernel中的task_struct),暫且認為它也表示一個task吧
- 當一個用戶程序正在執行時,由于RPC或中斷返回到REE了,在返回之前會將該線程的信息保存到threads數組中, 這時就相當于創建了一個線程。
- 當cpu從REE調用到TEE時,TEE會先檢查是否還有未處理的線程,如果有則執行。 這就相當于線程的調度了。
總結:
1、optee os 沒有內核線程
2、TA 不支持多線程
3、一個應用程序看做一個任務( 這句話非常正確!!!),optee支持多任務,optee內部沒有調度程序,所以多個任務也是按照順序依次調用。對于一個cpu來說,它只有完全執行完了一個,它才會再調用另外一個。 注意:optee os是支持多核的,所以會出現多個任務被多個核調用的point,所以需要考慮并發。
總結
以上是生活随笔為你收集整理的思想解读:optee中的多线程处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CoreLink CCI-550的概念介
- 下一篇: 微信公众号开发(python+werob