PHP头条
热点:

关于匿名内存映射的优点

mmem_zero方案:

  1. (SVR 4 ) /dev/zero Memory Mapping 

1. 可以将伪设备 “/dev/zero” 作为参数传递给mmap而创建一个映射区。/dev/zero的特殊在于,对于该设备文件所有的读操作都返回值为0的指定长度的字节流 ,任何写入的内容都被丢弃。我们的兴趣在于用它来创建映射区,用/dev/zero创建的映射区,其内容被初始为0。

2. 使用/dev/zero的优点在于,mmap创建映射区时,不需要一个时间存在的文件,伪文件 /dev/zero 就足够了。缺点是只能用在相关进程间。相对于相关进程间的通信,使用线程间通信效率要更高一些。不管使用那种技术,对共享数据的访问都需要进行同步。

mmem_anon方案:

  1. (4.4 BSD) Anonymous Memory Mapping 

1. 匿名内存映射与使用/dev/zero类型,都不需要真实的文件。要使用匿名映射之需要向mmap传入MAP_ANON标志,并且fd参数置为-1。

2. 所谓匿名,指的是映射区并没有通过fd与文件路径名相关联。匿名内存映射用在有血缘关系的进程间。

win32方案中堆内存分配的声明

函数HeapAlloc声明如下:

  1. WINBASEAPI  
  2. __out_opt  
  3. HANDLE  
  4. WINAPI  
  5. HeapCreate(  
  6.  __in DWORD flOptions,  
  7.  __in SIZE_T dwInitialSize,  
  8.  __in SIZE_T dwMaximumSize  
  9.  );  
  10.    
  11. WINBASEAPI  
  12. BOOL  
  13. WINAPI  
  14. HeapDestroy(  
  15.  __in HANDLE hHeap  
  16.  );  
  17.    
  18. WINBASEAPI  
  19. __bcount(dwBytes)  
  20. LPVOID  
  21. WINAPI  
  22. HeapAlloc(  
  23.  __in HANDLE hHeap,  
  24.  __in DWORD dwFlags,  
  25.  __in SIZE_T dwBytes  
  26.  );  
  27.    
  28.    
  29. WINBASEAPI  
  30. BOOL  
  31. WINAPI  
  32. HeapFree(  
  33.  __inout HANDLE hHeap,  
  34.  __in DWORD dwFlags,  
  35.  __deref LPVOID lpMem  
  36.  );  
  37.    
  38. WINBASEAPI  
  39. SIZE_T  
  40. WINAPI  
  41. HeapSize(  
  42.  __in HANDLE hHeap,  
  43.  __in DWORD dwFlags,  
  44.  __in LPCVOID lpMem  
  45.  ); 

◆hHeap是进程堆内存开始位置。

◆dwFlags是分配堆内存的标志。

◆dwBytes是分配堆内存的大小。


www.phpzy.comtrue/php/10187.htmlTechArticle关于匿名内存映射的优点 mmem_zero方案: (SVR4)/dev/zeroMemoryMapping 1. 可以将伪设备 /dev/zero 作为参数传递给mmap而创建一个映射区。/dev/zero的特殊在于,对于该...

相关文章

    暂无相关文章
相关频道:

PHP之友评论

今天推荐