自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 unsafe rust

摘要:Rust的所有权类型系统对如何访问和共享内存位置实施了严格的约束。这个原则允许编译器静态地防止内存错误、数据竞争、通过混迭产生的无意副作用以及其他在传统命令式程序中经常发生的错误。然而,Rust的类型系统所施加的限制使得实现某些设计变得困难或不可能,例如需要别名的数据结构(例如双链表和共享缓存)。为了解决这个限制,Rust允许将代码块声明为不安全的,从而免除类型系统的某些限制,例如,操作c风格的原始指针。确保不安全代码的安全性是程序员的责任。然而,Rust语言的一个重要假设(我们称之为Rust假设)是

2023-04-25 09:37:18 306

原创 虚拟内存管理

vvv

2022-09-29 17:56:55 838

原创 多处理器操作系统实现中存储器和通信的二重性

kkk

2022-08-29 15:22:52 469

原创 Memory-Safety Challenge Considered Solved? An In-Depth Study with All Rust CVEs

发发发发发发

2022-08-09 15:40:41 224

原创 【无标题】

内存战争摘要:在用C或c++等低级语言编写的软件中,内存破坏漏洞是计算机安全中最古老的问题之一。这些语言缺乏安全性,因此攻击者可以改变程序的行为,或者通过劫持程序的控制流来完全控制程序。这个问题已经存在了30多年,已经提出了大量潜在的解决方案,但内存破坏攻击仍然构成严重的威胁。现实世界的漏洞显示,所有当前部署的保护措施都可以被击败。本文通过描述在当今系统上成功的攻击来阐明这一问题的主要原因。通过建立内存破坏攻击的通用模型,对现有的各种保护技术的知识进行了系统化。使用这个模型,我们展示了哪些策略可以阻止

2022-05-13 19:00:57 663

原创 Rust的安全系统编程

Rust的安全系统编程在编程语言设计中,两种看似不可调和的需求之间存在着长期的紧张关系。˲安全。我们需要静态地排除大类错误的强类型系统。我们想要自动内存管理。我们需要数据封装,这样我们就可以对对象的私有表示强制不变量,并确保它们不会被不受信任的代码破坏。控制。至少对于“系统编程”应用程序(如Web浏览器、操作系统或游戏引擎)来说,性能或资源约束是主要关注的问题,我们希望确定数据的字节级表示。我们希望使用低级编程技术优化程序的时间和空间使用。我们希望在需要的时候能够接触到“裸金属”。可悲的是,就像传统

2022-04-26 17:08:36 1611

原创 An Open Operating System for a Single-User Machine翻译

An Open Operating System for a Single-User Machine摘要描述了单用户操作系统的文件系统和模块化。主要的兴趣点是系统的开放性,它在自身和用户程序之间没有明确的界限,以及用来使系统健壮的技术,1介绍在过去的几年中,一种关于操作系统的思考方式已经被广泛接受。根据这种观点,操作系统的功能是提供一种子宫(或者,如果你喜欢,一个虚拟机),用户或她的程序可以在其中生存和开发,安全地与外部世界的严酷现实隔离[2,5,13]。事实上,作者之一是这种“封闭”系统[12]的

2022-03-11 09:09:06 104

原创 SafeDrop

摘要Rust是一种新兴的编程语言,旨在防止内存安全漏洞。然而,Rust目前的设计也带来了副作用,可能会增加内存安全问题的风险。特别是,它使用OBRM(基于所有权的资源管理),并在不使用垃圾收集器的情况下强制自动回收未使用的资源。因此,它可能错误地释放回收的内存,并导致free -after-free或double-free问题。在本文中,我们研究了无效内存回收问题,并提出了一种静态路径敏感的数据流分析方法SafeDrop来检测此类错误。我们的方法通过遍历控制流图和提取每个数据流的所有别名来迭代分析Rust

2022-01-17 16:46:08 387

原创 AC:本地语言的可组合异步IO论文翻译

AC:本地语言的可组合异步IO摘要:本文介绍了AC,一种在C/ c++等本地语言中用于可组合异步IO的语言构造。与传统的同步IO接口不同,AC允许线程发出多个IO请求,以便并发地对它们进行服务,因此长延迟操作可以与计算重叠。与传统的异步IO接口不同,AC保留了一种顺序的编程风格,不需要代码使用多个线程,也不需要代码被“栈分解”成回调链。AC提供了一个async语句来确定IO操作并发发出的机会,一个do…finish块来等待任何封装的异步工作完成,以及一个cancel语句来请求取消封装的do…finish

2021-10-11 10:36:20 339

