现在的计算机系统越来越复杂,从硬件到我们运行的程序(进程),内存管理被分为不同的几个层次,不同的操作系统,其设计各有特色。大致上,可以分为以下几
个层次:
[硬件] --> [虚拟内存系统] --> [系统级的Heap管理] -->
[进程级的Heap管理(libc)] --> [我们的进程malloc/free]
对于偏左的几个层次,我们可以暂时不了解,
但看看 libc 中 malloc/free
的实现,还是很有意思的,不过现在的系统(硬件/操作系统)都无比复杂,直接阅读最新的代码,一头扎入最复杂的逻辑中,对我们理解其基本原理,实在没有益
处。
去繁就简,我们看看早期 BSD 的一个实现。参看最早的一个版本 v1.1
实
现很漂亮,代码很少,但可以看到一个 allocator 看得见摸得找的"高效"实现,里面的技巧,SGI STL allocator 也在使用。
阅读(935) | 评论(0) | 转发(0) |