//接前一章,本节主要介绍线性区以及相关线性区的操作。
线性区
Linux通过类型为vm_area_struct的对象实现线性区。
vm_area_struct:
struct vm_area_struct {
struct mm_struct * vm_mm; /* The address space we belong to. */
unsigned long vm_start...
分类:
系统相关 时间:
2014-08-03 10:21:55
阅读次数:
497
普通文件被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问,不必再调用read(),write()等操作。刷新变化函数msync()进程在映射空间的对共享内容的改变并不直接写回到磁盘文件中,往往在调用munmap()后才执行该操作。可以通过调用msync()函数来实现磁盘文件内容与共享...
分类:
其他好文 时间:
2014-07-31 16:42:56
阅读次数:
151
1、演示内容文件复制2、提要复制大文件时,使用FILE_FLAG_NO_BUFFERING标志同时需要注意:读写文件的偏移地址为 磁盘扇区 的整数倍读写文件的字节数为 磁盘扇区 的整数倍读文件到的缓冲区在进程地址空间中的地址为 磁盘扇区 的整数倍3、JUST CODING#include "stda...
调度(Marshaling): 进程和计算机之间进行函数参数和返回值传输的一个过程。核心: proxy / stub (代理 / 存根)当需要实现调度时,COM在客户程序进程地址空间创建一个proxy对象, 在组件的地址空间创建一个stub对象。客户程序与proxy交互,就像客户机和组件之间存在直接...
分类:
其他好文 时间:
2014-06-18 18:55:50
阅读次数:
267
用户态用户态有四类组件,这四类组件都是以进程形式存在的,也就是说,它们都有自己的进程地址空间(其实就是一套页表)。1. System Support
Processes这些是固化的进程,也就是说是操作系统结合在一起的进程。比如logon process(winlogon.exe),Session m...
现在将共享内存区的概念扩展到将无亲缘关系进程间共享的内存区包括在内。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
1.
进程地址空间Linux中,进程并不是直接操作物理内存地址,而是每个进程关联一个虚拟地址空间内存页是memory management unit (MMU)
可以管理的最小地址单元机器的体系结构决定了内存页大小,32位系统通常是 4KB, 64位系统通常是 8KB内存页分为 valid or i...
分类:
系统相关 时间:
2014-05-30 00:53:45
阅读次数:
551
什么是堆,什么是栈,什么是数据段,什么是代码段...这些都是历史遗留问题,如今编程真的没有必要在意这些了!不要被/proc/xx/{maps,smaps}里面的内容所迷惑和萦绕,自己管理好自己的内存分配就好,如果程序不是自己写的,那么就找写它的人。本文将从一个链接动态库的可执行文..
分类:
其他好文 时间:
2014-05-27 03:15:06
阅读次数:
313