共享内存区是可用IPC形式中最快的。一旦内存区映射到共享它的进程的地址空间,进程间数据的传递就不再涉及内核。然而往该共享内存区存放信息或从中取走信息的进程间通常需要某种形式的同步。不再涉及内核是指:进程不再通过执行任何进入内核的系统调用来彼此传递数据。内核必须建立允许各个进程共享该内存区的内存映射关系,然后一直管理内存区。
默认情况下通过fork派生的子进程并不与其父进程共享内存区。
mmap...
分类:
系统相关 时间:
2014-06-11 06:34:25
阅读次数:
439
现在将共享内存区的概念扩展到将无亲缘关系进程间共享的内存区包括在内。Posix提供了两种在无亲缘关系进程间共享内存区的方法:
1、内存映射文件:由open函数打开,由mmap函数把得到的描述符映射到当前进程地址空间中的一个文件。(上一节就是这种技术)
2、共享内存区对象:由shm_open打开一个Posix名字(也许是在文件系统中的一个路径名),所返回的描述符由mmap函数映射到当前进程的地址...
分类:
系统相关 时间:
2014-06-11 00:28:43
阅读次数:
464
add by zhj:
在Linux,创建进程是用fork(),它其实就是拷贝父进程的数据段和其它数据,这相当于C函数调用中的值传递,这是此后两者的修改都互不影响。因为两者的数据虽相同,但却在不同的进程地址空间。原文:http://blog.csdn.net/jason314/article/det...
分类:
系统相关 时间:
2014-06-08 18:36:08
阅读次数:
366
本文主要解说缺页处理程序,凝视足够具体,不再解释。//以下函数将一页内存页面映射到指定线性地址处,它返回页面的物理地址//把一物理内存页面映射到线性地址空间指定处或者说把线性地址空间指定地址address处的页面映射到主内存区页面page上。主要工作是在相关也文件夹项和页表项中设置指定页面的信息。在...
分类:
系统相关 时间:
2014-06-08 06:34:29
阅读次数:
285
第八章
内存管理1.背景1)内存:由存储单元(字节或字)组成的一维连续地址空间;由顺序编址的块组成,每块包含相应的物理单元;用来存放当前正在运行的程序的代码或数据;是程序中指令本身(程序计数器)所指向的存储空间。内存可以分为:系统区:用于存放操作系统。用户区:用于装入并存放用户程序和数据。防止用户进...
分类:
其他好文 时间:
2014-06-07 08:37:14
阅读次数:
221
DLL是创建Windows应用程序,实现代码重用的重要手段。那么当我们需要在进程间共享数据时,怎样做才能快捷方便地实现呢?在32位应用系统中,每个应用程序会将DLL映射到自己的地址空间,同时DLL中的数据也就随之被映射了。这样,每个应用程序都有自己的数据实例,在一个应用程序中修改DLL中的全局变量,...
分类:
其他好文 时间:
2014-06-06 14:50:18
阅读次数:
222
linux虚拟文件系统浅析虚拟文件系统(VFS)在我看来, "虚拟"二字主要有两层含义:1,
在同一个目录结构中, 可以挂载着若干种不同的文件系统. VFS隐藏了它们的实现细节, 为使用者提供统一的接口;2, 目录结构本身并不是绝对的,
每个进程可能会看到不一样的目录结构. 目录结构是由"地址空间(...
分类:
系统相关 时间:
2014-06-05 16:06:23
阅读次数:
381
为什么要实现软件定时器:
在芯片上,地址空间也是相当宝贵的,如果保留了更多的硬件定时器的话,就需要更多的地址空间,那么我们能不能作个折中方案呢?答案是肯定的,我们可以使用一个硬件定时器,来模拟实现一个软件定时器,可以满足更多的定时需求,需要注意的一点就是软件定时器精度可能会有稍微误差,因为会涉及到任务调度、锁中断等,在对定时精度要求不高的场景,可以考虑使用软件定时器。Linux内核中的timer...
分类:
其他好文 时间:
2014-06-05 11:38:35
阅读次数:
242
缺页处理程序//下面函数将一页内存页面映射到指定线性地址处,它返回页面的物理地址
//把一物理内存页面映射到线性地址空间指定处或者说把线性地址空间指定地址address处的页面映射到主内存区页面page上。主要工作是在相关也目录项和页表项中设置指定页面的信息。在处理缺页异常函数do_no_page中会调用这个函数。
参数:address--线性地址;page--是分配的主内存区中某一页面指针
st...
分类:
系统相关 时间:
2014-06-04 22:01:30
阅读次数:
433
每一个进程(包括普通进程和内核进程)的地址空间都分为用户地址空间和内核地址空间两部分,在32位的x86机器上,用户地址空间的范围是0~3G,内核
地址空间的范围是3G~4G.对于不同的进程,其用户地址空间会随着进程不同而不同,但所有进程的内核地址空间则都是一样的。对于内核进程,由于其始终运 行在内核...
分类:
其他好文 时间:
2014-06-02 18:23:58
阅读次数:
330