本篇是为了解Grant Table这一共享内存机制。之前的项目中心在Memory上,不过关于内存的部分带我的大哥在Xen的启动之内存相关实现和Xen的内存布局中已经比较详细的说明了。在之后的工作中由于要用到I/O的相关部分,所以先探究一下Grant Table,为之后的I/O的章节做个基础准备。
The funny page table terminology
What’s the next word in this sequence: PT, PD, PDP, …? If you have seen linux code, these page table terms may make you confused. So today I will simply introduce the history and difference between these terms in a hope that this can help you understant them.
I refered [The funny page table terminology on AMD64] and add some new dishes.
Also, this questions may help you as well:
Xen Log 7-Linear Page Table
When you see memory layout of Xen, you may found that there is a range named :Guest Linear Page Table. You can find this in $XEN_DIR/xen/include/include/asm-x86/config.h
.
So what is the purpose of this range?
Before we dig into the page table, you may need to read previous post [The Funny Page Table Terminology] to learn about some page table terms used in Xen.
This question may help you as well: What’s the purpose of linear page table (PML4 entry 258)
[Forward]Relocation Truncated to Fit
Interesting linker error
When you are programing a x64 program, it’s high likely that you encounter such a error: “relocation truncated to fit: R_X86_64_32S against symbol“. What happened? especially when you can run this program successfully on an old machine with same / old version. It may appears when you write inline assembly or after you changed your linker script.
This article may also help you: relocation truncated to fit - WTF?
Although forward is not recommended, this article is pretty useful for me and this can be treated as a replication just in case.
Xen Log 6-Xentrace
Xentrace 能够帮助你知道在Hypervisor中发生了什么,作为一个统计工具,可以记录所有的VMEnter/Exit、Schedule、Dom0ops等信息,并能够指定统计哪个cpu、记录哪些事件的信息。在进行一些验证、测试或Resource counting的时候有比较大的作用。
Xen Log 5-Debug Xen on Physical Machine
一开始的时候我们是在虚拟机里面调试Xen的,但是因为Qemu是不能模拟EPT的,所以在虚拟机里面起一个Xen,这个Xen的功能非常受限(不能使用EPT)。而且当时项目在虚拟机里面能跑,一到真机上就跑不了,所以不得不用真机来调,这里记录一下调试Xen的环境搭建。
岛国之行
满血复活!从日本玩回来后各种精疲力尽,感觉身体被掏空,睡了两天后终于复活啦!!这次玩的还是非常开心而且充足的的,之前发的也只是非常简略的记录,这里记录一下行程有需要的小伙伴可以参考~ 不注明的话价钱全都是日元~
C语言预处理
C语言预处理有三种:宏定义,文件包含,条件编译
文件包含很常见,条件编译则可以通过是#ifdef, #if 使得编译时的源码包含(不包含)某些内容。宏定义则主要是进行替换,本文主要记录宏定义的相关内容。
部分内容参考了贴吧:http://tieba.baidu.com/f?kz=1044315227
加速工作的小工具
我个人在工作之前总是喜欢先详细了解一下涉及到的工具,以致于都被实验室的小伙伴吐槽我每日的工作内容就是研究各种工具、插件..说来也惭愧,确实没有干什么活,倒是花了不少时间在配工具上..本文记录一下自己在接触Linux后遇到的非常赞的一些工具以及使用了这么多年Windows后用起来比较顺手的一些小软件。
2015 回顾
之前就说过要学习大哥经常总结的习惯,然而看到了大哥的总结文后才蓦然想起,自己还没有总结过..于是趁着依旧还算得上16年伊始之际,将过去的2015进行一个小小的总结~
2015年是我本科毕业的一年,是我从老交大迈入新交大的一年,是我成为研究生的一年。