什么是“BSD风格的内存管理”?

什么是“BSD风格的内存管理”?

我正在运行 Arch Linux。在 中/usr/include/sys/mman.h,它说:

/* Definitions for BSD-style memory management.
   Copyright (C) 1994-2019 Free Software Foundation, Inc.
.
.
.

这是什么意思?与其他风格相比,“BSD 风格”内存管理有何特别之处?

答案1

我认为区别在于 C 标准内存管理(mallocfreeETC。,其下降自Unix v6alloc) 和内存映射 I/O,它通过 BSD 进入 Unix 家族(虽然它首先在 SunOS 中实现,显然是在 4.2BSD 中记录后但没有在那里实现;最终 BSD 实现来自马赫)。与后者相关的函数都声明在sys/mman.h

答案2

历史上,BSD 通过 mmap() 等提供了内存映射 I/O,而 System V 则引入了共享内存段作为新 IPC 包(shmget() 等)的一部分。

从功能上来说,区别在于内存映射 I/O 由文件支持,而共享段则不然。创建进程退出后,共享段仍保持分配状态,这就是它们位于 IPC 包中的原因。在多线程出现之前,如果需要使用多个 CPU,常见的编程模型是启动一堆映射到同一共享段的进程。

从技术上讲,POSIX 不需要 mmap 来支持匿名映射,这与共享段类似。实际上,当前的每个实现都支持它们,这使其成为一个有争议的问题。 “BSD 风格”占据了主导地位,成为事实上的标准。

相关内容