代码拉取完成,页面将自动刷新
描述
现代的 Linux 操作系统中的用户态程序均基于 Virtual Address。不用用户态程序的 Virtual Address 相互独立,即用户态程序独占各自的 Virtual Address Space。当两个或者多个进程进行进程间通信时,通过基于 share memory 的 IPC 机制可以将不同 Virtual Address Space 中的 Virtual Address 指向相同的 physical memory。但 App1 中 “共享内存” 所占用的 Virtual Address 和 App2 中 “共享内存” 所占用 的 Virtual Address 可能并不相同。试想有一个 ‘SVA engine’,通过 ‘SVA engine’ 提供的操作接口,将多个 APP 挂载到 ‘SVA engine’ 上。挂载到 ‘SVA engine’ 上同一个 ‘channel’ 的 APP 将共享 Virtual Address Space 中的一段或者多段虚拟地址。
难度 高
导师 @liliang
联系方式 liliang6@me.com
产出标准
独立的内核模块,可支持 Linux 进程共享(分段的)虚拟地址空间;
对 Linux 内核尽量小的侵入式改动;
2 个以上的 Linux demo app,可以直接通过 SVA 共享数据结构;
技术要求
基于 openEuler 内核
基本 ARM64 体系架构
独立的内核模块实现
支持 4 个以上的进程共享分段的虚拟地址空间
支持进程动态分享虚拟地址空间