Hive注册表那点事(5.0 VS 6.0)

Hive 注册表那点事( 5.0 VS 6.0

现象

       5.0 移置到 6.0 上的时候,发现 Hive-Registry 无效,具体的现象是在控制面板中屏幕校准后 Cold Boot 机器校准数据丢失。

       环境变量 PRJ_ENABLE_REGFLUSH_THREAD PRJ_ENABLE_FSREGHIVE 配置为 1 ,同时注册表项 "RegistryFlags " 配置为 0

分析

      首先温习一下 Hive 注册表信息更新的相关基本知识

通过配置注册表 HKEY_LOCAL_MACHINE/init/BootVars 下的注册项 "RegistryFlags " 来配置 Hive 注册表的数据更新方法。

注册项 "RegistryFlags " 可能的值及其含义如下:

Dword value

Description

none or 0

Default setting. Flushes the registry nondeterministically .

1

Enables aggressive flushing

2

Disables background flushing

       详细解释如下:

       当配置为 1 的情况下,将使用 Aggressive Flush 的方式来更新 Hive 数据,也就是 Flush On Close ,即在每次调用 RegCloseKey 的时候会更新一次注册表,显然比较浪费系统资源。

       当配置为 0 的情况下,使用 Lazy Flush 方式更新注册表,这个也是系统默认的情况。在这种配置情况下,如果依然想保存 Hive 注册表中的更改项的话,有两种如下两种选择:

>> 系统关机前调用 API RegFlushKey 将修改的注册表项写入到存储设备上,如果保存成功将返回成功的标记。

>> 配置环境变量 PRJ_ENABLE_REGFLUSH_THREAD 来创建 Flush 进程来定期更新 Hive 注册表的改动项。

       创建的 Flush 线程的优先级

[HKEY_LOCAL_MACHINE/System/ObjectStore/RegFlush ]

; To monitor the flushing from an external process add "ActivityName " registry value.

; The activity name is a global named event that filesystem will signal on Registry Activity.

;   "ActivityName "=""

; Create an thread in filesys to perform flushing

    "SpawnThread "=dword:1

; Make the thread IDLE priority

    "FlushPriority256"=dword:FF

; ActivityThreshold specifies the # of reg activity before we force a flush

    "ActivityThreshold "=dword:100

; Timeout period in ms for a flush (flush occurs if there have been some changes during this period).

    "FlushPeriod "=dword:1D4C0

       系统会按照 SpawnThread 新建一个优先级为 FlushPriority256 的线程,按照 FlushPeriod 周期性地去检查注册表的变化并加以保存。

      本案的分析

本文要重点说明的就是这个地方, 5.0 中和 6.0 "FlushPeriod " 的默认值是不一样的, 5.0 中默认值为 0x3E8 1000ms ,而 6.0 中为 0x1D4C0 ,即 120000ms 。这个地方的差异就造成了在 6.0 系统下注册表的修改值不能够及时的进行保存。

针对 120000ms 的情况,也就是说,当你修改了注册表后,修改的注册表值将会在大约 120000ms 后才刷新到存储设备上,这也造成了在 6.0 Hive 注册表不能够保存的问题。

解决方法

为了在 6.0 能够及时的保存注册表信息,需要将默认的 "FlushPeriod " 的值改为比较小的值,可以在 Platform.reg 中添加如下的值来覆盖系统的默认值:

[HKEY_LOCAL_MACHINE/System/ObjectStore/RegFlush ]

; Timeout period in ms for a flush (flush occurs if there have been some changes during this period).

    "FlushPeriod "=dword:3E8

       其实 6.0 上支持 Hive-Registry ,还需要比 5.0 上多配置一个环境变量即 PRJ_ENABLE_FSREGHIVE ,这个也应该时 6.0 的一个 Bug    

附带说一句, Windows Mobile6.5 上也存在类似的问题,在此不再赘述。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算与 OpenStack - 每天5分钟玩转 OpenStack(14)

“云计算” 算是近年来最热的词了。现在 IT 行业见面不说这三个字您都不好意思跟人家打招呼。 对于云计算,学术界有各种定义,大家有兴趣可以百度一下。 CloudMan 这里主要想从技术的角度谈谈对云计算的理解。 基本概念 所有的新事物都不是突然冒出来的&a…

OpenStack 架构 - 每天5分钟玩转 OpenStack(15)

终于正式进入 OpenStack 部分了。 今天开始,CloudMan 将带着大家一步一步揭开 OpenStack 的神秘面纱。 OpenStack 已经走过了 6 个年头。 每半年会发布一个版本,版本以字母顺序命名。现在已经到第 12 个版本 Liberty(字母 L)。 Op…

pcb中layer stack manager 中,右上角的layer pairs 、internal layer pairs和build-up,三者的区别?

不同的层叠模式: Layer Pairs(层成对)、Internal Layer Pairs(内电层成对)和Build-up(叠压)。 多层板实际上是由多个双层板或单层板压制而成的,选择不同的模式,则表示在实…

智能手机的开放与封闭刍议

作为一个从05年就浸淫其中的玩智能手机玩家,我已经先后拥有了两台WMXscale的HTC手机,一部iPhone,最近刚刚又搞了部 Google/HTC N1,准备继续做新技术的小白鼠,同时也体验一下新技术是如何惠及人类生活的。N1入手不久&am…

FPGA笔记

type [upper:lower] vector_name;例如wire [0:7] b; // 8-bit wire where b[0] is the most-significant bit.ATM是Asynchronous Transfer Mode(ATM)异步传输模式突发传输(Burst transmission),一般也称为数据突发&…

部署 DevStack - 每天5分钟玩转 OpenStack(17)

本节按照以下步骤部署 DevStack 实验环境,包括控制节点和计算节点 创建虚拟机 按照物理资源需求创建 devstack-controller 和 devstak-compute 虚拟机 安装操作系统 安装 Ubuntu 14.04,并配置 eth0 的 IP devstack-controller 192.168.104.10 devstak-c…

理解 Keystone 核心概念 - 每天5分钟玩转 OpenStack(18)

作为 OpenStack 的基础支持服务,Keystone 做下面这几件事情: 管理用户及其权限维护 OpenStack Services 的 EndpointAuthentication(认证)和 Authorization(鉴权)学习 Keystone,得理解下面这些概…

C++11 Lambda函数(匿名函数)

C11引入了lambda表达式,使得程序员可以定义匿名函数,该函数是一次性执行的,既方便了编程,又能防止别人的访问。 Lambda表达式的语法通过下图来介绍: Lambda表达式的引入标志,在‘[]’里面可以填入‘’或‘&…

时序约束与分析

时序约束与分析 设计约束所处的环节:约束输入、分析实现结果、设计优化。 设计约束分类 物理约束I/O接口约束(例如引脚分配、电平标准设定等物理属性的约束)、布局约束、布线约束以及配置约束。 时序约束:设计FPGA内部的各种逻辑或走线的延时,反应系统的频率和速度的约束…

通过例子学习 Keystone - 每天5分钟玩转 OpenStack(19)

上一节介绍了 Keystone 的核心概念。本节我们通过“查询可用 image”这个实际操作让大家对这些概念建立更加感性的认识。 User admin 要查看 Project 中的 image 第 1 步 登录 当点击时,OpenStack 内部发生了哪些事情?请看下面 Token 中包含了 User 的 R…

从Linux到Meego

网上看到一个Intel的强写的一篇关于meego的文章,很是受用,一篇好的文章就好比一顿每餐,在这里与大家分享。 从2月份Meego发布后一直在学习,现在把一些学到的内容跟大家共享一下。 首先想说说Meego是什么,Meego首先是…

理解 Glance - 每天5分钟玩转 OpenStack(20)

OpenStack 由 Glance 提供 Image 服务。 理解 Image 要理解 Image Service 先得搞清楚什么是 Image 以及为什么要用 Image? 在传统 IT 环境下,安装一个系统是要么从安装 CD 从头安装,要么用 Ghost 等克隆工具恢复。这两种方式有如下几个问题&…

C++ Applications

C的应用 C Applications (English version): http://www.stroustrup.com/applications.html 这里有一个有关系统、应用程序和库的列表,列表中的全部或者大部分代码用C编写,当然,该列表并不全面。即使我如何努力,我也不能列举一个…

四选一多路器

四选一多路器 状态转换 d0 11 d1 10 d2 01 d3 00 信号示意图 timescale 1ns/1ns module mux4_1( input [1:0]d1,d2,d3,d0, input [1:0]sel, output[1:0]mux_out ); //*************code***********//reg [1:0] mux_out_reg;always(*)begincase(sel)2b00:mux_out_reg d3;2b0…

简化从Win32到Windows 10的迁移之路

面对庞大的传统Win32应用程序生态所取得的巨大成功,Microsoft目前在Windows 10方面遭遇了一个重大挑战。这使得该公司面临两难困境:因为潜在买家的市场可能不太大,因此开发者不愿意为Windows 10开发应用;而由于用户无法使用他们惯…

了解OPhone平台---OPhone平台架构和主要开发组件

OPhone平台基于Linux和开放手机联盟(OHA)的Android系统,经过中国移动的创新研发,设计出拥有新颖独特的用户操作界面,增强 了浏览器能力和WAP兼容性,优化了多媒体领域的OpenCORE、浏览器领域的WebKit等业内众…

如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22)

本节首先讨论 image 删除操作,然后介绍 OpenStack CLI 的使用方法,最后讨如何 Troubleshoot。 Web UI 删除 image admin 登录后,Project -> Compute -> Images在列表中选择格式为 ARI 和 AKI 的 image,点击点击确认删除 …

异步复位的串联T触发器

异步复位的串联T触发器 T触发器的特征方程 Qn1 T Qn ’ T ’ Qn T⊕Qn T触发器的特征表 信号示意图 timescale 1ns/1ns module Tff_2 ( input wire data, clk, rst, output reg q ); //*************code***********//reg m;always(posedge clk or negedge rst)beginif…

硬件工程师笔试题

转载 http://djydiy.com/index.php/archives/256 模拟电路 1、基尔霍夫定理的内容是什么?(仕兰微电子) 基尔霍夫定理包括电流定律和电压定律。 电流定律(KCL):在集总电路中,任何时刻&#xff0…

Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34)

本节通过日志详细分析 Nova Pause/Resume 操作。 有时需要短时间暂停 instance,可以通过 Pause 操作将 instance 的状态保存到宿主机的内存中。当需要恢复的时候,执行 Resume 操作,从内存中读回 instance 的状态,然后继续运行 ins…