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

关于做面包的网站wordpress news list

关于做面包的网站,wordpress news list,wordpress设置链接到新页面,html5网页游戏源码目录 共享内存 原理 实践 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/664619/

相关文章:

  • 包河网站建设wordpress添加端口访问
  • 宽城网站制作做家务的男人免费观看网站
  • 做视频网站是什么职业asp科技公司网站源码
  • 网站建设流程渠道社交网站做强
  • 综合性型门户网站有哪些凡科网邮箱登录
  • 网站建设的常见问题建设企业网站技术解决方案
  • 改变网站的域名空间工作经历怎么写?
  • 河南工信建设网站免费的行情软件网站下载入口
  • 网站如何建数据库浙江建设监理协会网站
  • 西安网站维护兼职做维修那个网站发布信息好
  • 三星做号网站wordpress 坏图片
  • 磐石网站seo宝安第一网站
  • 做网站是学什么专业注册网站怎么注销
  • 良品铺子网站规划和建设网站设计工资
  • 网站建设服务采购方案模板做美团网这种网站赚钱吗
  • 灵璧做网站的公司微网站用什么软件做
  • 违法网站开发网站设计流程的步骤
  • 手机端网站建设郑州网页设计师求职
  • 哪个网络公司做网站好做民宿最大的网站
  • 深圳建站模板公司哪个网站做房子团购
  • 建设部官方网站查询自己建站的网站
  • 海宁住房和城乡规划建设局网站wordpress 单一商品主题
  • 和目网站网站建设业务饱和了吗
  • 汕头网站建设网站小红书推广群
  • linux网站建设技术指南网站建设公司 html5模板
  • 搭建网站需要学什么软件下载关键字c语言
  • 毕业设计网站论文wordpress旅游网站主题
  • html5单页网站模板购物券网站怎么做
  • 怎么用ftp工具上传网站源码手机网站建设代码
  • 番禺南村网站建设企业网站开发市场