原创 Xen調度分析-RT

  前言 RT      RealTime實時調度 CPU 單處理器芯片 pcpu    單處理器芯片中的一個核。 vcpu    Xen的基本調度單位,可理解爲進程。 預算    Xen的RT調度中預算指的是任務的剩餘運行時間

原创 GICv3-4零散的寄存器解讀(1)

ICC_SRE_EL3:控制EL3下選擇系統寄存器接口,或內存映射接口,作爲GIC CPU接口;(非正規表述就是對ICC_*/ICH*寄存器的訪問是通過寄存器接口還是內存映射接口,如果使用內存映射接口,則訪問寄存器會發生異常,並被本異常等

原创 定義指令流

程序嘛,簡單的定義以下就是一組指令序列,這個指令序列大多數並不是連續的(從被CPU"吸入"的第一個段指令開始(想象吸麪條的樣子)),假設我們寫一個程序,   main( ){ int i = 1; i++; i++; o

原创 CPU的自我控制之(6)-後記

——————————————————————補充——————————————————————   我把ARMv8-A指令集對異常的設計劃分爲指令、CPU狀態和機制三部分, 指令是編入指令流,在特定條件下能產生異常的指令; CPU狀態由寄存

原创 CPU的自我控制-異常之於syscall

本質上講,如果一個程序不使用任何庫、系統調用,所有代碼都是自包含的,它是可以直接在CPU上執行的,有疑問的話可以給我發郵件,我樂意受教。 於是問題就來了,一個用戶態的程序在調度到CPU上開始執行,這個程序的指令流是否可以爲所欲爲。 很明顯

原创 DRM中的思路

linux已經有過fbdev管理圖形適配器的FB,但是不能處理現代基於3D加速GPU的圖形硬件。3D加速設備一般需要設置、管理一個在其硬件內部內存的指令序列,然後分發指令。 DRM暴露有設備節點在/dev/dri/cardX,libdrm

原创 CPU的自我控制-異常之於虛擬化

很難說直接從第一頁開始閱讀分析完所有ARMv8-A指令集後,就能搞清楚虛擬化與ARMv8-A指令集的事情,畢竟老虎咬天也是無處下口。 不能廣度優先搜索,就得先搞搞深度優先了,於是就要找一個關鍵的點作爲入口,這個入口需要符合兩個要素: 1.

原创 CPU的自我控制之(5)-回頭路ELR_ELx 與 指示器ESR_ELx

——————————————————————異常第二步 準備活動——————————————————————   (下面一句爲了承上啓下,沒什麼卵用) SPSR搞好後,CPU狀態可以保障了,開始可以做一些準備活動了 把異常返回地址設好。

原创 我認爲微內核的意義(2)-分析zircon

 簡介 內核消息是一些不同類型的對象。這些對象可以直接通過syscall調用,並且這些對象是C++的類,由調度接口實現,位於kernel/object目錄。許多是自包含的高階對象,一些是包含低階的lk原語。 syscall 用戶空間代碼

原创 SMMUv3(2)

流的編號 做一次轉換需要地址、size以及相關屬性如讀/寫/安全域/非安全域/可共享性/可緩存性;如果超過1個client設備使用SMMU流量,那麼他們還要有StreamID來區分;StreamID在系統裏的構建傳送是具體實現決定的,邏輯

原创 平凡之路——關於代碼世界的構建 2018.5

(順帶說說編程語言) 這兩天在思考一個問題,爲什麼我們所應用的操作系統、內核都開源了,還細心地爲我們寫了技術文檔,鋪設好了開發環境,我們還在強調自有的操作系統。   或說:核心技術沒有掌握在自己手中,當別人(主要指美國吧?)不讓用時,就只

原创 思考做工業物聯網操作系統需要什麼 2018.10

 1.面向哪部分開發者 2.內核?還是系統? 3.內核組成, 爲物聯網,我們摘取其中?   小物聯網 1.CPU低速(MB) 2.小內存(KB) 3.小flash/rom(MB) 4.多驅動、多外設   1.有調度需求 2.要鎖 3.要

原创 我認爲微內核的意義(1)

 一直都在學習或分析與內核相關的東西,無論宏內核Linux或微內核,微內核的社羣(社區有點窄,羣體又不明確,社區羣體吧,就社羣了),一直想要在性能上超越Linux。從第一次微內核失敗開始,每隔一段時間就會有微內核要媲美Linux的聲音出現

原创 CPU的自我控制之(6)-結束

——————————————————————異常第四步 一些簡單的東西——————————————————————   給這麼個題目就是想說,這步驟的劃分其實是我捏造的,大概是這順序,但沒求證過!   簡單的東西不多 棧指針的選擇算是一個

原创 搞定了一個Xen中的小bug 2018.10.9

這兩天在Xen中起D0,很開心的遇到了surfaceflinger起不來的問題, 當然,說surfaceflinger起不來是因爲其他起不來的東西我都不認識, 比如SM什麼的。   這是一個很上層的錯誤了,由很底層的問題引起的。。。 於是