• Java解释器浅析

    = 826

           解释器是Java虚拟机非常重要的一部分,它的工作就是把字节码转化为机器码并运行。Hotspot中实现了两种具体的解释器,分别是模板解释器而C++解释器。同时在Hotspot的源码树中还保留着一种“字节码解释器”的古老解释器。这种解释器没有编译优化,效率比较低,本质上就是一个比较长的switch语句,针对不同的字节码执行不同的操作。这些操作直接以C/C++语言的形式表现出来,随着项目的编译一起形成了“硬性的”机器代码。相比之下,模板解释器的工作要更为复杂一些,效率也会更高一些。 模板解释器的主要构成:1.解释器,读取字节码[……]

    Read more

  • C++静态成员变量

    = 632

    今天在弄一段代码的时候遇到了静态成员变量的问题。卡了一段时间后,果断翻出《深入探索C++对象模型》,大概明白了问题所在。这事给我的一点启示就是“纸上得来终觉浅,绝知此事要躬行”。首先看看问题吧!其实就是一个类型的定义。代码如下:

    //myApplication.cpp  
    #include "myapplication.h"  
    #include <iostream>  
    using std::cout;  
    using std::endl;  
      
    myApplication::myApplication(string _appName):appName(_appName)[......]

    Read more

  • Lua调用C函数的实现

    = 926

    本文出自:【InTheWorld的博客】

            看Lua有一段时间了,说实话进展挺慢的。归根到底是因为“动机不纯”,我确实不是抱着学Lua的心态去看资料的。本来看Lua就是听说Lua的实现比较简单,可以借Lua理解解释性语言的一些细节实现。当然Lua也确实不简单的,闭包什么的概念以前都没听说过。没用过Lua却去硬啃Lua语言实现,我也是蛮拼的!
        我主要的参考资料是云风大神的《Lua源码赏析》和高手翻译的《LUA中文教程》。这里我想记录一下函数调用的过程。按照函数调用这条线串联一[……]

    Read more

  • 调试器原理之ptrace调用

    = 604

    本文出自:【InTheWorld的博客】 (欢迎留言、交流) 

          其实很早以前就对调试器技术感兴趣了。以前玩板子的时候用了JTAG,当时我觉得这东西好神奇。前面我下载了一份GDB源码,可惜弄了几天都没有看出门道。昨天瞄了一眼《开源应用程序架构》,不出意外的看到了GDB。里面说在Linux下面调试器的功能主要都是靠ptrace调用实现的。我突然觉得有戏,感觉找到了点希望(不得不说,网上真心没找到GDB实现方面的资料,顶多是使用教程)。然后我就和ptrace干上了。后来就查到了一份名为《Linux源码分析-PTRACE》的文[……]

    Read more

  • Ubuntu 14.04编译OpenJDK

    = 501

    本文出自:【InTheWorld的博客】 (欢迎留言、交流)

            中秋节前后的一段时间,我草草的研究了一下hotspot的源码,对JVM有了一点点了解。当时也翻了翻《HotSpot实战》,不过可惜的是一直没有动手编译调试过HotSpot,实在是汗颜。前几天虚拟机上装了个Ubuntu kylin,又觉得应该再尝试编译一下OpenJDK。然后就开始了蛋疼的过程,昨天晚上终于编译成功了,这里记录一下自己遇到的坑。

            网上有人说32位[……]

    Read more

  • = 2460

    梦想从来不是什么堂皇漂亮的东西。它只是沉重的泥土下一颗干瘪到可怜的种子。甚至对旁人而言,如果它最终没有开出耀眼的花朵来,就什么也不是。但我自己知道自己心中栖居着怎样的星辰大海。我自己知道就可以了。——《所有孤独的行星都相遇》

  • 深入理解linux网络技术之驱动层

    = 1238

    最近我又开始看这个《深入理解linux网络技术内幕》了。以前一直觉得这本书是一个巨无霸,昨天和前天各花了一点时间。大概是一直在搞内核的缘故吧!现在看起来倒不是很吃力了。大概看了1/3吧,虽然的确有点跑马观花了意味,但是自我感觉还是明白了主干的东西。《linux内核情景分析》里面对软中断讲得比较简略,而《深入》那书后边还图书馆了,所以导致我对软中断的理解很不够透彻。现在大致终结一下吧! 首先,软中断的执行是由ksoftirqd完成的,这是多个内核进程,每个CPU都有一个这样的进程,申明如下:

    //linux-3.0.8/include/linux/interrupt.h  
    DECLARE_P[......]

    Read more

  • Java虚拟机Hotspot源码分析之找门

    = 621

     本文出自:【InTheWorld的博客】 (欢迎留言、交流)

            最近研究JVM已然走火入魔了,下午看了两个小时,终于看出了一点端倪。像我这样Java学个半吊子,就开始研究JVM源码的人实在是奇葩的存在!源码据说有50多万行,不过感觉也不是很多的样子。大概是linux源码看多了,觉得这hotspot并不是很大(坐等被虐出翔)。先记录一下成果吧!
            首先,目录结构: 有os,cpu,os_cpu,share这几个目录,顾[……]

    Read more

  • PCI配置空间访问的细节

    = 981

    本文出自:【InTheWorld的博客】

        前段时间在看DM9000驱动的时候,瞄了一眼DM9000的datasheet。以前确实没有留意这种形式的接口设计。简单来说就是,DM9000只占用主机的8字节的地址空间。前四字节用作地址端口,后四字节用作数据端口。进行写操作时,将目标地址写入到地址端口,源数据写入数据端口。读操作则与写操作类似。PCI设备中有三种地址空间,分别是内存空间、IO空间和配置空间。PCI总线很重要的一个特点就是配置空间。配置空间是内存空间和IO空间分配的基础。个人觉得,由于PCI设备可以直接通过映射后的地址进行访问。与这种透明机制相比,[……]

    Read more

  • Linux内存管理之初始化

    = 1310

    《深入理解linux内核》中对内存管理的解读比较粗略,相比之下陈莉君的书要详细很多了。如果有人想了解内存管理的细节,可以去看看陈莉君的书,确实非常的详细。

    简单的记笔记没有什么意思,按自己的疑惑来记录吧!首先,内存管理是对全局内存进行管理的,但是内存管理的数据也需要占内存,又是一个鸡生蛋、蛋生鸡的问题。这个问题和内存页表建立的问题差不多的。先不谈页表吧!页表建立是在内存管理以后的。首先知道一个东西,内存管理的一部分数据是在内核数据段或者初始段的。

            怎么看呢?有一个System.map的文件,这是编译内核之[……]

    Read more

第 8 页,共 9 页« 最新...56789