原创 rustconf deadlock

会议记录chapter 1 problems之前有标准库,它需要一些同步原语,最重要的就是互斥量,通常是对于某些东西的互斥访问,例如数据或某些其他资源,以便在威胁之间安全的共享它,所以互斥锁是一种在线程间共享某些东西的方法。原语比互斥锁多,这些现在不重要,重要的是自己实现原语是困难的,锁实现中的错误通常非常微妙,很难找到,他们的错误是非常低级甚至有时特定于架构的代码之间的复杂交互。在linux Mac 和其他unix上实现了pthread的一部分——pthread_mutex_t所以鉴于他们的实现

2021-09-28 11:13:32 266

原创 rust ffi理解

外部函数接口介绍本指南将使用snappy压缩/解压库来介绍如何为外部代码编写绑定,Rust目前还不能直接调用c++库,但是snappy包含了一个C接口(详见snappy-c.h)。(目前不太了解什么叫做编写绑定?)关于libc的说明其中许多示例使用libc crate,它为C类型提供了各种类型定义。如果你正在尝试这些例子,你需要将libc添加到你的Cargo.toml:...

2021-09-27 09:56:09 940

原创 Rust中的系统编程:超越安全

摘要Rust是一种新的系统编程语言,它为c提供了一种实用而安全的替代方案。Rust的独特之处在于,它在没有运行时开销的情况下加强了安全性,最重要的是,没有垃圾收集的开销。虽然零成本安全本身就很显著,但我们认为Rust的超级力量超越了安全。特别是,Rust的线性类型系统实现了传统语言(包括安全语言和不安全语言)无法有效实现的功能,这极大地提高了系统软件的安全性和可靠性。我们展示了这类功能的三个例子:零拷贝软件故障隔离、高效静态信息流分析和自动检查点。虽然这些能力长期以来一直是系统研究的焦点,但它们的实际应用

2021-07-15 11:42:23 716

原创 Recovering Device Driver翻译

摘要本文提出了一种新的机制,使应用程序能够在设备驱动程序失败时正确运行。因为设备驱动程序是大多数系统的主要故障部件,减少驱动程序引起的故障大大提高了整体可靠性。早期的工作表明,操作系统可以经受住驱动程序的故障,但是依赖于它们的应用程序却不能。因此,虽然操作系统的可靠性得到了极大的提高,但应用程序的可靠性通常没有得到提高。为了纠正这种情况,我们引入了一种新的操作系统机制,称为影子驱动程序。影子驱动程序监视设备驱动程序,并从驱动程序故障中透明地恢复。此外,它还承担了恢复过程中出现故障的驱动程序的角色。通过这

2021-06-16 19:11:33 145

原创 Inter-process communication in a safe kernel论文翻译

Inter-process communication in a safe kernel摘要:传统的操作系统遵循单片设计,在共享地址空间中执行所有内核子系统,从而以牺牲隔离和安全为代价获得良好的性能。微内核通过将操作系统组件分离到单独的地址空间来改进这种设计,但由于交换地址空间的成本很高,过去一直非常昂贵。RedLeaf是一个新的操作系统,它依赖于Rust编程语言的安全性,而不是硬件机制的隔离。RedLeaf在相同的硬件地址空间中运行所有的操作系统内核子系统,并通过语言安全和特殊通信原语的组合来实现隔离

2021-06-07 15:37:59 184 1

原创 dafny guide

介绍Dafny 中的以下注释片段表示数组的每个元素都是严格正的:forall k: int :: 0 <= k < a.Length ==> 0 < a[k] 这表示对于k作为数组索引的所有整数,该索引处的值大于零。MethodsDafny 在许多方面类似于典型的命令式编程语言。有方法、变量、类型、循环、if 语句、数组、整数等等。任何 Dafny 程序的基本单元之一是方法。方法是一段命令式的、可执行的代码。在其他语言中,它们可能被称为过程或函数,但在 Dafny 中,术

2021-06-02 17:03:38 1141

原创 RedLeaf

RedLeaf:安全操作系统中的隔离和通信摘要:RedLeaf是Rust公司为探索语言安全对操作系统组织的影响而开发的全新操作系统。与商品系统相比,RedLeaf不依赖于硬件地址空间进行隔离,而是只使用Rust的类型和内存安全语言。脱离昂贵的硬件隔离机制,我们可以探索采用轻量级细粒度隔离的系统的设计空间。我们开发了一个基于轻量级语言的隔离域的新抽象,它提供了一个信息隐藏和故障隔离单元。域可以动态加载和干净地终止,也就是说,一个域中的错误不会影响其他域的执行。基于RedLeaf隔离机制,我们演示了实现端到端

