"BSD 스타일 메모리 관리"란 무엇입니까?

"BSD 스타일 메모리 관리"란 무엇입니까?

저는 아치 리눅스를 사용하고 있습니다. 에서는 /usr/include/sys/mman.h다음과 같이 말합니다.

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

무슨 뜻이에요? 다른 스타일과 비교하여 "BSD 스타일" 메모리 관리의 특별한 점은 무엇입니까?

답변1

차이점은 C 표준 메모리 관리에 있다고 생각합니다(malloc, free등., 이는 다음에서 감소합니다.유닉스 v6 alloc) 그리고메모리 매핑된 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 스타일"이 자리를 잡고 사실상의 표준이 되었습니다.

관련 정보