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