posts - 12,comments - 1,trackbacks - 0
          看understanding linux kernel的一點筆記:
          頁表
          通常32位cpu使用2級頁表機制就已足夠,但到64位時代,2級頁表會使頁表的項急劇增加,所以通常會使用更多的頁表級數。
          ia64/ppc64/alpha使用3級頁表,x86_64使用到4級頁表。為兼容這些模型,2.6.11之后使用了統一的4級頁表模型
          Global Directory
          Upper Directory
          Middle Directory
          Page Table
          針對不同的架構,設置每一級不同的地址位數,0的話就是不使用這一級頁表機制。

          cache
          多cpu環境中,每個cpu有自己的cache,對cache的更新有硬件機制保證通知其他的cpu進行同步。(真的嗎?)

          tlb
          用來cache頁表,加速地址的轉換速度。每個cpu有自己的tlb,但不需要同步,因為地址轉換和進程相關。

          posted @ 2008-11-01 08:27 白色天堂 閱讀(141) | 評論 (0)編輯 收藏
          LinuxThreads:
            舊的pthread實現,基于process實現pthread。主要問題是signal不符合規范,stack size固定???

          NPTL:
            2.6后加入的新實現,redhat as中2.4就可以支持。更符合pthread的規范。用戶線程和內核線程采取1:1模式,支持floating stack。

          posted @ 2008-09-09 22:56 白色天堂 閱讀(193) | 評論 (0)編輯 收藏
          今天花了一點時間作了個x86上hotspot vm的disassembler,這樣可以看出jvm生成的本地代碼了。
          代碼比較簡單,主要是用了udis86的庫,這個可以在sf上下載到,它的接口還是比較簡單的。

          簡單的例子,hotspot解析模式中iconst_0的對應匯編代碼:
          iconst_0  3 iconst_0  [0xb4d98120, 0xb4d98160]  64 bytes

            0xb4d98120: sub esp, 0x4
            0xb4d98123: fstp dword [esp]
            0xb4d98126: jmp 0x1e
            0xb4d9812b: sub esp, 0x8
            0xb4d9812e: fstp qword [esp]
            0xb4d98131: jmp 0x13
            0xb4d98136: push edx
            0xb4d98137: push eax
            0xb4d98138: jmp 0xc
            0xb4d9813d: push eax
            0xb4d9813e: jmp 0x6
            0xb4d98143: push eax
            0xb4d98144: xor eax, eax
            0xb4d98146: movzx ebx, byte [esi+0x1]
            0xb4d9814a: inc esi
            0xb4d9814b: jmp dword near [ebx*4+0x6900680]

          posted @ 2008-08-24 00:28 白色天堂 閱讀(183) | 評論 (0)編輯 收藏
          主站蜘蛛池模板: 隆昌县| 静乐县| 中牟县| 嘉禾县| 铁力市| 新津县| 兴隆县| 大城县| 安平县| 剑河县| 安阳市| 兴和县| 格尔木市| 宜丰县| 凯里市| 普陀区| 弥勒县| 古田县| 久治县| 赣州市| 梧州市| 化德县| 海伦市| 平原县| 六盘水市| 灵石县| 赤壁市| 金阳县| 南江县| 满洲里市| 遂昌县| 朝阳市| 正蓝旗| 双城市| 沙田区| 博乐市| 盐亭县| 京山县| 普兰店市| 营口市| 卓尼县|