FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 1916|回复: 0

Windows 内核曾经尝试应对伽马射线导致的比特翻转

[复制链接]
发表于 2018-11-22 10:13:53 | 显示全部楼层 |阅读模式
Windows 内核曾经尝试应对伽马射线导致的比特翻转

微软资深程序员、《Old New Thing》作者 Raymond Chen 在其博客上谈论了一段往事,Windows 内核曾在短时间内加入 INVD 指令去尝试处理宇宙射线引发的比特翻转。

From: https://news.cnblogs.com/n/612914/

--------------------------------------------------------

这则新闻看起来短小精悍,不过其中的比特翻转倒是引起了我的兴趣。从字面意思看,好像就是 0 变成 1,或者 1 变成 0。如果真是这么,不就算是硬件攻击么。

下面这段描述,很通俗的解释了比特翻转,比较有意思:
--------------------------------------------------------
一般的计算机Memory介质中,每个存储单元(晶体管+电容器)存放1bit数据,这个比特位要么是0,要么是1——存储单元中充满电子表示1,清空表示0。内存就是由上亿这样的存储单元构成的,数据也因此得以存储。

不过电容器会泄露,一个电容器充满电子后,只需要几毫秒就会泄露殆尽。这就要求CPU(内存控制器)对电容进行充电,让“1”这个值能够保持住。整个过程是由内存控制器先读取电容器中的值,然后再把数据写回去。这种刷新操作,每秒会执行几千次。

这几年的内存容量正在大幅度上涨,所以存储比特位的电容器也就越来越小,排列越来越近。要防止相邻的电容之间相互干扰,难度也就变得更大。如果能够快速、反复访问一排电容,相邻行的电容更容易产生干扰错误和所谓的“比特位翻转”,也就是0变成1。

其实正常的数据读写一般是不会发生比特位翻转的,可是如果对某些行进行反复读写,问题就有可能产生。2014年卡内基梅陇大学的研究人员层发表过一篇论文,题为《无访问情况下的内存比特位翻转——DRAM干扰行错误的试验研究》,其本质是通过机器码指令CLFUSH或Cache Line Flush,强制进行这种比特位的读取和更新。据说利用这种方式,可引起大量比特位翻转。

From:https://www.freebuf.com/column/133871.html


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-3-28 19:21 , Processed in 0.046359 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表