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

哪个网站做初中英语试题赚钱网站建设视频 备份 反代

哪个网站做初中英语试题赚钱,网站建设视频 备份 反代,php管理系统,wordpress ueditor目录 共享内存 原理 实践 shmget() 创建共享内存 shmctl() 删除共享内存 shmat() 挂接进程和共享内存 shmt() 进程和共享内存去关联 共享内存的特性 优势 劣势 用共享内存实现进程间通信 共享内存 原理 两个进程的PCB各自维护着一个进程地址空间。当两个进…

目录

共享内存

原理

实践

shmget() 创建共享内存

shmctl()   删除共享内存

shmat()   挂接进程和共享内存

shmt()     进程和共享内存去关联

共享内存的特性

优势

劣势

用共享内存实现进程间通信


共享内存

原理

两个进程的PCB各自维护着一个进程地址空间。当两个进程要进行通信时:

  1.  操作系统在内存中开辟一个内存块。
  2. 通过两个进程的页表,将内存中的内存块映射到两个进程的进程地址空间中。
  3. 此时两个进程就能看到同一个内存了,也就建立了通信。
  4. 进行通信时,两个进程只需要访问自己的进程地址空间即可,操作系统会通过页表访问内存中的内存块。

实践

shmget() 创建共享内存

  • 功能

        在内存中创建共享内存

  • 参数:    
    • key_t key 用来确定共享内存的唯一标识(系统中有很多共享内存,如何确定进程A和进程B通信的共享内存是同一个呢?通过key来确定)
    • size_t size  创建共享内存的大小
    • int shmflg  共享内存的权限,包括下面两种:

              1、 IPC_CREAT  不存在创建,存在获取

               2、IPC_EXCL   无法单独使用,必须与其他标志组合使用

   IPC_CREAT | IPC_EXCL:创建共享内存,如果不存在,则创建,如果存在,错误返回。

  • 返回值

        创建成功返回共享内存的标识,失败返回-1。

如何获取key?

  • 功能

        创建独一无二的key值

  • 参数

        1、pathname: 文件的路径,可以随便填写,建议当前路径"./"

        2、proj_id:项目的id,可以随便填写

  • 返回值

        返回一个key值

shmctl()   删除共享内存

当我们在进程通信时使用shmget创建了共享内存,但是当进程结束之后,共享内存并没有消失。

共享内存的生命周期是随内核的,用户不主动关闭,就一直存在。

可以使用  ipcs -m  指令查看共享内存.

如何删除共享内存?  两种方式:

1、手动输入命令  ipcrm -m shmid 删除

2、在程序中使用函数 shmctl()删除

  • 功能

        删除指定shmid的共享内存

  • 参数

1、shmid   要删除的共享内存的id,是shmget的返回值

2、cmd      删除的命令,常用的是IPC_RMID,也有时候用IPC_STAT

3、buf        描述共享内存的数据结构的指针,一般设置为nullptr

  • 返回值

        成功返回 0, 失败返回 -1

shmat()   挂接进程和共享内存

  • 功能

        使两个进程挂接到同一个共享内存上

  • 参数

1、shmid        创建共享内存后返回的标识符,shmget的返回值

2、shmaddr    指定共享内存映射到进程地址空间中的地址,一般设置成NULL,让系统自动来设置。

3、shmflg        权限,可以设置为0

  • 返回值

        共享内存映射到进程地址空间中的地址(shmaddr),不成功返回-1

shmt()     进程和共享内存去关联

  • 功能

        将进程和共享内存去关联

  • 参数

        shmaddr  指定共享内存映射到进程地址空间中的地址,shmat的返回值

  • 返回值        

        返回挂接进程个数

共享内存的特性

优势

当使用管道进行进程间通信的时候,需要拷贝4次。

键盘->写入端进程地址空间->管道->写出端进程地址空间->显示器

使用共享内存进行进程间通信的时候,需要拷贝两次

键盘->共享内存(写入写出端进程地址空间)->显示器

所以,共享内存是进程间通信最快的!

劣势

共享内存通信方式没有同步互斥机制,容易导致混乱。

用共享内存实现进程间通信

实现进程间通信,需要两个进程,一个做客户端,一个做服务端

运行结果:

http://www.15wanjia.com/news/183794.html

相关文章:

  • 专业购物网站建设报价小程序前端开发
  • 加盟商网站建设网页编辑的软件
  • 合肥专业做网站公司郑州网站建设qicaizz
  • 网站用什么语言做wordpress 链接 跳转
  • 为什么做企业网站东莞网站建设0086
  • 禅城建设网站什么网站能看到专业的做面包视频
  • wordpress音乐播放器网站优化多少钱
  • 个人购物网站搭建徐水网站建设
  • 西安网站优化指导什么优化
  • 家具营销型网站长春制作公司网站
  • 把别人的图片拿来做网站网站设计论文经济可行性分析
  • 网站推广专家wordpress 区块链主题
  • 专业律所网站建设自己做的网站别人
  • 德阳seo网站建设做网站vi系统是什么
  • 郑州网站优化公司排名重庆网站建设cqsday
  • 专业建设专题网站做app一般多少钱
  • 长沙做网站改版价格个人如何注册商标
  • asp建站程序网站建设丨下拉找金手指信誉
  • 禅城区企业网站建设刚出来的新产品怎么推
  • 网站开发 聊天窗口百度seo词条优化
  • 芜湖镜湖区做网站公司百度推广优化排名
  • 上海专业做网站电话如何建设国际网站
  • 网站建设的企业学校网站模板 dede
  • 上海网络推广公司网站网站建设网页设
  • 山西省煤炭基本建设局网站凡客诚品官方网店没有什么
  • 制作公司网站要多少费用呢广东建设信息网安管人员系统
  • 洪湖网站建设广西哪里有网站建设
  • 做中东服装有什么网站wordpress换主机域名
  • 设计广告图片wordpress站内seo
  • 网站 只做程序员企业管理系统项目简介