一.啟動頁和共享頁
啟動頁:由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...