< 返回版块

LacneQin 发表于 2020-01-20 23:18

Tags:rust

通过全局分配器对不安全的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

日报订阅地址:

独立日报订阅地址:

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页