cpu發出線性地址,linux內存管理單元做如下四步:
1.用線性地址中最高的那一位段作為下標在PGD中找到相應的表項,該表項指向相應的中間目錄PMD。
2.用線性地址中的第二個位段作為下標在第一步中找到的表項中找相應的表項,該表項指向相應的頁面表。
3.用線性地址中的第三個位段作為下標在頁面表中找到相應的表項PTE,該表項中存放的就是指向物理頁面的指針。
4.線性地址中最后位段為物理頁面的相對位移量,將此位移量與目標物理頁面的起始地址相加便得到相應的物理地址。
linux為了兼容所有的cpu體系結構,特意對內存管理進行了一層抽象。
常規映射是: 進程虛擬地址(線性地址)->頁目錄->中間目錄->物理地址
而對i386的cpu直接略過中間目錄的映射。
其中PGD == page dir,PMD == page middle dir, PTE == page table entry。
這個過程可以有mmu來處理。
摘要: 網上說weak_ptr是shared_ptr的觀察員,weak_ptr不會干擾shared_ptr機制,當weak_ptr所觀察的shared_ptr要釋放對象時,weak_ptr的指針將被置空,避免空懸指針。weak_ptr只能通過shared_ptr或weak_ptr構造。對于一個shared_ptr,它分別對強引用和弱引用都做了計數。
上圖是下面代碼的調試信息。
#include&nbs...
閱讀全文
首先下載apr-1.2.11-win32-src.zip、apr-util-1.2.10-win32-src.zip、apache-log4cxx-0.10.0.zip,還有sed for windows
解壓,然后重命名前2個文件夾為apr,apr-util(去掉版本信息),把apr,apr-util,apache-log4cxx-0.10.0這3放在同一個目錄,然后執行apache-log4cxx-0.10.0里的configure.bat和configure_aprutil.bat(用到sed)這2個,最后進入projects,打開log4cxx項目,編譯吧。
最近玩了玩泰坦之旅,主要是因為它提供了mod工具。
就打包工具ArchiveTool.exe來說說。
在控制臺直接無參數運行ArchiveTool.exe得到以下幫助信息:
Usage: archiveTool <file> <command> [command arguuments]
commands:
-add <directory> <base> [compression (0: min, 9: max)]: add a file or directory
relative to the base directory. If a file is already in the archive it will not be added.
-replace <directory> <base> [compression (0: min, 9: max)]: replace a file or directory
relative to the base directory. If a file is already in the archive it will be overwritten.
-update <directory> <base> [compression (0: min, 9: max)]: update a file ordirectory
relative to the base directory. Files will only be added if they are newer than
those already in the archive.
-remove <file> : remove a file from the archive.
-extract <location> [file] : extract the files or specified file to thespecified location.
-removeMissing <file> <base> : remove the files that are not in the specified directory.
-compact : compact the archive removing unused files.
-list : list the files in the archive.
-stats : display the archive statistics.