Xen基本機制和策略

2021-06-10 11:54:42 字數 1233 閱讀 4680

一.啟動頁和共享頁

啟動頁:由xen對映到guestos記憶體空間的乙個頁面,包括核心啟動所需的所有資訊。

頁框位址,首個載入模組的位址,記憶體頁面數等資訊。

vcpu狀態(是否有未處理的事件),guest os狀態,xen的事件通道。

二.hypercall

1.利用int0x82陷阱。hypercall呼叫號,hypercall table。

xen3.0之前,直接利用以上資訊完成hypercall。

xen3.0以後,利用 封裝例程 + 超級呼叫頁。

2.封裝例程(根據呼叫號(名字),在超級呼叫頁中找到正確的位置,call它 == int 0x82陷阱)

超級呼叫頁是xen為guest os準備的乙個頁 ==> 可以做到不同guestos有不同的超級呼叫頁內容。

3.hypercall只能有kernel呼叫。user使用的流程是:

user --> ioctl() -->根據不同的引數,找到不同的privcmd --> privcmd -->hypercall --> xen

privcmd是乙個核心驅動,以特殊檔案的形式掛在/proc檔案下。

4.xen提供了一些lib給user使用,lib提供具體的應用(例如create domain),

但內部還是要去呼叫do_privcmd,去發行37個hypercall中的乙個。

三.事件通道

傳送發和接收方先繫結。

乙個事件通道 = local port ---link---remote port

傳送訊息 = 通過本地port找到reomteport,置remote port的pending位為1.

四.grant table + xenstore + ring data structure(local in sharedmemory pages)

fe--mitializes--> memory page with a ring datastructrue

--export it via grant table--> store intoxenstore

be --retrive it fromxenstore--> map it into its own address space

fe -->read/write from/into it <-- be

fe -->event_channel <-- be

五.疑問

1.nex中有xend嗎?

沒有了,已經被agent替代了。

傳輸層的基本理論和基本機制

多路復用和多路分用 從主機3來的p4程序要正確傳輸到主機2的p2程序,從主機1老的p3程序要正確傳輸到主機2的p1程序,socket是應用層和傳輸層之間的乙個門。奪路分用如何工作 主機接收到ip資料報 1.每個資料報攜帶源ip位址和目的ip位址 2.每個資料報攜帶乙個傳輸層的段 segment 3....

haoop 2 block機制和副本機制

datanode讀寫頻繁的block會被儲存在datanode的記憶體中。乙個bolck僅僅快取在乙個datanode的記憶體中hadoop預設儲存2個副本,在hdfs site.xml中設定。如果設定副本數大於集群數,則實際副本數為集群數。即副本數為設定的副本數和集群數的最小值。dfs.repli...

kafka分割槽和副本機制驗證

目前使用kafka集群,但是由於資料量還行,就不想使用太多的分割槽,所以只想弄乙個分割槽,網上資料看了一大堆,基本都是些理論和囉嗦,於是乎自己手動來驗證下這個情況的好壞。假設是三颱機器的kafka集群,建立乙個主題one fb1 fq1,指定副本數1和分割槽數1,命令 bin kafka topic...