CapC: Capability C semantics, tools and reasoning
CapC:Capability C 语义、工具和推理
基本信息
- 批准号:EP/V000470/1
- 负责人:
- 金额:$ 61.82万
- 依托单位:
- 依托单位国家:英国
- 项目类别:Research Grant
- 财政年份:2020
- 资助国家:英国
- 起止时间:2020 至 无数据
- 项目状态:未结题
- 来源:
- 关键词:
项目摘要
We address a difficult technical problem that is drawn from industry:we seek a solution to fundamental problems found in the standards ofthe C and C++ programming languages. C and C++ code is not justprevalent -- it is used to form the lowest and most trusted levels ofour systems. The kernel of every mainstream operating system uses somecombination of the two, including Windows, MacOS, iOS, Android, Linuxand Unix, as do the swathe of embedded controllers with essentialfunctions like automotive engine management. Having a goodspecification of the language is the first step in verifying thecorrectness of these vital system components.-- Combatting software failure --This work is part of a larger effort to combat software failure bydeveloping techniques to verify the correctness of software.Currently, developers of computer systems rely predominantly ontesting to ensure that systems behave as they should. The system isrun for some time over various inputs and monitored for failure. Thehope is that this will expose enough of the flaws in the system tomake it reliable once it is deployed. But it is increasinglyexpensive to achieve good coverage: systems like cars experiencewildly varied inputs, and a fleet of a particular model of car runscollectively for far longer than the time its computer systems aretested. Worse still, modern systems are concurrent -- using multiplecommunicating processors to complete a task. The delicate interplaybetween the concurrent processors makes the output of the systemdependent on the timing of communication, so that some behavioursoccur only a handful of times in billions of runs, leaving testinglittle hope of finding associated bugs. When scrutinising securityproperties, one is faced not with simple circumstance, but with acommitted adversary that cannot be replicated by simple testing.There is evidence that validating software through testing is breakingdown and some bugs are evading discovery even in critical systems: forexample a concurrency bug caused some of Toyota's cars to suddenly andrelentlessly accelerate, killing 83 over 10 years. The wider economiccost of software failure was estimated by the U.S. National Instituteof Standards and Technology to cost USD 60bn each year. Improving ourapproach to software failure would have substantial economic andsocietal impact.Verification offers an alternative to testing: one defines desirableproperties of the system -- it will not crash, fuel metering will beproportional to accelerator input, and so on -- and mathematicallyproves that the code satisfies them. In the ideal of verification,there is no space for bugs to creep in and the mathematical proof ofcorrectness is absolute. This is particularly valuable for securityproperties. Unfortunately, verification techniques are invariablybuilt above an idealised model of the computer system, e.g.\ theassumption that memory accesses take place in a global sequentialorder, so called sequential consistency (SC). The distance between theideal and the reality leaves ample space for bugs to persist. In factthe status quo is much worse because we do not have a characterisationof the reality of the system's behaviour: our best models ofprogramming-language behaviour are known to be broken, e.g.\ in C, C++and Java.In this broad context, our project will develop a description the Clanguage that matches the reality, permitting the sorts of behaviourexhibited by compiler optimisations and the underlying concurrentprocessors. At the same time, we will develop verification techniquesin a setting that correctly models the subtle behaviour of modernlanguages, dovetailing these previously disparate views of thesystem. Our work will make verification of concurrent systems moreviable, including security properties, helping to address the economicand social costs of software failure.
我们解决来自工业界的一个难题:我们寻求 C 和 C++ 编程语言标准中发现的基本问题的解决方案。 C 和 C++ 代码不仅流行,而且还用于构成我们系统的最低和最受信任的级别。每个主流操作系统的内核都使用两者的某种组合,包括 Windows、MacOS、iOS、Android、Linux 和 Unix,以及具有汽车发动机管理等基本功能的大量嵌入式控制器。拥有良好的语言规范是验证这些重要系统组件正确性的第一步。--对抗软件故障--这项工作是通过开发验证软件正确性的技术来对抗软件故障的更大努力的一部分。目前,开发人员计算机系统主要依靠测试来确保系统按其应有的方式运行。系统在各种输入下运行一段时间并监视故障。希望这将暴露系统中足够的缺陷,以使其在部署后变得可靠。但实现良好的覆盖范围越来越昂贵:像汽车这样的系统会经历各种各样的输入,并且特定型号汽车的车队集体运行的时间远远超过其计算机系统的测试时间。更糟糕的是,现代系统是并发的——使用多个通信处理器来完成一项任务。并发处理器之间微妙的相互作用使得系统的输出依赖于通信的时间,因此某些行为在数十亿次运行中仅出现几次,使得测试找到相关错误的希望渺茫。在审查安全属性时,我们面临的不是简单的情况,而是无法通过简单测试复制的顽固对手。有证据表明,通过测试验证软件正在崩溃,甚至在关键系统中,一些错误也难以被发现:例如,导致的并发错误丰田的一些汽车突然猛烈加速,10 年间造成 83 人死亡。据美国国家标准与技术研究所估计,软件故障每年造成的更广泛的经济损失为 600 亿美元。改进我们解决软件故障的方法将产生巨大的经济和社会影响。验证提供了一种测试的替代方案:定义系统所需的属性——它不会崩溃、燃油计量将与加速器输入成比例等等——并在数学上证明代码满足他们。在理想的验证中,没有错误潜入的空间,并且正确性的数学证明是绝对的。这对于安全属性尤其有价值。不幸的是,验证技术总是建立在计算机系统的理想化模型之上,例如,内存访问按照全局顺序进行的假设,即所谓的顺序一致性(SC)。理想与现实之间的距离,给bug留下了足够的生存空间。事实上,现状要糟糕得多,因为我们没有系统行为现实的特征:众所周知,我们最好的编程语言行为模型已被破坏,例如 C、C++ 和 Java 中的模型。在这个广泛的背景下,我们的项目将开发符合现实的 C 语言描述,允许编译器优化和底层并发处理器表现出的各种行为。与此同时,我们将在正确模拟现代语言的微妙行为的环境中开发验证技术,使这些以前不同的系统视图相吻合。我们的工作将使并发系统的验证变得更加可行,包括安全属性,有助于解决软件故障的经济和社会成本。
项目成果
期刊论文数量(8)
专著数量(0)
科研奖励数量(0)
会议论文数量(0)
专利数量(0)
Memory Consistency Models for Program Transformations: An Intellectual Abstract
程序转换的内存一致性模型:知识摘要
- DOI:10.1145/3591195.3595274
- 发表时间:2023
- 期刊:
- 影响因子:0
- 作者:Gopalakrishnan A
- 通讯作者:Gopalakrishnan A
Modular Relaxed Dependencies in Weak Memory Concurrency
- DOI:10.1007/978-3-030-44914-8_22
- 发表时间:2020-04-18
- 期刊:
- 影响因子:0
- 作者:Paviotti M;Cooksey S;Paradis A;Wright D;Owens S;Batty M
- 通讯作者:Batty M
Owicki-Gries Reasoning for C11 Programs with Relaxed Dependencies (Extended Version)
具有宽松依赖性的 C11 程序的 Owicki-Gries 推理(扩展版本)
- DOI:10.48550/arxiv.2108.01418
- 发表时间:2021
- 期刊:
- 影响因子:0
- 作者:Wright D
- 通讯作者:Wright D
Mechanised Operational Reasoning for C11 Programs with Relaxed Dependencies
具有宽松依赖性的C11程序的机械化操作推理
- DOI:10.1145/3580285
- 发表时间:2023
- 期刊:
- 影响因子:1
- 作者:Wright D
- 通讯作者:Wright D
{{
item.title }}
{{ item.translation_title }}
- DOI:
{{ item.doi }} - 发表时间:
{{ item.publish_year }} - 期刊:
- 影响因子:{{ item.factor }}
- 作者:
{{ item.authors }} - 通讯作者:
{{ item.author }}
数据更新时间:{{ journalArticles.updateTime }}
{{ item.title }}
- 作者:
{{ item.author }}
数据更新时间:{{ monograph.updateTime }}
{{ item.title }}
- 作者:
{{ item.author }}
数据更新时间:{{ sciAawards.updateTime }}
{{ item.title }}
- 作者:
{{ item.author }}
数据更新时间:{{ conferencePapers.updateTime }}
{{ item.title }}
- 作者:
{{ item.author }}
数据更新时间:{{ patent.updateTime }}
Mark Batty其他文献
The C11 and C++11 concurrency model
C11 和 C 11 并发模型
- DOI:
- 发表时间:
2015 - 期刊:
- 影响因子:0
- 作者:
Mark Batty - 通讯作者:
Mark Batty
Library Abstraction for C / C + + Concurrency — extended version —
C/C++ 并发的库抽象 — 扩展版本 —
- DOI:
- 发表时间:
2012 - 期刊:
- 影响因子:0
- 作者:
Mark Batty;Mike Dodds - 通讯作者:
Mike Dodds
PrideMM: A Solver for Relaxed Memory Models
PrideMM:松弛内存模型的求解器
- DOI:
- 发表时间:
2018 - 期刊:
- 影响因子:0
- 作者:
Simon Cooksey;Sarah Harris;Mark Batty;Radu Grigore;Mikoláš Janota - 通讯作者:
Mikoláš Janota
Rust for Morello: Always-On Memory Safety, Even in Unsafe Code (Artifact)
Rust for Morello:即使在不安全的代码中也始终保持内存安全(Artifact)
- DOI:
10.4230/darts.9.2.25 - 发表时间:
2023 - 期刊:
- 影响因子:0
- 作者:
Sarah Harris;Simon Cooksey;M. Vollmer;Mark Batty - 通讯作者:
Mark Batty
Mark Batty的其他文献
{{
item.title }}
{{ item.translation_title }}
- DOI:
{{ item.doi }} - 发表时间:
{{ item.publish_year }} - 期刊:
- 影响因子:{{ item.factor }}
- 作者:
{{ item.authors }} - 通讯作者:
{{ item.author }}
{{ truncateString('Mark Batty', 18)}}的其他基金
Safe and secure COncurrent programming for adVancEd aRchiTectures (COVERT)
安全可靠的高级架构并发编程 (COVERT)
- 批准号:
EP/X015076/1 - 财政年份:2023
- 资助金额:
$ 61.82万 - 项目类别:
Research Grant
Transparent pointer safety: Rust to Lua to OS Components
透明指针安全:Rust 到 Lua 到 OS 组件
- 批准号:
EP/X021173/1 - 财政年份:2022
- 资助金额:
$ 61.82万 - 项目类别:
Research Grant
Compositional, dependency-aware C++ concurrency
组合的、依赖感知的 C 并发
- 批准号:
EP/R020566/1 - 财政年份:2018
- 资助金额:
$ 61.82万 - 项目类别:
Research Grant
相似国自然基金
PUFAs通过SREBPs提高凡纳滨对虾低盐适应能力的机制研究
- 批准号:32303021
- 批准年份:2023
- 资助金额:30 万元
- 项目类别:青年科学基金项目
供应链数字减碳能力的构建机理及其对可持续供应链绩效的作用机制研究
- 批准号:72302183
- 批准年份:2023
- 资助金额:30 万元
- 项目类别:青年科学基金项目
数据并知识驱动的跨场景老年人平衡能力风险评估方法研究
- 批准号:62302461
- 批准年份:2023
- 资助金额:30 万元
- 项目类别:青年科学基金项目
深度融合人机智能的研究生学术能力评价、归因与提升路径研究
- 批准号:62377008
- 批准年份:2023
- 资助金额:50 万元
- 项目类别:面上项目
基于有限信息认知能力的运作管理决策行为认知与实验设计
- 批准号:72331011
- 批准年份:2023
- 资助金额:165 万元
- 项目类别:重点项目
相似海外基金
ドライビングシミュレータと脳画像解析による脳腫瘍患者の運転能力評価
利用驾驶模拟器和脑图像分析评估脑肿瘤患者的驾驶能力
- 批准号:
24K14283 - 财政年份:2024
- 资助金额:
$ 61.82万 - 项目类别:
Grant-in-Aid for Scientific Research (C)
ヒーリングタッチにおける施術者の実践能力尺度の開発
开发治疗触摸从业者的实践能力量表
- 批准号:
24K13708 - 财政年份:2024
- 资助金额:
$ 61.82万 - 项目类别:
Grant-in-Aid for Scientific Research (C)
自閉スペクトラム症者の対人関係能力を高める治療プログラムの検討
考虑制定治疗计划以提高自闭症谱系障碍患者的人际交往能力
- 批准号:
24K13759 - 财政年份:2024
- 资助金额:
$ 61.82万 - 项目类别:
Grant-in-Aid for Scientific Research (C)
非認知能力に対する運動・スポーツの関連メカニズムの解明:前向きコホート研究
阐明运动和运动对非认知能力的相关机制:一项前瞻性队列研究
- 批准号:
24K14604 - 财政年份:2024
- 资助金额:
$ 61.82万 - 项目类别:
Grant-in-Aid for Scientific Research (C)
様々な大動脈形状を対象とした繰返し可能な圧力と応力の変化シミュレーション
针对各种主动脉几何形状的可重复压力和应力变化模拟
- 批准号:
24K14971 - 财政年份:2024
- 资助金额:
$ 61.82万 - 项目类别:
Grant-in-Aid for Scientific Research (C)