2021-05-24 21:06:45 942

原创 mach ipc 学习

mach ipcmach kernel提供面向消息的,基于权能的进程间通信。进程间通信(IPC)原语有效地支持许多不同风格的交互,包括远程过程调用(RPC)、面向对象的分布式编程、数据流和发送大量数据。IPC原语操作于三个抽象:消息、端口和端口集。用户任务通过IPC原语访问所有其他内核服务和抽象。消息原语让任务发送和接收消息。任务向端口发送消息。发送到端口的消息被可靠地传递(消息可能不会丢失),并按照发送的顺序接收。消息包含一个固定大小的消息头和消息头后面可变数量的类型化数据。报头描述消息的目的地和大

2021-05-11 22:58:40 594

原创 天桥:微内核快速安全的进程间通信

天桥:微内核快速安全的进程间通信摘要:近年来,人们对微核进行了广泛的研究几十年了。但是,进程间通信仍然是运行时开销的主要因素,细粒度隔离通常会导致过多的IPC。ipc的主要开销来自于内核的参与,包括模式切换和地址空间更改的直接成本,以及由于处理器结构的污染而产生的间接成本。本文介绍了一种为微内核同步IPC而设计和优化的新型通信设备SkyBridge。SkyBridge在通信过程中不需要kernels的参与,它允许进程直接切换到目标进程的虚拟地址空间并调用目标函数。SkyBridge保留了传统的虚拟地址

2021-04-01 21:14:08 1064

原创 无线传感器网络定位问题的大象群优化算法

无线传感器网络定位问题的大象群优化算法摘要提出了一种用于解决无线传感器网络定位问题的大象群优化算法。EHO是一种相对较新的群体智能元启发式算法,在处理NP-hard问题时取得了很好的效果。无线传感器网络中的节点定位问题属于NP-hard优化问题,是该领域最重要的挑战之一。节点定位的目标是为监测区域内随机部署的位置未知的传感器节点设置地理坐标。节点定位需要报告事件的起源、协助传感器的组查询、路由和网络覆盖。对于节点定位问题,EHO算法的实现在文献中还没有发现。在本文的实验部分,我们与其他最先进的算法在同一

2021-03-26 00:28:19 1773 4

原创 For a Microkernel, a Big Lock Is Fine

For a Microkernel, a Big Lock Is Fine摘要众所周知,高端的可伸缩性需要细粒度的锁定,对于Linux这样的系统,即使在中等核心数的情况下,大的锁也会降低性能。然而,我们认为大锁对于设计用于运行在紧密耦合内核(共享缓存)上的微内核来说可能足够细粒度,就像设计良好的微内核的典型短系统调用一样,在实际负载下锁争用仍然很低。1.介绍为了同步访问共享内核状态,最简单的方法是使用大内核锁(BKL),该锁在内核进入时使用,直到内核退出才释放。由于争用,即使在中等处理器数量的情况下

2021-03-18 23:07:55 202

原创 操作系统—微内核通信

操作系统—微内核通信在微内核架构下,一个应用程序获取系统服务通常需要通过进程间通信的方式。Mach:早期的微内核进程间通信设计mach通过两种基本的抽象—端口和消息,设计和实现一种间接通信ipc。端口设计:mach将端口分为发送者端口和接受者端口,mach的通信不是指定的,而是发送者从发送端口发送消息,然后接收者可以从接受端口去拿消息,发送端口可以有多个,但接受端口只能有一个。消息设计:mach传递消息支持传递端口,比如进程a与进程b通信,进程a也与进程c通信,那么进程a可以发送给进程b,进程

2021-03-17 23:06:26 1165 5

原创 sel4线程和执行

sel4 线程和执行线程seL4提供了表示执行上下文和管理处理器时间的线程。在seL4中,线程由其线程控制块对象(TCB)表示。每个TCB都有一个相关的CSpace(见第3章)和VSpace(见第7章),它们可以被其他线程共享。TCB还可以有一个IPC缓冲区(见第4章),用于在IPC或内核对象调用期间传递不适合体系结构定义的消息寄存器的额外参数。虽然一个线程不需要有IPC缓冲区,但是它不能执行大多数内核调用,因为它们需要cap传输。每个线程只属于一个安全域(见6.3节)。线程创建与其他对象一样,tc

2021-03-10 22:16:06 842

原创 迁移线程模型

