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

公司网站布局加强 廉政网站建设

公司网站布局,加强 廉政网站建设,制作网页网站的软件,郑州市建设局官方网站文章目录 共享内存的概要创建共享内存shmget()参数keyshmget()参数sizeshmget()参数shmflg 删除共享内存挂载共享内存去关联 共享内存的概要 共享内存允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间传递数据的一种非常有效的方式。不同进程之间… 文章目录 共享内存的概要创建共享内存shmget()参数keyshmget()参数sizeshmget()参数shmflg 删除共享内存挂载共享内存去关联 共享内存的概要 共享内存允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间传递数据的一种非常有效的方式。不同进程之间共享的内存安排为同一段物理内存。 共享内存是由IPC为进程创建的一个特殊的地址范围它将出现在该进程的地址空间中。其他进程可以将同一段共享内存连接到它们自己的地址空间中所有进程都可以访问共享内存中的地址就好像它们是由用C语言函数malloc()分配的内存一样。如果某个进程向共享内存写入数据所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。 特别提醒共享内存并未提供同步机制也就是说在第一个进程结束对共享内存的写操作之前并无自动机制可以阻止第二个进程开始对它进行读取。所以我们通常需要用其他的机制来同步对共享内存的访问例如信号量。 两个进程的PCB各自维护着一个进程地址空间。当两个进程要进行通信时 操作系统在内存中开辟一个内存块。 通过两个进程的页表将内存中的内存块映射到两个进程的进程地址空间中。 此时两个进程便建立了连接。 进行通信时两个进程只需要访问自己的进程地址空间即可操作系统会通过页表访问内存中的内存块。 所以说共享内存就是让不同的进程看到同一块内存块。 所以说共享内存就是让不同的进程看到同一块内存块。 在维持通信关系中还涉及到几个概念 挂接将内存中创建好的内存块映射到进程的地址空间中。 去关联不想通信时取消进程和内存的映射关系。 注意 去关联后共享内存仍然存在只是和去关联的进程没有了映射关系。 共享内存区是最快的IPC(进程间通信)形式。一旦这样的内存映射到共享它的进程的地址空间这些进程间数据传递不再涉及到内核换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。 创建共享内存 #include sys/shm.hvoid *shmat(int shm_id, const void *shm_addr, int shmflg); int shmctl(int shm_id, int cmd, struct shmid_ds *buf); int shmdt(const void *shm_addr); int shmget(key_t key, size_t size, int shmflg);shmget()函数用来创建共享内存它的原型为 int shmget(key_t key, size_t size, int shmflg); 创建成功返回一个非负整数即共享内存标识符失败返回-1。共享内存多了就需要有一个标识让要通信的进程找到正确的共享内存。 shmget()参数key key值就是共享内存的标识让想要通信的进程双方看到同一块公共资源。 系统中既然存在很多个共享内存操作系统势必要将它们管理起来管理也是使用先描述再组织的方式。因此管理共享内存并不是在管理内存块本身而是在管理共享内存对应的结构体 问题又来了怎么保证这个key值是唯一的呢 从shmget函数的声明中可以看到这个key值是我们传给操作系统的也就是用我们传的key值来标定共享内存。 ftok()函数来生成一个独一无二的key值。 shmget()参数size size是用来指定开辟的共享内存是多大的以字节为单位。 一般指定的大小是4KB的整数倍。 也可以是任意值。 操作系统在开辟共享内存的时候是以4KB为单位的。每次开辟的共享内存最小也是4KB的。 假设我们指定4097字节大小的共享内存但是在内存中实际开辟的共享内存是2*4KB的。 但是在使用的时候只能使用4097字节的空间剩下的空间用户无法使用操作系统也不会用就浪费掉了。 shmget()参数shmflg 这是一个标志位和之前使用的open用法相似也是一个int类型的数据根据比特位不同用法也不同。 常用的两个选项 IPC_CREAT创建共享内存如果不存在创建新的如果存在获取相关信息。 IPC_EXCL无法单独使用必须与其他标志组合使用。 IPC_CREAT | IPC_EXCL创建共享内存如果不存在则创建如果存在错误返回。 例如 在语言模型中编码器和解码器都是由一个个的 Transformer 组件拼接在一起形成的。 删除共享内存 指令ipcrm -m shimd 功能删除指定shimd标识的共享内存。 shmid获取共享内存后返回的标识符。 cmd指定控制共享内存的方式。 buf描述共享内存的数据结构指针。 挂载共享内存 shmat是让进程和共享内存挂接 shmid创建共享内存后返回的标识符。 shmaddr指定共享内存映射到进程地址空间中的地址一般设置成NULL让系统自动来设置。 shmflg不用管它是啥直接给0。 返回值共享内存映射到进程地址空间中的地址。不成功返回-1但是是void*类型的。 在运行的时候发现报错了说我们没有权限再查看共享内存发现确实是创建了但是共享内存的权限是0也就是我们谁都不能访问。 解决办法就让给共享内存开发相应的权限 去关联 shmdt是让进程和共享内存去关联。 shmaddr要去关联的共享内存映射在进程地址空间中的起始地址。 返回值成功返回0不成功返回-1。
http://www.pierceye.com/news/68139/

相关文章:

  • 电子网站有哪些爱做网站
  • 智慧团建网站登陆平台wordpress 网站的占有
  • 做车贴网站南充网站建设
  • 海南网站建设网站开发小程序app微信社群管理
  • 网站建设工程师的职位要求wordpress页面中添加小工具栏
  • 静态购物网站模版电子商务网站开发主要有哪些
  • 找网站的方法创意设计公司经营范围
  • 冠县快搜网站建设有限公司石家庄网站建站
  • 成都网站建设外包公司谷歌seo综合查询
  • 万州微网站建设wordpress课程管理系统
  • 济南网站建设推荐q479185700上快公司运营策划方案
  • 网站建设备案哪家好成功的个人网站
  • 有没有教做川菜的网站自适应网站 响应式网站
  • 汶上做网站低代码开发公众号
  • 网站ip过万网站登录页一般做多大尺寸
  • 公司网站建设推广方案锦州微商网站制做
  • 专门做摩托车的网站长沙建个网站一般需要多少钱
  • 什么后台做网站安全网站自己服务器
  • 网站框架策划wordpress 搜索 高亮
  • 网站建设尺寸网站制作团队
  • 汕头专业网站建设流程没人做网站了吗
  • 珠海网站建设策划服装网站搭建计划书
  • 不锈钢网站样板网站域名怎么过户
  • html免费网站模板下载wordpress面包屑文字大小如何调整
  • 网站开发设计步骤公司简介模板设计图片
  • 教育网站建设多少钱产品推广平台有哪些
  • 如何做类似于淘宝的网站有什么软件可以制作抽奖页面
  • 免费做图网站有哪些网站开发读什么专业
  • 用flask做的网站有哪些自己怎么做视频网站
  • 凯里市网站建设网络营销是什么的促销