sel4 vspace指的是程序的虛擬位址空間。armv8 64位版本的sel4 對應的頁表劃分分為四級,分別是:pgd(page global directory)、pud(page upper directory)、pd(page directory)和pt(page table)。
pgdpgd結構體:
block pgde_pud
pgd cap結構體:
block page_global_directory_cap
pud
pud結構體:
block pude_pd
pud cap結構體:
block page_upper_directory_cap
pd結構體:
block pde_small
pd cap結構體:
block page_directory_cap
pte結構體:
block pte
page_table_cap結構體:
block page_table_cap
這裡以初始程序為例,初始程序的頁表建立過程大致分為三步:建立記憶體、建立對映、填充頁表項屬性。具體如下所示:
create_rootserver_objects函式
boot_code void
create_rootserver_objects
(pptr_t start, v_region_t v_reg, word_t extra_bi_size_bits)
create_it_address_space函式
92^9
29個pud表項;
為pud的對映關係表分配記憶體,其大小為4k,包含了2
92^9
29為pd的對映關係表分配記憶體,其大小為4k,包含了2
92^9
29為pt的對映關係表分配記憶體,其大小為4k,包含了2
92^9
29
boot_code cap_t create_it_address_space
(cap_t root_cnode_cap, v_region_t it_v_reg)
}/* create any pds needed for the user land image */
for(vptr =
round_down
(it_v_reg.start, pud_index_offset)
; vptr < it_v_reg.end;
vptr +
=bit
(pud_index_offset))}
/* create any pts needed for the user land image */
for(vptr =
round_down
(it_v_reg.start, pd_index_offset)
; vptr < it_v_reg.end;
vptr +
=bit
(pd_index_offset))}
slot_pos_after = ndks_boot.slot_pos_cur;
ndks_boot.bi_frame->userimagepaging =
(sel4_slotregion)
;return vspace_cap;
}
最後由函式create_frames_of_region填充頁表的頁表項,具體可以參看pt的結構體;
取虛擬位址高九位結合ttbr_elx暫存器找到pgd的首位址;
再取虛擬位址九位得到pgde,裡面包含pud的首位址;
再取九位得到pude,裡面包含pd的首位址;
再取九位得到pde,裡面包含pt的首位址;
剩餘的低十二位為頁內位址。
sel4原始碼解析(一) - sel4核心物件
sel4原始碼解析(二) - cspace
sel4原始碼解析(三) - sel4系統呼叫處理流程
sel4原始碼解析(四) - ipc
sel4原始碼解析(五) - notification
sel4原始碼解析(六) - 程序
sel4原始碼解析(七) - vspace
sel4原始碼解析(一) sel4核心物件
sel4是微核心,它只提供了少數供使用者程式使用的機制。不像linux核心提供了大量的服務。本文主要介紹sel4提供的七個核心物件,著重講述了untyped這一核心物件。sel4提供了七個核心物件,這七個核心物件構成了乙個程序基本執行環境。它們分別是 sel4 untyped表示為一塊連續未分配的物...
Celery 原始碼解析七 Worker 之間的互動
序列文章 前面對於 celery 的分布式處理已經做了一些介紹,例如第五章的遠端控制和第六章的event機制,但是,我認為這些分布式都比較簡單,並沒有體現出多例項之間的協同作用,所以,今天就來點更加複雜的,對於多例項直接的互動更多,這就是 gossip 和 mingle。在 celery 的介紹中,...
dubbo原始碼解析 spi 4
aop是老生常談的話題了,思想都不會是一蹴而就的.比如架構設計從all in one到soa也是乙個逐步演進的過程,所以本篇也講講這個aop的思想演進過程.假如我們就以aop最常用的場景事務來說,我們最初的做法是怎麼樣的?public class employeeserviceimpl implem...