前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Rust日报】 2020-01-20 通过全局分配器对不安全的Rust代码进行杀毒

【Rust日报】 2020-01-20 通过全局分配器对不安全的Rust代码进行杀毒

作者头像
MikeLoveRust
发布2020-02-20 10:22:02
5250
发布2020-02-20 10:22:02
举报
文章被收录于专栏: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行代码。这种复杂性在内核代码中通常是不希望的,因为单个错误会导致严重的安全漏洞。幸运的是,与用户空间代码相比,内核代码的分配模式通常要简单得多,因此相对简单的分配器设计通常就足够了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 通过全局分配器对不安全的Rust代码进行杀毒
  • ttyplot-rs:绘制从stdin到tty终端的流数据
  • 在Rust中编写操作系统:分配器设计
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档