From ec3090662ca7acec93c0a39c3ab7a0af87722a1b Mon Sep 17 00:00:00 2001 From: Yuanzheng Song Date: Mon, 21 Feb 2022 17:16:30 +0800 Subject: [PATCH] fix README.md issue: #I4ULHL Signed-off-by: Yuanzheng Song --- README.en.md | 60 ++++++++++++++++++++++++++++-------- README.md | 60 ++++++++++++++++++++++++++++-------- figures/en-us_image_fwk.png | Bin 0 -> 20431 bytes figures/zh-cn_image_fwk.png | Bin 0 -> 20992 bytes 4 files changed, 94 insertions(+), 26 deletions(-) create mode 100644 figures/en-us_image_fwk.png create mode 100644 figures/zh-cn_image_fwk.png diff --git a/README.en.md b/README.en.md index acde9b4..af6dead 100644 --- a/README.en.md +++ b/README.en.md @@ -1,37 +1,71 @@ -# The Part of Memory System Library +# The Part of Memory Base Libraries - [Introduction](#section_introduction) +- [Architecture](#section_architecture) - [Directory Structure](#section_catalogue) -- [Memory System Library](#section_libraries) +- [Memory Base Libraries](#section_libraries) - [libdmabufheap system library](#section_libdmabufheap) + - [libmeminfo system library (in planning)](#section_libmeminfo) + - [libmemleak system library (in planning)](#section_libmemleak) + - [libpurgeable system library (in planning)](#section_libpurgeable) + - [libspeculative system library (in planning)](#section_libspeculative) - [Usage Guidelines](#section_usage) +- [Repositories Involved](#section_projects) ## Introduction -The part of *Memory system Library* belongs to the subsystem named *Utils Subsystem*. It provides the system library for upper-layer services to operate memory, ensuring the stability of upper-layer services. +The part of *Memory base libraries* belongs to the subsystem named *Utils Subsystem*. It provides the system library for upper-layer services to operate memory, ensuring the stability of upper-layer services. + +## Architecture + +![](figures/en-us_image_fwk.png) + +**Figure 1** Memory Base Libraries architecture ## Directory Structure ``` /utils/memory -└── libdmabufheap # DMA memory allocation system library -    ├── BUILD.gn -    ├── include # DMA memory allocation system library header directory -    │   └── dmabuf_alloc.h -    ├── src # DMA memory allocation system library source directory -    │   └── dmabuf_alloc.c -    └── test # DMA memory allocation system library usecase directory +├── libdmabufheap # DMA (Direct Memory Access) memory allocation system library +│   ├── include # DMA memory allocation system library header directory +│   ├── src # DMA memory allocation system library source directory +│   └── test # DMA memory allocation system library usecase directory +├── libmeminfo # Memory footprint management library +├── libmemleak # Memory leak detection library +├── libpurgeable # Purgeable memory management library +└── libspeculative # Speculative memory management library ``` -## Memory System Libraries -The memory system library is a component of the system library that integrates memory operations and manages them in a unified manner. +## Memory Base Libraries + +*Memory base libraries* is a component of the system library that integrates memory operations and manages them in a unified manner. ### libdmabufheap system library The memory system library provides interfaces for services to allocate and share shared memory. By allocating and sharing memory between hardware devices and user space, zero-copy memory between devices and processes is implemented to improve execution efficiency. +### libmeminfo system library (in planning) + +It provides interfaces for memory usage queries. It is mainly used by memory footprint management service(hidumper) and low-memory killing service(lmks). + +### libmemleak system library (in planning) + +It cooperates with malloc_debug to detect memory leaks of native heap. + +### libpurgeable system library (in planning) + +It provides management interfaces for discardable-type memory. It is mainly used by graphics and image codec libraries. + +### libspeculative system library (in planning) + +It provides management interfaces for speculative-type memory. It is mainly used by system services for data pre-loading. + ## Usage Guidelines System developers can add or remove this part by configuring the product definition JSON file under **/productdefine/common/products** to enable or disable this part: -` "utils:utils_memory":{} ` \ No newline at end of file +` "utils:utils_memory":{} ` + +## Repositories Involved + +[utils](https://gitee.com/openharmony/utils) \ No newline at end of file diff --git a/README.md b/README.md index 0df06af..3f5d21d 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,72 @@ -# 内存系统库 +# 内存基础库部件 - [简介](#section_introduction) +- [部件架构图](#section_architecture) - [目录](#section_catalogue) -- [内存系统库](#section_libraries) +- [内存基础库](#section_libraries) - [libdmabufheap系统库](#section_libdmabufheap) + - [libmeminfo系统库(规划)](#section_libmeminfo) + - [libmemleak系统库(规划)](#section_libmemleak) + - [libpurgeable系统库(规划)](#section_libpurgeable) + - [libspeculative系统库(规划)](#section_libspeculative) - [使用说明](#section_usage) +- [相关仓](#section_projects) ## 简介 -内存系统库部件位于公共基础库子系统中,为上层业务提供对应的操作内存的系统库,保证上层业务的稳定性。 +内存基础库部件位于公共基础库子系统中,为上层业务提供对应的操作内存的系统库,保证上层业务的稳定性。 + +## 部件架构图 + +![](figures/zh-cn_image_fwk.png) + +**图1** 内存基础库部件架构图 ## 目录 ``` /utils/memory -└── libdmabufheap # DMA内存分配链接库 -    ├── BUILD.gn -    ├── include # DMA内存分配链接库头文件目录 -    │   └── dmabuf_alloc.h -    ├── src # DMA内存分配链接库源代码目录 -    │   └── dmabuf_alloc.c -    └── test # DMA内存分配链接库自测用例目录 +├── libdmabufheap # DMA (Direct Memory Access) 内存分配链接库 +│   ├── include # DMA内存分配链接库头文件目录 +│   ├── src # DMA内存分配链接库源代码目录 +│   └── test # DMA内存分配链接库自测用例目录 +├── libmeminfo # 内存占用查询库 +├── libmemleak # 内存泄漏检测库 +├── libpurgeable # 可丢弃类型内存管理库 +└── libspeculative # 投机类型内存管理库 ``` -## 内存系统库 -内存系统库是集成内存操作的系统库的部件,对内存操作的系统库进行统一管理。 +## 内存基础库 + +内存基础库是集成内存操作的系统库的部件,对内存操作的系统库进行统一管理。 ### libdmabufheap系统库 为业务提供分配共享内存的接口,通过在硬件设备和用户空间之间分配和共享内存,实现 设备、进程间零拷贝内存,提升执行效率。 +### libmeminfo系统库(规划) + +提供内存占用查询接口。主要提供给内存占用维测(hidumper)、低内存查杀服务(lmks)使用。 + +### libmemleak系统库(规划) + +配合malloc_debug做native heap内存泄漏检测。 + +### libpurgeable系统库(规划) + +提供可丢弃类型内存的管理接口。主要提供给多媒体业务图形图像编解码库使用。 + +### libspeculative系统库(规划) + +提供投机类型内存管理接口。主要提供给系统服务使用,用于缓存预读。 + ## 使用说明 系统开发者可以通过配置productdefine/common/products下的产品定义json文件,增加或移除本部件,来启用或停用本部件。 -` "utils:utils_memory":{} ` \ No newline at end of file +` "utils:utils_memory":{} ` + +## 相关仓 + +[公共基础库子系统](https://gitee.com/openharmony/utils) \ No newline at end of file diff --git a/figures/en-us_image_fwk.png b/figures/en-us_image_fwk.png new file mode 100644 index 0000000000000000000000000000000000000000..b1d0e4711ad2729334fe151c4c0f4ecf37b7d39a GIT binary patch literal 20431 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

w{-OWl%%is?(ltH3p?)Py6 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