将Mach 3.0升级为迁移线程模型摘要我们已经修改了Mach3.0,将跨域远程过程调用(RPC)视为一个单独的实体,而不是一系列消息传递操作。随着RPC的提升,我们通过更改线程模型来改进RPC期间的控制传输。与大多数操作系统一样,Mach将线程视为与单个任务静态关联的,RPC中涉及两个线程。另一种模型是迁移线程,在RPC期间,单个线程抽象在具有逻辑控制流的任务之间移动,并且“服务器”代码被被动地执行。我们兼容地用迁移线程替换了Mach的静态线程,试图将操作系统设计和实现的这方面隔离开来。新系统为线程

2021-02-18 15:27:58 775

原创 sel4 手册总结之介绍与内核服务和对象

1.介绍SEL4微内核是一个操作系统内核,被设计成在各种应用领域中为系统提供安全、安全和可靠的基础。作为一个微内核,它为应用程序提供了少量的服务,例如创建和管理虚拟地址空间,线程的抽象,进程间通信的抽象。内核的小尺寸也有助于对最坏情况下的执行时间进行完整而合理的分析。本手册从用户的角度描述sel4内核的API。本文首先简要概述了seL4微内核设计,然后介绍了seL4内核向用户空间公开的高级API。2.内核服务和对象微核提供了有限数量的服务原语,更多的复杂服务可以作为这些原语之上的应用程序来实现

2021-01-18 17:38:08 3261 2

原创 EROS快速能力系统论文总结

EROS:a fast capability system摘要1.EROS是一种基于能力的操作系统,用于使用单级存储模型的商品处理器。(啥叫单级存储模型?)2.单级存储的持久性对应用程序是透明的。3.支持透明持久性和基于能力的体系结构的性能后果通常被认为是负面的。4.EROS基本操作(ipc)与传统系统成本基本相同。5.EROS系统通过将精心选择的抽象对象与这些对象的缓存技术相耦合来实现其性能。6.对象(进程、节点和页面)得到了传统硬件的良好支持,减少了功能开销。7.这些对象的软件管理的缓存

2021-01-13 17:59:56 856

原创 操作系统—同步原语

同步原语原来我们都用的是单核的CPU,但是单核的性能现在已经很难有突破了,所以开始在一个CPU中添加多个物理核。但是原来的应用程序都是为单核设计的,在多核运行无法体现多核的性能,为了更充分的使用多核,应用程序需要将待处理的数据进行划分,从而能够在同一时间分配任务到多个核心上并行处理,利用更短的时间完成计算。然而并行处理同一任务意味着对共享资源的并发访问,为了保证共享资源状态的正确性,需要正确地在这些子任务之间进行同步。看下面这个例子生产者不断生成数据放到共享缓冲区中,消费者从缓冲区拿数据,但是他需

2021-01-07 20:49:35 3079 6

原创 CODOMs

CODOMs——论文总结摘要1.当前软件系统既不安全也不可靠。2.当前硬件提供的基本软件保护原语迫使系统在同一保护域中运行许多不可信的软件组件(例如过程,库,插件,模块),如果不是这样,需要进行地址切换,但是地址切换会导致性能的下降。3.本文提出了codoms(以代码为中心的内存域),这是一种新颖的体系结构,它可以在组件之间提供更细粒度的隔离,并可以高效率运行,零运行开销。4.在周期准确的全系统x86模拟器中实现codom表明,在正确的硬件支持下,细粒度的保护和性能可以和平共存。一.介绍复杂的

2021-01-03 21:26:33 801 2

原创 XPC论文总结

XPC: Architectural Support for Secure and Efficient Cross Process Call 论文总结摘要1.微内核有很多有趣的特性,例如安全性、容错、模块化、可定制性。2.IPC是影响操作系统性能的主要因素。3.IPC在例如Android Linux等单片内核中也发挥着重要作用,移动应用经常通过IPC与大量用户级服务进行通信。4.以前的软件优化通常无法绕过负责域切换和消息复制/重映射的内核。5.硬件解决方案(如标记内存或功能)为了隔离而替换页表,

2020-12-14 16:55:17 2873

原创 Harmonzing Performance and Isolation in Microkernels论文阅读

Harmonizing Performance and Isolation in Microkernels with Efficient Intra-kernel Isolation and Communication论文阅读总结一.摘要本文提出了一个新的设计方案UnderBridge机制,在运行时UnderBridge在用户空间和内核空间移动操作系统组件。本文还对内核空间的英特尔用户空间内存保护密钥(PKU)进行了改造,以有效实现隔离,并且设计了一种跨操作系统的快速IPC机制。...

2020-12-05 22:49:36 620

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除