x86逻辑地址转物理地址实验

之前一篇文章关于往NetBSD添加系统调用,是为了做这个实验准备的。

想要研究x86架构下的内存管理,最重要的参考文档应该是英特尔官方关于内存管理方面的解释了。在 Intel? 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide, Part 1 文档的第三个章节,详细解释了整个翻译过程,其中涉及到的寄存器和各种标志位的作用。长是比较长,而且又是英语的,但是说得很清楚。

而实验则是验证自己理解是不是正确的一个很好的方式。理论看了半天,也知道怎么算,套公式好像也能算得出来,但是却不知道有没有算对。有真实的环境,一测试一验证,就知道对不对了。如果自己理解有误,可以及早发现和纠正。

继续阅读x86逻辑地址转物理地址实验

给NetBSD添加系统调用

NetBSD本来官方文档里( http://www.netbsd.org/docs/internals/en/chap-processes.html ,3.2.5节 )就有添加系统调用的相关指导的,但是实际根据那个指导操作的时候,会发现指导文档过期得有点严重,已经无法按照上面说的来达到目的了。然后我在其他地方找到了关于OpenBSD的教学( http://www.onlamp.com/pub/a/bsd/2003/10/09/adding_system_calls.html ),同样可以用在NetBSD上。选用NetBSD是因为它安装包小,内核编译又快,一来减少下载时间,二来减少编译时间。不过如果x86-32和x86-64都想玩过去的话,总下载量也还是会有七百来兆的:两片ISO(每个300多兆)和一个内核代码包(40兆)。

添加系统调用本来的目的是为了做“x86平台内存分页机制”实验的时候来执行一些特权操作的。这里用的系统是NetBSD 6.1.4 i386版本。

继续阅读给NetBSD添加系统调用

在*nix挂载Windows下的文件夹

最初是为了学习Unix程序设计的时候,能够更加方便地使用虚拟机:因为我将NetBSD系统安装在虚拟机中。这样的话虽然能够通过FTP等方式传文件,但总之不是那么方便。如果能直接在Windows下共享这个文件夹,然后虚拟机里面用mount挂载的话,就方便很多,文件啥的全就都在Windows下了,平时日常用的是Windows,所以对我来说是方便。

继续阅读在*nix挂载Windows下的文件夹

WDK编译boost(1.34.1)::regex

Windows Driver Kit里面的STL库啊啥的,基本是停留在VC6时代。不过也有一个好处,可以链接到msvcrt.dll、msvcp60.dll,因为这两个文件大家都有,所以可以减小最后生成的可执行文件的体积。然后比起VC6.0,WDK可以直接从微软那边下载来,而VC6直到最后也没像2005、2008、2010、2012、2013那样有个Express的免费版啥的。于是如果想自己弄了简单的小东西如果想要体积小、要链接到msvcrt.dll,感觉WDK是一个挺好的选择……

继续阅读WDK编译boost(1.34.1)::regex