前言
从18年毕业至今,就职过两家公司,大大小小项目做了几个,非常感谢我的两位老大,在我的android成长路上给予我很多指导,亦师亦友的关系。
从年前至今参加面试了很多公司,也收到了几家巨头的offer,还有其他公司的。总结下经验,也是对过去的一个回顾和总结吧。
Scudo是一种用户模式分配器,旨在提供额外的mitigation 来防止堆的漏洞的方法,同时保持良好的性能。它是开源的,是LLVM的editor-rt项目的一部分。
Scudo当前是Fuchsia中的默认分配器,已在Android的某些组件中启用,并在某些Google生产服务中使用。虽然最初是在sanitizer_common的某些组件之上实现的,但现在它被重写为独立的,而无需依赖其他编译器-rt部件,从而易于使用(以及其他性能和安全性优势)。
Scudo由以下组件组成:
Primary 分配器
这是一个快速分配器,用于处理较小的请求(可在编译时配置)。它是“隔离的”,例如:相同大小的块最终位于相同的存储区域中,并与其他区域分隔开(64位的分隔更强,其中专门为主要区域保留了存储区域);主节点分配的块被随机分配以避免可预测的地址序列(请注意,大小越大,地址彼此之间的可预测性就越高)。
Secondary 分配器
包装平台内存分配原语,因此速度较慢,用于服务较大的分配。辅助服务器完成的分配被保护页面包围;
本地缓存<