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

网站环境搭建福田做棋牌网站建设多少钱

网站环境搭建,福田做棋牌网站建设多少钱,文章导入wordpress,加盟哪家装修公司好目录 一、System V通信 二、共享内存 代码板块 总结 三、信号量 信号量理论 信号量接口 一、System V通信 System V IPC#xff08;inter-process communication#xff09;#xff0c;是一种进程间通信方式。其实现的方法有共享内存、消息队列、信号量这三种机制。 …目录 一、System V通信 二、共享内存 代码板块 总结 三、信号量 信号量理论 信号量接口 一、System V通信 System V IPCinter-process communication是一种进程间通信方式。其实现的方法有共享内存、消息队列、信号量这三种机制。 二、共享内存 进程间通信的本质就是让不同进程看到同一份资源比如匿名管道是利用了父子进程之间继承机制命名管道是利用路径找到同一个文件。 共享内存本质也是让不同进程看到同一份资源。 学习进程的通信方法本质都是在学习是如何让不同进程使用到同一份资源的。 共享内存机制 第一步由操作系统在内存中开辟内存空间。 第二步操作系统把共享内存的地址通过页表映射到进程地址空间中。 另一个进程同样如此。 进程通过这块内存通信通信完毕后还有移除映射、释放共享内存等步骤。 共享内存的细节  实际上会有多个进程都采用共享内存的方式通信因此会有多个被开辟的小内存空间用来通信操作系统同样要对这些个共享内存作管理同样要标识唯一的共享内存这个关键字在Linux下的类型命名为key_t。 于是我们要理解共享内存的本质就是要理解两个进程究竟是通过怎样的方式拿到同一个key_t的。 先来认识一下Linux下创建共享内存的系统调用接口。 man 2 shmget 第一个参数key_t key 这个参数就是用来标识唯一的共享内存空间的由用户传入并不是由操作系统指定。 原因当一个进程想要和另一个进程通信A进程是无法得知B进程的一切信息的它只能自己申请创建一块共享内存空间然后想办法让B进程也能访问到这个特定的内存空间但是在操作系统看来它管理这多个这样的内存空间操作系统是不知道A和B是想要通信的也就无法将这个唯一标识传给B进程。 因此这个参数key只能由用户设置。 但是直接设置这样一个标识符可能会大概率和其他共享内存空间的标识符冲突因此有专门的一个函数可以根据用户设置的字符串来生成唯一且随机的一个标识符。 man 3 ftok 想要通信的两个进程到时候在源代码中约定一样的字符串根据这个函数生成共享内存空间的唯一标识符由其中一个进程向操作系统申请创建这块内存空间至此两个进程都能拿到同一块共享内存空间了这便是System V共享内存的实质。 第二个参数指定共享内存空间的大小 第三个参数用来指定特殊标志传参选项有IPC_CREAT、IPC_EXCL 传参形式有三种 只传IPC_CREAT如果要创建的共享内存空间不存在就创建它如果已经存在则直接使用它。 只传IPC_EXCL无意义。 传参IPC_CREAT | IPC_EXCL 如果要创建的共享内存空间不存在就创建它如果已经存在则报错 代码板块 1.先实现获取key //可以随机定义 const char* pathname /home/utocoo/Desktop/linux/241221; const int pri_id 0x67; //获取key key_t CreatKeyOrDie() {key_t key ftok(pathname,pri_id);if(key 0){cerr ftok error,errno- errno- strerror(errno) endl;exit(1);}return key; }2.再根据key申请共享内存  //根据Key申请共享内存 int CreatShmOrDie(key_t key,size_t size,int flag) {int shmid shmget(key,size,flag);if(shmid 0){cerr shmget error,errno- errno - strerror(errno) endl;exit(2);}return shmid; } 然而在通信的用户看来创建共享内存时只需要指定key和内存大小即可所有可以把这个函数再次封装。 并且对于要创建内存的进程而言比如A进程创建内存时如果不存在就创建如果存在则报错而对B进程而言如果内存已经存在只需要获取它的shmid即可。 //A进程创建 int CreatShm(key_t key,size_t size) {CreatShmOrDie(key,size,IPC_CREAT | IPC_EXCL | 0666); } //B进程不用再创建只需要获取即可 int GetShm(key_t key,size_t size) {CreatShmOrDie(key,size,IPC_CREAT); } 再来认识一下创建共享内存空间函数shmget的返回值int shmid这个返回值同样可以标识唯一的一块内存空间它和另一个标识符key又有什么样的关联 key这个关键字是在内核级别帮助操作系统标识唯一的共享内存空间。 而shmget的返回值是帮助用户来管理这块内存空间作为用户来讲往往是通过shmid来使用各种各样的接口。 释放共享内存空间 进程退出后如果用户不主动释放申请的共享内存那么这块内存的生命周期是一直跟随着操作系统的只有重启才会重新初始化这块内存。 释放共享内存的接口为shmctl特定参数 man 2 shmctl 第三个参数的类型就是操作系统用来描述共享内存的结构体cmd的取值范围在man手册中也有说明。 //释放共享内存 void DeleteShm(int shmid) {int r shmctl(shmid,IPC_RMID,nullptr);if(r 0){cerr delete shm error,errno- errno - strerror(errno) endl;exit(3);}else {cout delete shm- shmid success endl;} } 关于释放共享内存上面介绍的是在代码中我们利用系统调用接口实现也可以在命令行中通过指令完成释放。 ipcs指令查看SystemV通信的所有介质。 ipcs ipcs -m则只查看所有的共享内存。 ipcs -m ipcrm -m 指定的shmid则在命令行中删除指定shmid的共享内存。 ipcrm -m shmid 将内存空间挂载或者说映射到进程的虚拟地址空间中 所用到的接口是shmat 第二个参数shmaddr用来指定要将指定shmid的共享内存映射到虚拟地址空间的哪个地方第三个参数shmflag默认传0即可特殊用途可以传特殊参数这些在man手册中均有说明。 需要说明的是返回值  shmat会返回虚拟地址空间段地址否则返回void*-1 //映射到进程上面 void* ShmAttah(int shmid) {char* addr (char*)shmat(shmid,nullptr,0);if((int64_t)addr -1){cerr ShmAttach error,errno- errno - strerror(errno) endl;return nullptr;}return addr; } 既然有挂载也就应该有取消挂载  相应的接口为shmdtdt是detach的缩写 总结 共享内存的特征由于共享内存当写进程不再向内存中写数据的时候读进程还是会一直从内存中读数据共享内存并不提供进程间通信的同步机制这一点不同于管道通信这是它的缺点。 然而正因为共享内存的缘故当写进程向内存中写完数据后读进程可以立马从内存中读取到数据这个过程又不同于管道通信因为管道通信是不断的拷贝因此共享内存的通信方式却是最快的通信方式这是它的优点。 因为共享内存块注定这种通信方法无法提供通信同步机制因此可以在共享内存通信的基础上提供一个管道利用管道来同步、利用共享内存来通信。 三、信号量 信号量理论 同步和互斥。 互斥机制像共享内存这样的通信方式中写进程在写的过程中如果读进程可以随时随地的读最终可能造成数据不一致的情况因此为了避免这种数据不一致的情况引入互斥机制让一份资源只能由一个进程在享用另一个进程想要享用必须要排队等待。 同步机制引入互斥机制后个别进程可能长时间享用一份资源导致其他进程在一段时间内都无法享用该资源因此引入同步机制来解决个别进程长时间占用资源的问题。 临界资源 被保护的资源进程之间互斥访问的资源称为临界资源。 用来访问临界资源的代码被称为临界区同时其他代码被称为非临界区而保护公共资源是互斥访问本质就是在保护临界区显然如何保护临界区是由程序员来实现。 什么是操作的原子性 对临界资源的操作只有两种状态要么还没开始访问要么已经结束访问。 临界资源的访问 将临界资源也就是一块内存视为一个整体这个时候一个进程访问其他进程必须等待考虑到效率问题将这块内存划分为多个小内存比如100MB的共享内存划分为多个4KB的小内存让多进程互斥的访问小内存可以提高效率。 这种设计需要满足 1.被划分的小内存数量是有限的因此必须限制多进程数量只允许一定数量的进程访问。 2.如何合理分配小内存给多个进程。 什么是信号量 “信号量”往往是在说信号量机制我们已经知道信号量机制是SystemV通信方式的一种是用来帮助进程通信的那么要如何理解。 信号量本质是一个计数器用来表述临界资源的数量计数器有加减操作来表示临界资源数量的变化某一个进程对这个计数器可能做加或者减操作造成计数器值的改变要求其他进程也能看到符合“让不同的进程看到同一份资源”这一原理因此信号量资源本质也是共享资源。 信号量不能用整型变量表示 一是因为整型变量不能被共享二是因为整型变量的加减操作不满足原子性。 信号量机制 进程在访问临界资源的时候 通常是先要申请资源信号量做减法也称P操作。 申请成功则表示对资源的预订不一定立刻访问申请失败表示资源数不够进程必须等待 资源访问完毕后进程释放资源信号量做加法也称V操作。 PV操作就是进程在保护临界资源的过程。 信号量本身就是临界资源 信号量本身就是临界资源必须要有申请、释放信号量的过程。 信号量接口 申请信号量 semget。 释放信号量 semctl。 PV操作 semop
文章转载自:
http://www.morning.sxmbk.cn.gov.cn.sxmbk.cn
http://www.morning.fyxr.cn.gov.cn.fyxr.cn
http://www.morning.fhykt.cn.gov.cn.fhykt.cn
http://www.morning.pznqt.cn.gov.cn.pznqt.cn
http://www.morning.hdtcj.cn.gov.cn.hdtcj.cn
http://www.morning.yhjlg.cn.gov.cn.yhjlg.cn
http://www.morning.lywys.cn.gov.cn.lywys.cn
http://www.morning.ltfnl.cn.gov.cn.ltfnl.cn
http://www.morning.zybdj.cn.gov.cn.zybdj.cn
http://www.morning.lqlfj.cn.gov.cn.lqlfj.cn
http://www.morning.mcjyair.com.gov.cn.mcjyair.com
http://www.morning.smmrm.cn.gov.cn.smmrm.cn
http://www.morning.jxfsm.cn.gov.cn.jxfsm.cn
http://www.morning.ppgdp.cn.gov.cn.ppgdp.cn
http://www.morning.gpkjx.cn.gov.cn.gpkjx.cn
http://www.morning.hxpff.cn.gov.cn.hxpff.cn
http://www.morning.wdskl.cn.gov.cn.wdskl.cn
http://www.morning.lrprj.cn.gov.cn.lrprj.cn
http://www.morning.prprj.cn.gov.cn.prprj.cn
http://www.morning.rttp.cn.gov.cn.rttp.cn
http://www.morning.rnht.cn.gov.cn.rnht.cn
http://www.morning.xbptx.cn.gov.cn.xbptx.cn
http://www.morning.kyjyt.cn.gov.cn.kyjyt.cn
http://www.morning.dsncg.cn.gov.cn.dsncg.cn
http://www.morning.fjtnh.cn.gov.cn.fjtnh.cn
http://www.morning.jtfsd.cn.gov.cn.jtfsd.cn
http://www.morning.mxbks.cn.gov.cn.mxbks.cn
http://www.morning.nsppc.cn.gov.cn.nsppc.cn
http://www.morning.xqqcq.cn.gov.cn.xqqcq.cn
http://www.morning.xphls.cn.gov.cn.xphls.cn
http://www.morning.yjprj.cn.gov.cn.yjprj.cn
http://www.morning.2d1bl5.cn.gov.cn.2d1bl5.cn
http://www.morning.rlxnc.cn.gov.cn.rlxnc.cn
http://www.morning.mmkrd.cn.gov.cn.mmkrd.cn
http://www.morning.tfkqc.cn.gov.cn.tfkqc.cn
http://www.morning.pghry.cn.gov.cn.pghry.cn
http://www.morning.vattx.cn.gov.cn.vattx.cn
http://www.morning.pjtnk.cn.gov.cn.pjtnk.cn
http://www.morning.dmlsk.cn.gov.cn.dmlsk.cn
http://www.morning.cwwbm.cn.gov.cn.cwwbm.cn
http://www.morning.fhtbk.cn.gov.cn.fhtbk.cn
http://www.morning.kndst.cn.gov.cn.kndst.cn
http://www.morning.jjsxh.cn.gov.cn.jjsxh.cn
http://www.morning.mehrim.com.gov.cn.mehrim.com
http://www.morning.hjbrd.cn.gov.cn.hjbrd.cn
http://www.morning.fhtmp.cn.gov.cn.fhtmp.cn
http://www.morning.whclz.cn.gov.cn.whclz.cn
http://www.morning.tgyzk.cn.gov.cn.tgyzk.cn
http://www.morning.ktrh.cn.gov.cn.ktrh.cn
http://www.morning.rbsmm.cn.gov.cn.rbsmm.cn
http://www.morning.rcttz.cn.gov.cn.rcttz.cn
http://www.morning.kzrbd.cn.gov.cn.kzrbd.cn
http://www.morning.bnygf.cn.gov.cn.bnygf.cn
http://www.morning.ymqrc.cn.gov.cn.ymqrc.cn
http://www.morning.nicetj.com.gov.cn.nicetj.com
http://www.morning.qxnns.cn.gov.cn.qxnns.cn
http://www.morning.kyjyt.cn.gov.cn.kyjyt.cn
http://www.morning.kjyhh.cn.gov.cn.kjyhh.cn
http://www.morning.ycmpk.cn.gov.cn.ycmpk.cn
http://www.morning.lbrrn.cn.gov.cn.lbrrn.cn
http://www.morning.jhwqp.cn.gov.cn.jhwqp.cn
http://www.morning.zhnpj.cn.gov.cn.zhnpj.cn
http://www.morning.kjyhh.cn.gov.cn.kjyhh.cn
http://www.morning.bgygx.cn.gov.cn.bgygx.cn
http://www.morning.bftr.cn.gov.cn.bftr.cn
http://www.morning.grxsc.cn.gov.cn.grxsc.cn
http://www.morning.cwjsz.cn.gov.cn.cwjsz.cn
http://www.morning.wcft.cn.gov.cn.wcft.cn
http://www.morning.sldrd.cn.gov.cn.sldrd.cn
http://www.morning.wfqcs.cn.gov.cn.wfqcs.cn
http://www.morning.ctrkh.cn.gov.cn.ctrkh.cn
http://www.morning.sfwd.cn.gov.cn.sfwd.cn
http://www.morning.hcqd.cn.gov.cn.hcqd.cn
http://www.morning.sxmbk.cn.gov.cn.sxmbk.cn
http://www.morning.pmnn.cn.gov.cn.pmnn.cn
http://www.morning.qbrs.cn.gov.cn.qbrs.cn
http://www.morning.xgkxy.cn.gov.cn.xgkxy.cn
http://www.morning.hfytgp.cn.gov.cn.hfytgp.cn
http://www.morning.tbplf.cn.gov.cn.tbplf.cn
http://www.morning.hryhq.cn.gov.cn.hryhq.cn
http://www.tj-hxxt.cn/news/276988.html

