当前位置: 首页 > news >正文

惠州建设网站开发中国芗城区城乡建设局网站

惠州建设网站开发,中国芗城区城乡建设局网站,给别人做金融网站 犯法吗,做网站 对方传销内存映射的基本使用 内存映射 概念#xff1a; 使一个磁盘文件与内存中的一个缓冲区相映射#xff0c;进程可以像访问普通内存一样对文件进行访问#xff0c;不必再调用read,write。 mmap()的优点#xff1a; 实现了用户空间和内核空间的高效交互方式 优化前#xff1a;优…内存映射的基本使用 内存映射 概念 使一个磁盘文件与内存中的一个缓冲区相映射进程可以像访问普通内存一样对文件进行访问不必再调用read,write。 mmap()的优点 实现了用户空间和内核空间的高效交互方式 优化前优化后 文件映射图 函数定义 void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); 功能创建共享内存映射 函数返回值成功返回创建的映射区首地址失败返回MAP_FAILED ((void *) -1) 设置errno值 参数说明 addr指定要映射的内存地址一般设置为 NULL 让操作系统自动选择合适的内存地址。 length必须0。映射地址空间的字节数它从被映射文件开头 offset 个字节开始算起。 prot指定共享内存的访问权限。可取如下几个值的可选PROT_READ可读, PROT_WRITE可写, PROT_EXEC可执行, PROT_NONE不可访问。 flags由以下几个常值指定MAP_SHARED共享的 MAP_PRIVATE私有的, MAP_FIXED表示必须使用 start 参数作为开始地址如果失败不进行修正其中MAP_SHARED , MAP_PRIVATE必选其一而 MAP_FIXED 则不推荐使用。MAP_ANONYMOUS匿名映射用于血缘关系进程间通信 fd表示要映射的文件句柄。如果匿名映射写-1。 offset表示映射文件的偏移量一般设置为 0 表示从文件头部开始映射。 注意事项 1 创建映射区的过程中隐含着一次对映射文件的读操作将文件内容读取到映射区。 2 当MAP_SHARED时要求映射区的权限应 文件打开的权限(出于对映射区的保护)如果不满足报非法参数Invalid argument错误。 当MAP_PRIVATE时候mmap中的权限是对内存的限制只需要文件有读权限即可操作只在内存有效不会写到物理磁盘且不能在进程间共享。 3 映射区的释放与文件关闭无关只要映射建立成功文件可以立即关闭。 4 用于映射的文件大小必须0当映射文件大小为0时指定非0大小创建映射区访问映射地址会报总线错误指定0大小创建映射区报非法参数错误Invalid argument 5 文件偏移量必须为0或者4K的整数倍不是会报非法参数Invalid argument错误. 6映射大小可以大于文件大小但只能访问文件page的内存地址否则报总线错误 超出映射的内存大小报段错误 注意文件大小和内存映射的关系图 7mmap创建映射区出错概率非常高一定要检查返回值确保映射区建立成功再进行后续操作。mmap()映射的种类 基于文件的映射 案例代码 读代码如下 写代码如下 运行如下 匿名映射 适用于具有亲缘关系的进程之间 代码如下 释放内存映射 munmap函数 int munmap(void *addr, size_t length); 返回值成功返回0失败返回-1并设置errno值。 函数参数 addr调用mmap函数成功返回的映射区首地址 length映射区大小即mmap函数的第二个参数 System V IPC IPC对象包含共享内存、消息队列和信号灯集每个IPC对象有唯一的ID用Key关联IPC对象创建后一直存在直到被显示地删除ipcs/ipcrm共享内存 共享内存是一种最为高效的进程间通信放肆进程可以直接读写内存而不需要任何数据的拷贝共享内存存在内核空间创建可被进程映射到用户空间访问使用灵活由于多个进程可同时访问共享内存因此需要同步和互斥机制配合使用 共享内存使用步骤 1生成key 2创建/打开共享内存 3映射共享内存即把指定的共享内存映射到进程的地址空间用于访问 4 读写共享内存 5 撤销共享内存映射 6 删除共享内存对象生成key函数如下 key_t ftok(const char *path, int id); 其中参数path是指定的文件名这个文件必须是存在的而且可以访问的。id是子序号它是一个8bit的整数。即范围是0~255。当函数执行成功则会返回key_t键值否则返回-1。在一般的UNIX中通常是将文件的索引节点取出然后在前面加上子序号就得到key_t的值生成key代码如下 创建共享内存函数 共享内存创建 – shmget int shmget(key_t key, int size, int shmflg);共享内存映射 void *shmat(int shmid, const void *shmaddr, int shmflg); 第二个参数一般写NULL表示自动映射 第三参数一般写0 表示可读写共享内存撤销 int shmdt(void *shmaddr); 撤销后内存地址不可再访问。共享内存控制 int shmctl(int shmid, int cmd, struct shmid_ds *buf); shmctl(shmid, IPC_RMID, NULL);删除共享内存总体代码如下 注撤销和删除有区别的删除是彻底删除需要重新创建而撤销则内存还在那但要注意不用的时候一定要撤销不然别人想删除删不掉
http://www.hkea.cn/news/14267478/

相关文章:

  • 婚纱摄影网站首页石家庄网站建设q.479185700棒
  • 做养生网站需要证件吗拓者设计吧注册码
  • 常用的网站制作软件免费虚拟主机管理系统下载
  • 上海网站制作的网站页面框架设计
  • 提供网站建设服务的网站价格怎样给公司做一个网站做推广
  • 做手机网站尺寸大小网站建设基本流程费用
  • 手机网站设计尺寸大小织梦网站首页自动更新
  • 怎么登陆建设银行网站看开户行seo优化是什么职位
  • 一年网站维护模板网站案例
  • 网站平台项目交接需要什么西安建设银行网站
  • 如何做带后台的网站商业软文
  • 小程序可以用手机网站吗制作微信小程序的教程
  • 广州网站推广找谁毕业设计做网站low
  • 月子会所 网站源码您的网站未备案 或者原备案号被取消
  • app网站与普通网站的区别对网站设计的建议
  • 河北邢台手机网站建设品牌网站建设j小蝌蚪j
  • 体育php网站源码怎么看一个网站是用模板什么做的
  • 网站建设工作室起名icp备案网站
  • 网站域名怎么进行实名认证动漫网站源码自动采级
  • hexo建设网站阜新建设工程信息网站
  • 个人网站推广费用seo关键词快速排名前三位
  • 科技文化网站建设方案东莞建站模板源码
  • 嘉兴企业网站制作企业网站改版seo
  • 正规的建网站公司辽宁建设工程造价管理网站
  • WordPress突然全站404郑州一建集团工程建设有限公司网站
  • 网站建站平台源码申请网站空间有哪几种方式
  • 北京做网站便宜的公司哪家好电商网官方网站
  • 书店网站建设人员分配软件开发工程师是程序员吗
  • 简单网页设计模板图温州云优化seo
  • 简易的网站制作服务器免费试用