通过全局分配器对不安全的Rust代码进行杀毒
Checkers是Rust的简单分配清理工具。它通过全局分配器插入,可以在集成测试过程中检查不安全的Rust。由于它是通过全局分配器插入的,因此它不需要任何其他依赖关系,并且可以在所有平台上使用,但它可以验证的内容受到更多限制。
它可以检查以下内容:
- 双重释放。
- 内存泄漏。
- 释放未分配的区域。
- 仅释放分配的部分区域。
- 释放布局不匹配的区域。
- 基础分配器产生的区域遵守所请求的布局。即大小和对齐方式。
- 有关内存使用的详细信息。
- 其他用户定义的条件(请参阅test)。
目前尚未完成的功能:
- 测试多线程代码。(由于分配器是全局的,因此很难为每个测试用例确定状态范围。)
- 检测越界访问。
前往GitHub仓库详细了解项目。
ttyplot-rs:绘制从stdin到tty终端的流数据
ttyplot-rs能够绘制从stdin到tty终端的流数据。对于显示从串行端口或长期运行的管道传输的数据很有用。
将流程中的数据传输到中ttyplot-rs
。按ctrl+c退出。
项目详细开源代码前往GitHub仓库查看。
在Rust中编写操作系统:分配器设计
此篇文章解释了如何从头开始实现堆分配器。它提出并讨论了不同的分配器设计,包括凹凸分配,链表分配和固定大小的块分配。对于这三种设计中的每一种,我们将创建一个可用于内核的基本实现。
分配器的职责是管理可用的堆内存。它需要在alloc
调用时返回未使用的内存,并跟踪释放的内存,dealloc
以便再次使用它。最重要的是,它绝不能分发已经在其他地方使用的内存,因为这会导致不确定的行为。
除了正确性之外,还有许多次要设计目标。例如,分配器应有效地利用可用内存并使碎片减少。此外,它对于并发应用程序应能很好地工作,并可以扩展到任意数量的处理器。为了获得最佳性能,它甚至可以针对CPU缓存优化内存布局,以提高缓存位置并避免错误共享。
这些要求会使好的分配器非常复杂。例如,jemalloc具有超过30.000行代码。这种复杂性在内核代码中通常是不希望的,因为单个错误会导致严重的安全漏洞。幸运的是,与用户空间代码相比,内核代码的分配模式通常要简单得多,因此相对简单的分配器设计通常就足够了。
前往博客文档了解更多。
From 日报小组 @Lance
日报订阅地址:
独立日报订阅地址:
社区学习交流平台订阅:
评论区
写评论还没有评论