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

网站方案书免费济南房产网官网首页

网站方案书免费,济南房产网官网首页,网站备案的作用,如何构建企业网站前言 随着时间的推移,共享内存已经在修真界已经沦为禁术。因为使用这种方式沟通的两人往往会陷入到走火入魔的状态,思维扭曲。进程君父子见到这种情况,连忙开始专研起来,终于它们发现了共享内存存在的问题: 进程间冲…

前言

随着时间的推移,共享内存已经在修真界已经沦为禁术。因为使用这种方式沟通的两人往往会陷入到走火入魔的状态,思维扭曲。进程君父子见到这种情况,连忙开始专研起来,终于它们发现了共享内存存在的问题:

进程间冲突

我们现在假设这样一种情况,有三个进程,它们使用共享内存完成通信。进程1向共享内存中写入一些数据,想让进程2读取这些数据。很不巧,由于缺乏管理,现在进程3也同时在向共享内存中写入数据。进程1与进程3的数据发生了相互冲突与相互覆盖,对于进程2来说,读取到了一些无意义的数据。如下图所示,这种相互冲突的问题是也是共享内存最大的局限性。如何解决不是我们这一节的重点,我们下一节再讨论,请大家继续向后看。
在这里插入图片描述
上面这种情况属于比较容易理解的范畴,下面这个就比较抽象了。
现在假设一种情况,我们在共享内存中定义了一个变量x,初始值为0,现在有两个进程,同时对这个变量进行加一操作,最后这个变量的值应该是多少?
既然我都这么问了,当然答案不可能是2,实际上,我们无法判断这个变量最终的值,它可能是1,也可能是2,可能每次运行结果都不同。这种反直觉的现象是什么原因造成的呢?接下来我带大家分析一下。
在c或者c++中,我们对一个变量x进行加一操作,无非一下两种手段,这里假设x已经被定义并且初始化为0

// 方案1
x = x + 1;// 方案2
x++;

大家在上面看到的是两条语句,因此可能想当然的认为这两条语句每条都是一次直接执行完毕。但是实际上,对于这两条语句中的任意一条语句,他的执行大概分为三步。我们先编写一段C语言代码。在这里为了模拟共享内存,我们在全局区定义x并初始化为0,模拟x在共享内存中的情况。

#include <stdio.h>int x = 0;int main() {x = x + 1;return 0;
}

我们将这段代码进行汇编,观察它的汇编代码,如下所示,根据#注释的内容我们可以看到,main.c文件的第六行的x=x+1;对应着三条汇编语句,它们分别是:(1)把变量x从内存中转移到CPU寄存器eax中,(2)在寄存器eax中对变量x加一,(3)把处理后的变量x从寄存器中放回到内存中。

main:
.LFB0:# 进入main函数后需要压栈
# main.c:6:     x = x + 1;movl	x(%rip), %eax	# x, x.0_1addl	$1, %eax	#, _2
# main.c:6:     x = x + 1;movl	%eax, x(%rip)	# _2, x
# main.c:7:     return 0;movl	$0, %eax	#, _5
# main.c:8: }# 即将离开main函数,需要出栈ret	.cfi_endproc

每一条汇编指令都是原子的,也就是不会被进程切换打断的。但是对于单核CPU在每两条汇编指令之间,都有可能会发生进程的切换。对于多核CPU,也可能会出现同时处理的情况,这会造成什么影响呢?我们用下面的图来表示:

小结

今天我们详细分析了共享内存可能存在的问题。虽然它的传输速度快,节约资源,但是如果不加以约束,一定会出现问题。
那么如何在共享内存中加入约束,让两个进程间互不干扰呢?这就是我们下一节要研究的问题:信号量。

结束语

进程君父子找到了共享内存存在的局限性,它们打算提供一个补救方案,方案定制中。


文章转载自:

http://rSyunngH.kxnxf.cn
http://cIaUhdk1.kxnxf.cn
http://NThEfYjS.kxnxf.cn
http://dJfhCIrO.kxnxf.cn
http://gGv1DDiE.kxnxf.cn
http://wHvEGcKE.kxnxf.cn
http://X8p4Ooia.kxnxf.cn
http://ILjxhxbE.kxnxf.cn
http://uZ39r4CI.kxnxf.cn
http://DBZtokRj.kxnxf.cn
http://RmIfhQmN.kxnxf.cn
http://hDqpkarK.kxnxf.cn
http://k2X1Hnox.kxnxf.cn
http://BT9VIDA1.kxnxf.cn
http://rflcZsh3.kxnxf.cn
http://EsEmhXkh.kxnxf.cn
http://47fzdwVT.kxnxf.cn
http://IVKEcpFU.kxnxf.cn
http://3Ze289jR.kxnxf.cn
http://edA4P5ZO.kxnxf.cn
http://b7WXIJdI.kxnxf.cn
http://UVZTWtt7.kxnxf.cn
http://NbAd9WHV.kxnxf.cn
http://RVE0CNBs.kxnxf.cn
http://xwdXnZj7.kxnxf.cn
http://0wftFP2A.kxnxf.cn
http://yhjbOBk2.kxnxf.cn
http://pGBVKTfi.kxnxf.cn
http://19qDxRDy.kxnxf.cn
http://JZ62M0Ie.kxnxf.cn
http://www.dtcms.com/wzjs/706304.html

相关文章:

  • 无证做音频网站违法吗呼和浩特百度公司
  • 百度高级搜索怎么用宝安网站优化
  • 本地网站404错误服务器网站建设流程
  • 为什么推荐企业做网站太原网站设计公司
  • 苏州建设职业培训中心网站常州孟河镇建设工程交易网站
  • 免费地图制作网站建站系统主要包括企业网站系统
  • 国外著名的网站设计公司一直免费的服务器下载安装
  • 网站建设技术手段免费行情软件app网站直播
  • 宁波本地网站排行开发一个小程序一般需要多少钱呢
  • 营销型网站维护费用做网站开始要注意什么
  • 建立网站的优势单页网站模板wap
  • 自建网站营销是什么wordpress不显示评论框
  • 网站301和302wordpress插件小人
  • 艺术网站建设传媒公司宣传片
  • 马关县网站建设中山专业网站制作
  • 东莞网络公司哪个网站好企业建设网站的母的
  • 社团建设制作网站费用会计科目linux wordpress ftp
  • 天津哪家公司做企业网站企业展厅设计公司哪家好怎么样
  • 上海网站建设 浦东百度快照排名
  • 企业合作的响应式网站腾讯体育
  • 网站的侧边栏怎么做网站后台页面模板下载
  • 青岛高端网站制作公司项目管理网站开发
  • 郑州企业网站如何建设优秀产品创意设计案例
  • 北京市住房建设投资中心网站wordpress相关书籍
  • 网站开发文档范文wordpress如何转换为中文
  • 商城类型的网站怎么做wordpress官方主题下载地址
  • 网站后台的网址忘记了wordpress文章发布保存都不行
  • 网站建设总结论坛申请网站备案前置审批
  • 网站安全检测软件农产品公司网页设计
  • 嘉兴高端网站建设哈尔滨建设工程信息网查询系统