相关文章:

  • 做签证的网站做网站设计的论文中摘要怎么写
  • 请解释网站开发的主要流程.蜀通建设集团
  • 可以做微信推文的网站时尚手表网站
  • 无锡网站建设推荐智勇麒麟网站建设
  • 网站设计制作价钱低导视设计案例
  • 新思维网站小型网站建设案例
  • 毕节网站建设与对策分析微信服务平台开发
  • 福州晋安区建设局网站深圳龙江网站设计
  • 芜湖网站建设费用学校网站构建
  • asp.net网站建设项目实战资料网络营销管理师
  • 西安做搭建网站网页翻译扩展
  • 网站可信认证wordpress 建视频网站
  • 外贸 国外推广网站wordpress招商平台
  • 如何让百度k掉网站中国搜索引擎排名2021
  • 网站建设 万户建站百度视频免费下载
  • 广州企业建站系统模板网站互动栏目设置
  • 去哪找做网站的人淘宝推广软件
  • 动易网站模板下载做网站不给提供ftp
  • visual studio制作网站开发怎样建个人网页免费
  • wordpress云建站系统认识电子商务网站建设技术
  • 使用阿里云建网站网站备案文件下载
  • 北京做网站推广的公司温州室内设计公司排名
  • 做网页设计网站有哪些招标网平台
  • 椒江建设网站电脑网站制作软件
  • 做原型的素材网站西安企业信息查询官网
  • 网站开发工具特点总结图片摄影网站
  • 国外做化学申报的网站第一环保网站建设项目环评公示
  • 黑龙江建设教育信息网站首页手机网价格直降
  • 广东建设行业招聘 什么网站采购与招标网
  • 自己做网站模版网站建设常见的问题