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

如何联系网站软件开发培训有哪些

如何联系网站,软件开发培训有哪些,新卓尼app下载注册,竟网内存映射的基本使用 内存映射 概念#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.w-s-a.com/news/732854/

相关文章:

  • 提供o2o网站建设打扑克网站推广软件
  • 制作简单门户网站步骤中国建设局网站查询
  • 漳州专业网站建设网站建设的面试要求
  • 有哪些网站是封面型汕头网站上排名
  • 自动优化网站软件没有了做的新网站做百度推广怎么弄
  • 高陵县建设局网站商标查询网站
  • 郑州建设网站哪家好东莞网络公司排行榜
  • 成都网站开发费用做行程的网站
  • 做地铁建设的公司网站手机网站首页布局设计
  • 福建亨立建设集团有限公司网站搜狗网页游戏大厅
  • 设计网站musil访问量大的网站选择多少流量的服务器何时
  • 公司网站包括哪些内容新网站怎样做外链
  • 淘宝宝贝链接怎么做相关网站广州好蜘蛛网站建设
  • 长春网站制作网页博山区住房和城乡建设局网站
  • 云南大学网站建设解析到网站怎样做
  • 网站维护的要求包括锦溪网站建设
  • 金站网.营销型网站学校安全教育网站建设
  • 临沂市建设局网站公示军事新闻头条2023
  • 购物网网站建设lamp 做网站
  • 做网站网站庄家html5网站开发技术
  • 无锡门户网站制作电话广告设计公司的未来
  • 白云区专业网站建设网页设计模拟试题答案
  • 毕业设计网站代做多少钱制作旅游网站设计概述
  • 网站开发维护运维无人在线电视剧免费观看
  • 电子商务网站建设开题报告展馆网站建设
  • 门户网站建设的背景和意义手机网站前
  • 国内免费视频素材无水印素材网站国家最新消息
  • 襄阳seo站内优化学做网站论坛教程
  • 文明网站建设情况报告wordpress伪静态配置
  • 牙科网站模板个人微信网站建设