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

做网站的必要性外贸找客户有什么网站

做网站的必要性,外贸找客户有什么网站,福州百度推广开户,百度搜索资源平台官网目录 共享内存 原理 实践 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.yayakq.cn/news/461913/

相关文章:

  • 网站开发与运维面试问题手机版微网站
  • 绘制网站结构图好看的手机端网站开发页面
  • 下载了模板如何做网站wordpress网站如何播放视频
  • 门户网站功能清单做网站需要icp
  • 重庆网站建设哪家做的好wordpress 添加友情
  • 学校网站的建设目标是什么跨境网站开发
  • 山东做网站公司网站建设公司北京
  • 网站开发需求分析中性能需求济南网站微信
  • 旅游电子商务网站开发项目进度表重庆整站seo
  • 专业的网站建设价格网站分析设计做的项目的过程
  • 电脑自带的做网站叫什么Wordpress启动mysql
  • 手机网站建设 新闻怎么在自己的网站上传视频
  • 织梦网站模板后台密码找回wordpress 评论可见
  • 阜阳手机网站制作海口网站建设发布
  • 公司主页网站怎么做石家庄网站建设找哪家
  • 建设网站需要公司吗兰州大学网页与网站设计
  • 网站制作前必须做的事情有哪些简洁白wordpress瀑布
  • 企业邮箱地址怎么填wordpress分类设置seo
  • 婚恋网站 没法做简单的wordpress模板
  • 做平面设计的网站微信分销商城
  • 大连专业模板网站制作公司wordpress运行php文件下载
  • 网站开发导航oneup wordpress
  • 汕头食品骏域网站建设网站建设基础书籍
  • 网站制作公司怎么运营青岛正规的网站建设公司
  • 现在建网站可以赚钱吗视频素材网免费
  • 有哪些比较好的做ppt好的网站咨询公司组织架构
  • 请问做网站需要什么木疙瘩h5官网
  • 西安建筑公司网站建设国外游戏网站设计
  • 辽icp备鞍山公司中企动力提供网站建设宠物网站制作内容
  • 用织梦系统做的2个网站要把它都上传到服务器上吗推广服务商