醇核:控制物理访问设备

[bsd3型,图书馆,系统][建议标签]

说话,朋友,然后进来。

醇核是用于控制物理访问的Haskell包为人为因素设计的设备,例如电击。这个访问控制协议非常简单:设备要么被锁定,或在特定日期和时间(到期日期). 一旦过期,设备自动再次锁定。同时,该设备可以立即锁定,覆盖解锁状态;或解锁期限可以延长。

用户程序包含梅隆核功能通过控制器,负责处理用户锁定和解锁命令,以及用于计划和取消解锁到期。

用户程序还必须使其物理访问设备适应控制器期望的接口。为此目的,醇核定义了装置带2个简单的类型IO(输入输出)的操作锁定和解锁设备。(醇核不提供任何有用的设备实现;见同伴mellon-gpio公司用于GPIO驱动实现的包。)

请注意醇核不提供身份验证机制或用于与控制器交互的网络服务;这就是使用基的高级包的域醇核包装(例如。,梅隆网).

关于计时器使用UTC日期

醇核使用UTC日期解除锁定到期,而不是时间增量或单调时钟。你可能不同意基于普遍的看法做出的决定计时器的“挂钟时间”(UTC是其中之一)。将军,常识是正确的。挂钟有很多问题:他们可能不准确,也可能不同意如果系统正在运行,它们可能会“跳转”一个时间守护进程,如NTP,他们偶尔会做一些事情出乎意料,比如增加了闰秒。

如果您的计时器必须是高精度的(即,此计时器必须运行确切地n个微秒,对于“精确”的某些定义),则毫无疑问:使用挂钟是个坏主意。然而,作为醇核被设计用于与物理访问设备一起使用,其本身通常是为人为因素、准确性而设计的在大多数情况下,在一两秒钟内是可以接受的。(如果你有更高精度的需求,尤其是极端安全的需求与安全相关的场景,您可能应该使用实时系统,而不是Haskell程序。)

一旦消除了对高精度的需求,并假设控制物理访问设备的系统使用同步时间源,例如国家电力公司,的与大多数替代方案相比,使用UTC的优势变得明显的:

  • 没有共同参考的绝对时间增量无法正常工作在网络环境中,网络问题可能很严重延迟从客户端到服务器的命令传递。如果用户想要解锁设备7秒钟,这意味着7秒钟吗从时钟时间当用户按下“send”时从打开到关闭的平均时间为7秒,无论何时服务器收到命令了吗?如果没有共同的参考用户无法传达其意图。

  • 单调时钟从不倒退,这是一个很好的不变量消除了某些NTP实施中出现的问题。然而,单调时钟是a)不可移植的,甚至不是支持所有系统;b) 通常依赖于系统在试图将时间传递给其他人时,它们会变得毫无用处两个系统;c) 有时甚至依赖于进程,在这种情况下它们甚至对两个人之间的时间沟通都没有用处同一系统上的进程;和d)当系统暂停或休眠,此时时钟不移动在系统挂起时转发,使时钟无效如果系统有可能将被挂起或进入低功率模式。

使用TAI坐标系而不是UTC具有以下优势确保每天(TAI)正好为86400(TAI,与UTC和所有基于UTC的时间系统不同很少有一天可以有86401秒,即一个标准日加1闰秒。如果TAI得到了很好的支持并且普遍可用,醇核可能会使用它,但大约在2016年,它不是。无论如何,最坏的情况是醇核跨越时间的unlock命令添加闰秒的时间将在大约1时到期第二次太早/太早,取决于用户是否在她发出命令的那一刻。由于此错误或多或少在预期精度范围内醇核系统在正常操作下(由于线程调度的反复无常,甚至没有考虑时钟漂移和其他现实世界因素),仅仅为了避免闰秒的微小不便。

简而言之,跨多个系统同步时间(和计时器)这是一个非常困难的问题,也是一个普遍支持的问题Network Time Protocol尝试寻址,大多数成功。鉴于其用于控制以下对象的物理访问人类很可能处于网络环境中,醇核选择依赖有效、准确的NTP(或其他墙锁同步)部署,用于协调和跨设备同步时间。如果你不能保证准确系统中的挂钟时间,梅隆核不会起作用正确地说,您应该寻找替代解决方案。


[跳到自述]

旗帜

手动标记

姓名描述违约
启用时间敏感测试

启用对时间敏感的测试(可能在加载的计算机(如CI服务器)上失败)

残疾人
测试-十月

生成文档测试

启用
测试-短线

构建hlint测试

残疾人

使用-f<标志>启用标志,或-f-<flag>禁用该标志。更多信息

下载

维修人员角落

包装维护人员

对于包维护者和黑客托管者

候选人

版本[RSS(RSS)] 0.7.0.0,0.7.0.1,0.7.0.3,0.7.1.0,0.7.1.1,0.8.0.1,0.8.0.2,0.8.0.3,0.8.0.4,0.8.0.5,0.8.0.6,0.8.0.7
更改日志 changelog.md
依赖关系 异步(>=2.1 && <2.2),基础(>=4.8 && <5),失败(>=4.9 && <4.10),mtl公司(>=2.2 && <2.3),原叶(>=0.2 && <0.3),半群(>=0.18 && <0.19),时间(>=1.5 && <2),变压器(>=0.4.2&&<0.6)[细节]
许可证 BSD-3条款
版权 版权所有(c)2018,Quixoftic,LLC
作者 德鲁·赫斯<dhess-src@quixoftic.com>
维护人员 德鲁·赫斯<dhess-src@quixoftic.com>
类别 系统
主页 https://github.com/quixoftic/mellon#自述文件
Bug跟踪器 https://github.com/quixoftic/mellon/issues
源回购 头部:git克隆https://github.com/quixoftic/mellon
已上传 通过德赫斯2018-04-03T23:03:06Z
分配
反向依赖关系 2直接,0间接[细节]
下载 总计6923人(过去30天内有10人)
额定值 (尚未投票)[估算人贝叶斯平均]
您的评分
  • λ
  • λ
  • λ
状态 可用文档[生成日志]
上次成功报告时间:2018年4月14日[所有1个报告]

mellon-core-0.8.0.7自述文件

[返回包描述]

醇核

“说吧,朋友,进来。”

醇核是用于控制物理访问的Haskell包为人为因素设计的设备,例如电击。访问控制协议非常简单:设备要么被锁定,要么被锁定在特定日期和时间(到期日期). 一次过期日期过了,设备会自动再次锁定。同时,可以立即锁定设备,覆盖解锁状态;或者可以延长解锁时间。

用户程序包含醇核通过控制器,负责处理用户锁定和解锁命令,以及用于计划和取消解锁到期。

用户程序还必须使其物理访问设备适应控制器期望的接口。为此,醇核定义泛型设备带2个简单参数的数据类型IO(输入输出)锁定和解锁设备的操作。(醇核不会提供任何有用的设备实现;见同伴梅隆gpio用于GPIO驱动实现的包。)

请注意醇核不提供身份验证机制或用于与控制器交互的网络服务;那是域名使用基础的高级包醇核包裹(例如。,梅隆网).

Travis CI构建状态