news 2026/5/24 0:01:21

附录 B:术语表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
附录 B:术语表

本术语表面向“从 MM 到 HMM”专栏阅读过程中的快速查阅。它不是内核 API 手册,而是把文章中反复出现的概念放到同一张地图上:先给出直观含义,再说明它在 Linux MM/HMM 语境里的作用。

建议阅读方式:

  • 初读专栏时,把它当作“遇到缩写就查一下”的速查表;
  • 读 HMM、迁移、DRM SVM 章节时,重点查ZONE_DEVICEdev_pagemapmmu_interval_notifierhmm_rangemigrate_vmadevice private entry
  • 做驱动接入时,重点查dev_private_ownerdrm_gpusvm_rangedrm_pagemapDMA mappinginvalidateretry

1. 地址空间与 VMA

术语英文/代码简明解释
虚拟地址Virtual Address / VA进程看到的地址,不直接等于物理内存地址。CPU 通过页表把 VA 翻译成 PA。
物理地址Physical Address / PACPU 物理地址空间中的地址,通常由内存控制器、平台固件、设备 BAR 等共同定义。
总线地址Bus Address / DMA Address / IOVA设备发起 DMA 时使用的地址。可能等于物理地址,也可能是 IOMMU 翻译后的 IOVA。
进程地址空间Process Address Space一个进程拥有的用户虚拟地址布局,包括代码、堆、栈、mmap 区域等。
mm_structstruct mm_struct描述进程用户地址空间的核心结构,保存 VMA、页表、锁和统计信息。
VMAstruct vm_area_struct一段连续虚拟地址范围,带有权限、映射类型和文件/匿名页信息。
vm_flagsVMA flags描述 VMA 权限和属性,如VM_READVM_WRITEVM_SHAREDVM_HUGETLB
mmap_lockmmap_read_lock()/mmap_write_lock()保护 VMA 树和地址空间布局的读写锁。
Maple Treemm->mm_mt现代 Linux 用于管理 VMA 的树结构,替代旧红黑树方案。
用户态映射User Mapping用户进程通过mmap()、匿名分配、文件映射等建立的 VA 区间。
匿名映射Anonymous Mapping没有文件后端的内存,例如 heap、anonymous mmap。
文件映射File-backed MappingVMA 背后有文件页缓存作为后端。
COWCopy-On-Write写时复制。多个映射共享同一页,第一次写入时复制新页。
mprotect()Memory Protection Change修改 VMA 权限,可能触发页表和 MMU notifier invalidation。
munmap()Unmap User Range删除用户虚拟地址范围,触发页表拆除和 notifier。
mremap()Remap User Range移动或扩展已有映射,改变 VA 结构。

2. page、folio 与 PFN

术语英文/代码简明解释
PageLinux 内存管理的基本物理单位,常见大小为 4 KiB。
struct pagePage Descriptor内核描述一个物理页帧的元数据结构。
Foliostruct folio一组物理连续、语义上一起管理的页,减少传统struct pageAPI 的歧义。
PFNPage Frame Number物理页帧号,通常是物理地址右移PAGE_SHIFT
pfn_to_page()PFN to page从 PFN 找到对应struct page
page_to_pfn()page to PFNstruct page反推 PFN。
memmapvmemmap/ memmap array保存所有struct page的线性映射区域。
引用计数Page Refcount记录页面被多少对象引用,防止仍在使用时释放。
page flagspage->flags描述页面状态,如 dirty、locked、LRU、zone、device page 类型等。
Page lockPage/Folio Lock保护单页或 folio 状态转换的锁。
compound pageCompound Page多个 base page 组成的复合页,用于 THP、HugeTLB、较大设备页等。
orderPage Order表示连续页数量为2^order
zero pageZero Page只读共享的全零页,常用于未写入的匿名映射。
LRULeast Recently UsedLinux 页面回收链表体系,用于决定哪些页可回收。
Dirty pageDirty Page内容已被修改但尚未写回后端的页面。
Page cachePage Cache文件数据在内存中的缓存。
GUPget_user_pages()获取用户页引用的机制,常用于 RDMA、IO、长期 pin。
long-term pinLong-term Page Pin长时间固定页面,可能阻碍迁移、回收、COW。

3. 页表与 PTE 编码

术语英文/代码简明解释
页表Page TableVA 到 PA/PFN 的多级映射结构。
PGD/P4D/PUD/PMD/PTEPage Table LevelsLinux 五级页表的各级 entry。
PTEPage Table Entry最底层页表项,通常映射一个 base page,也可编码特殊非 present entry。
present PTEPresent PTE表示当前 VA 有有效物理页映射。
non-present PTENon-present PTEPTE present 位不置位,但可能编码 swap、migration、device private 等状态。
writable PTEWritable PTE页表项允许写入。
young/accessedAccessed Bit硬件或内核标记页面近期被访问。
dirty bitDirty Bit标记页面被写过。
swap entrySwap PTE Encoding非 present PTE 中编码 swap 类型和 offset 的格式。
migration entryMigration Entry页面迁移期间临时放入页表的非 present entry,指向正在迁移的页。
device private entryDevice Private Entry表示页面数据在设备私有内存中,CPU 不能直接访问,需要 fault 回迁。
device exclusive entryDevice Exclusive Entry表示设备临时独占访问某个页,CPU PTE 被替换成特殊 entry。
soft-dirtySoft DirtyLinux 追踪用户页写入的一类软件标志/机制。
page table walkPage Walk遍历页表层级读取或修改 entry 的过程。
walk_page_range()Generic Page Walk API内核通用页表遍历框架,调用mm_walk_ops回调。
mm_walk_opsPage Walk Callbacks页表遍历回调集合,如pmd_entrypte_entrypte_hole
PTE holePage Table Hole某段 VA 没有页表或没有 PTE 映射。
HugeTLBHugeTLB Pages显式大页机制,使用 hugetlbfs 或特定 API 分配。
THPTransparent Huge Page透明大页,内核自动把连续小页合并为 PMD/PUD 级映射。
PMD 映射PMD-sized MappingPMD 级别直接映射大页,常见大小 2 MiB。
TLBTranslation Lookaside BufferCPU/GPU 缓存地址翻译结果的硬件结构。
TLB shootdownTLB Invalidation页表变化后让 CPU/GPU 丢弃旧翻译缓存。

4. 缺页、回收与迁移

术语英文/代码简明解释
缺页异常Page FaultCPU 访问 VA 时页表无法直接满足访问,引发异常进入内核处理。
handle_mm_fault()MM Fault HandlerLinux 处理用户态缺页的核心入口。
minor faultMinor Page Fault不需要从磁盘读取,只需建立页表或分配页面的 fault。
major faultMajor Page Fault需要从存储读取数据的 fault。
remote faultFAULT_FLAG_REMOTE不是当前 CPU 指令直接访问触发,而是由驱动/HMM 远程请求触发的 fault。
FAULT_FLAG_WRITEWrite Fault Flag表示 fault 需要写权限。
页面回收Page Reclaim内存紧张时回收可释放页面。
kswapdKernel Swap Daemon后台内存回收线程。
direct reclaimDirect Reclaim分配内存路径上同步执行回收。
swap outSwap-out把匿名页写到 swap,释放内存。
swap inSwap-in缺页时从 swap 读回页面。
页面迁移Page Migration把页面内容从一个物理页搬到另一个物理页,同时保持 VA 语义不变。
NUMA migrationNUMA Page Migration为了靠近 CPU 或内存节点而迁移系统内存页。
自动 NUMA 均衡AutoNUMA内核自动根据访问模式迁移页面到合适 NUMA 节点。
migrate_pages()Generic Page Migration通用页面迁移接口,常用于 NUMA、内存规整等。
migrate_vmaVMA-based Migration面向驱动的页面迁移框架,用于 CPU 内存和设备内存之间迁移。
migrate_vma_setup()Migration Phase 1收集并锁定源页,把 CPU PTE 替换成 migration entry。
migrate_vma_pages()Migration Phase 2提交页面元数据迁移,决定哪些页迁移成功。
migrate_vma_finalize()Migration Phase 3恢复或安装最终页表 entry,释放迁移临时状态。
MIGRATE_PFN_*Migration PFN Flagsmigrate_vma的 src/dst PFN 数组标志,描述 valid、write、migrate 等状态。
回迁Migrate Back to RAM把 device private page 迁回系统内存。
evictionEviction从设备内存驱逐数据,通常迁回系统内存以释放设备内存。

5. MMU Notifier 与同步协议

术语英文/代码简明解释
MMU notifiermmu_notifier当 CPU 页表变化时通知外部页表拥有者,如 KVM、GPU、RDMA。
interval notifiermmu_interval_notifier针对某个 VA 区间的 notifier,配合序列号读/重试协议。
invalidateInvalidationCPU 页表变化时,通知外部映射失效。
mmu_notifier_rangeInvalidation Range描述失效事件的地址范围、事件类型、owner、是否 blockable 等。
MMU_NOTIFY_UNMAPUnmap Event表示 VA 被解除映射。GPU/设备映射通常必须销毁。
MMU_NOTIFY_MIGRATEMigration Event表示页面迁移事件。驱动可通过 owner 判断是否是自己发起。
blockablemmu_notifier_range_blockable()表示 notifier 回调是否允许阻塞睡眠。
mmu_interval_read_begin()Read Begin读取 interval notifier 当前序列号,开始一次受保护的页表快照。
mmu_interval_read_retry()Read Retry Check在驱动锁下检查读取期间是否发生 invalidation。
mmu_interval_set_seq()Set Invalidate Sequencenotifier invalidate 回调中更新序列号,使并发 reader 重试。
notifier seqInvalidation Sequence用于判断 HMM PFN 快照是否过期的序列号。
driver update lockDriver Page Table Lock驱动保护设备页表更新的锁,和 notifier retry 配合使用。
retry loopRetry Loop页表变化、迁移、invalidation 竞态下反复重新获取状态的模式。
stale mappingStale Device Mapping设备页表或 DMA mapping 指向已经失效的 CPU 页表状态。

6. ZONE_DEVICE 与 dev_pagemap

术语英文/代码简明解释
ZONE_DEVICEDevice Memory ZoneLinux 为设备内存建立struct page的内存 zone。
dev_pagemapstruct dev_pagemap描述一段设备内存 PFN 范围、类型、owner 和回调的控制结构。
memremap_pages()Register Device Pages把设备物理地址范围注册为拥有struct page的 ZONE_DEVICE 页面。
pgmap->ownerDevice Page Owner标识设备页属于哪个驱动/设备实例。
dev_pagemap_opsDevice Page Operations设备页生命周期回调集合,如migrate_to_ramfolio_free
migrate_to_ramDevice Page Fault BackCPU 访问 device private page 时,把它迁回系统内存的回调。
folio_freeDevice Folio Free设备页释放时的回调。
MEMORY_DEVICE_PRIVATEDevice Private Memory设备私有内存,CPU 通常不能直接访问,需要迁移回 RAM。
MEMORY_DEVICE_COHERENTDevice Coherent Memory设备内存与 CPU coherent,CPU 可直接访问,但仍属于 ZONE_DEVICE。
MEMORY_DEVICE_FS_DAXFS DAX Device Memory文件系统 DAX 使用的设备内存类型。
device pageDevice-backedstruct page代表设备内存 PFN 的struct page
system pageSystem RAM Page普通系统内存页面。
backing pageFake Backing Storetest_hmm用普通系统页模拟设备私有内存内容的技巧。
zone_device_dataDevice Page Private Datastruct page中供设备页保存私有数据的字段。
device private ownerdev_private_ownerHMM range 中用于识别“本设备 device private page”的 owner。

7. HMM 核心术语

术语英文/代码简明解释
HMMHeterogeneous Memory ManagementLinux 支持 CPU 与设备共享虚拟地址和页面迁移的一组机制。
SVMShared Virtual MemoryCPU 和设备共享同一虚拟地址语义的编程模型。
mirrorAddress Space Mirror设备侧维护一份 CPU 地址空间映射的镜像。
HMM mirrorHMM_MIRRORHMM 依赖的配置/能力,用于驱动镜像用户地址空间。
hmm_rangestruct hmm_rangeHMM 获取一段 VA 对应 PFN 状态的输入/输出对象。
hmm_range_fault()HMM Range Fault遍历 CPU 页表并按策略 fault 页面,输出hmm_pfns[]
hmm_pfns[]HMM PFN ArrayHMM 输出数组,每项包含 PFN 和HMM_PFN_*flags。
HMM_PFN_VALIDValid HMM PFN表示对应 VA 有可用 PFN。
HMM_PFN_WRITEWritable HMM PFN表示该 PFN 对请求者可写。
HMM_PFN_ERRORError HMM PFN表示该地址 fault/解析出错。
HMM_PFN_REQ_FAULTRequest Fault请求 HMM 对无效/未驻留页面触发 fault。
HMM_PFN_REQ_WRITERequest Write请求 HMM 获取可写权限,必要时触发写 fault/COW。
HMM_PFN_DMA_MAPPEDDMA Mapped Flag表示 PFN 已有 DMA 映射状态的标记。
HMM_PFN_P2PDMAP2PDMA Flag表示页面可用于 PCI peer-to-peer DMA。
HMM_PFN_P2PDMA_BUSP2PDMA Bus Flag表示 P2PDMA 使用 bus address 语义。
map_orderHMM Mapping OrderHMM PFN 中编码的页表映射粒度。
hmm_pfn_to_page()HMM PFN to Page从 HMM PFN 项取得struct page
hmm_pfn_to_phys()HMM PFN to Physical Address从 HMM PFN 项取得物理地址。
hmm_pfn_to_map_order()HMM PFN to Mapping Order读取 HMM PFN 中的映射阶数。
default_flagsHMM Default Request Flags对整个 range 默认使用的 HMM 请求标志。
pfn_flags_maskHMM PFN Flags Mask限制 HMM 输出哪些 flag 的掩码。
notifier_seqHMM Range Sequencehmm_range保存的 interval notifier 序列号。
non-residentNon-resident Page页面数据不在普通 CPU present PTE 中,可能在 swap、migration、device memory。
fault strategyHMM Fault PolicyHMM 遇到 hole、swap、device entry 时是触发 fault、等待、还是返回 invalid。

8. DMA、IOMMU 与 P2P

术语英文/代码简明解释
DMADirect Memory Access设备不经过 CPU load/store,直接访问内存。
DMA mappingdma_map_page()把 CPU 侧页面转换成设备可访问 DMA 地址,并处理 cache/IOMMU。
dma_map_page()Map One Page for DMA把单页或连续页映射给设备访问。
dma_unmap_page()Unmap DMA Page撤销 DMA mapping,释放 IOMMU/cache 相关状态。
IOMMUI/O Memory Management Unit为设备 DMA 地址提供地址转换和隔离的硬件。
IOVAI/O Virtual AddressIOMMU 暴露给设备的虚拟 DMA 地址。
DMA directionDMA_TO_DEVICE/DMA_BIDIRECTIONALDMA 方向,影响 cache 同步和权限。
scatter-gatherSG List描述多个不连续内存段的 DMA 列表。
P2PDMAPCI Peer-to-Peer DMAPCIe 设备之间直接访问彼此内存,绕过系统内存路径。
PCI BARBase Address RegisterPCI 设备暴露 MMIO 或内存窗口的地址资源。
cache coherenceCache CoherenceCPU cache 与设备访问同一内存时的一致性关系。
coherent memoryCoherent Device MemoryCPU 和设备能保持一致访问的设备内存。
bus addressBus-visible Address设备在总线上发起事务时使用的地址。

9. DRM、GPU SVM 与驱动接入

术语英文/代码简明解释
DRMDirect Rendering ManagerLinux 图形/GPU 驱动子系统。
GPUVMdrm_gpuvmDRM 中管理 GPU 虚拟地址空间和 VM bind/unbind 的框架。
GPUSVMdrm_gpusvmDRM 中封装 HMM/SVM 页获取、notifier、range、DMA/device mapping 的框架。
drm_gpusvmstruct drm_gpusvm一个 DRM GPU SVM 实例,通常嵌在驱动 VM 对象中。
drm_gpusvm_notifierGPUSVM Notifier管理一段较大 VA 区间的 interval notifier,并挂载多个 range。
drm_gpusvm_rangeGPUSVM RangeGPU fault 后建立的较小 VA 区间,保存 pages 和映射状态。
drm_gpusvm_pagesGPUSVM Pages保存dma_addr[]dpagemapnotifier_seq和 flags 的结构。
drm_gpusvm_ctxGPUSVM Context一次 GPUSVM 操作的策略参数,如 read-only、allow-mixed、devmem-only。
drm_gpusvm_opsGPUSVM Driver Ops驱动提供给通用层的回调,如 range 分配和 invalidate。
drm_gpusvm_range_find_or_insert()Find/Create GPUSVM RangeGPU fault 时查找或创建 notifier/range。
drm_gpusvm_get_pages()GPUSVM Page Acquisition封装 HMM PFN 获取与 DMA/device address 映射。
drm_gpusvm_range_get_pages()Range Get Pages针对一个 GPUSVM range 调用drm_gpusvm_get_pages()
drm_gpusvm_range_pages_valid()Range Valid CheckGPU binding 前检查 range pages 是否仍有效。
drm_gpusvm_range_unmap_pages()Range Unmap Pagesnotifier invalidate 中撤销 range 的 DMA/device mapping。
drm_gpusvm_range_set_unmapped()Mark Range UnmappedMMU_NOTIFY_UNMAP时标记 range 已失效,并记录 partial unmap。
drm_gpusvm_range_evict()Evict GPUSVM Range借助 HMM fault 把 range 中的 device private page 拉回系统内存。
drm_gpusvm_scan_mm()Scan Migration State观察 range 当前是 system、device、mixed 还是 unpopulated。
drm_pagemapDRM Device Memory HelperDRM 对dev_pagemap和设备页映射的辅助封装。
drm_pagemap_addrDRM Page AddressDRM 用于表示 system DMA address 或 device interconnect address 的编码。
VM bindGPU VM Bind把一段内存绑定到 GPU 虚拟地址空间。
GPU page faultGPU FaultGPU 访问缺失或无权限 VA 时产生的 fault。
GPU page tableGPU Page TableGPU 自己的虚拟地址翻译结构。
GPU TLB invalidateGPU TLB FlushGPU 页表变化后撤销硬件缓存的翻译。
garbage collectorDriver GC驱动延迟清理 unmapped range、unbind GPU 页表、释放 range 的机制。
userptrUser Pointer BOGPU 驱动把用户进程已有内存作为 buffer 使用的机制。
BOBuffer ObjectDRM/TTM/GEM 中表示 GPU 可用内存对象的抽象。
TTMTranslation Table MapsDRM 内存管理框架,常用于 BO、VRAM、GTT 管理。
VRAMVideo RAMGPU 本地显存。
GTTGraphics Translation TableGPU 访问系统内存或显存的一类地址转换机制,具体含义依驱动而异。
fault queueGPU Fault QueueGPU/驱动记录 fault 事件并交给内核处理的队列。
fenceDMA Fence / GPU Fence表示 GPU 异步任务完成状态的同步对象。
dma-resvDMA Reservation ObjectBO 共享同步对象,用于协调 fence 和访问。
PASIDProcess Address Space IDPCIe/设备侧区分进程地址空间的 ID。
ATSAddress Translation ServicePCIe 设备向 IOMMU/CPU 地址转换体系请求翻译的能力。
PRIPage Request InterfacePCIe 设备请求主机处理缺页的机制。

11. 常见缩写速查

缩写全称中文含义
VAVirtual Address虚拟地址
PAPhysical Address物理地址
PFNPage Frame Number物理页帧号
PTEPage Table Entry页表项
PMDPage Middle Directory页中间目录级页表项
PUDPage Upper Directory页上级目录级页表项
PGDPage Global Directory页全局目录级页表项
VMAVirtual Memory Area虚拟内存区域
MMMemory Management内存管理子系统
HMMHeterogeneous Memory Management异构内存管理
SVMShared Virtual Memory共享虚拟内存
DMADirect Memory Access直接内存访问
IOMMUI/O Memory Management UnitI/O 内存管理单元
IOVAI/O Virtual AddressI/O 虚拟地址
DAXDirect Access持久内存/设备内存直接访问机制
THPTransparent Huge Page透明大页
TLBTranslation Lookaside Buffer地址翻译缓存
COWCopy-On-Write写时复制
GUPGet User Pages获取用户页引用
LRULeast Recently Used最近最少使用回收链表
DRMDirect Rendering ManagerLinux 图形/GPU 驱动子系统
BOBuffer Object缓冲对象
TTMTranslation Table MapsDRM 内存管理框架
VRAMVideo RAM显存
GTTGraphics Translation TableGPU 图形地址转换表
PASIDProcess Address Space ID进程地址空间 ID
ATSAddress Translation Service地址转换服务
PRIPage Request Interface页面请求接口
P2PPeer-to-Peer设备间点对点访问

12. 容易混淆的概念对照

12.1 PFN、物理地址、DMA 地址

概念谁使用是否一定相同典型转换
PFN内核 MM不等于地址,只是页帧编号page_to_pfn()/pfn_to_page()
物理地址CPU 物理地址空间可能和 DMA 地址不同PFN << PAGE_SHIFT
DMA 地址设备 DMA 引擎有 IOMMU 时通常不同于物理地址dma_map_page()

12.2 system page、device private page、device coherent page

类型CPU 能否直接访问是否有struct page典型用途
system page可以普通系统内存
device private page通常不可以有,来自 ZONE_DEVICEGPU VRAM/设备私有内存,CPU fault 时回迁
device coherent page可以有,来自 ZONE_DEVICECXL/一致性设备内存,CPU 与设备共享访问

12.3mmu_notifiermmu_interval_notifier

机制粒度常见使用者重点
mmu_notifier整个 mm 或 broad callbackKVM、驱动基础同步接收 CPU 页表变化通知
mmu_interval_notifier指定 VA intervalHMM、device mirror、userptrread begin/retry 序列号协议

12.4migrate_pages()migrate_vma

机制面向对象谁分配目标页HMM 相关性
migrate_pages()一组 folio/page通用 MM/NUMA 路径是历史基础
migrate_vma某个 VMA 地址范围驱动参与分配 device/system 目标页HMM 设备迁移核心机制

13. 一句话总结

  • VMA 是“这段虚拟地址应该怎么用”。
  • PTE 是“这一个虚拟页现在指向哪里”。
  • PFN 是“物理页帧的编号”。
  • struct page是“内核认识这个物理页的身份证”。
  • ZONE_DEVICE 是“让设备内存也拿到身份证”。
  • dev_pagemap是“这段设备内存的户口本和回调表”。
  • device private entry 是“页在设备里,CPU 要访问请先回迁”。
  • device exclusive entry 是“设备暂时独占,CPU 普通 PTE 先撤掉”。
  • MMU notifier 是“CPU 页表变了,外部页表赶紧失效”。
  • mmu_interval_notifier是“只盯一段 VA,并用序列号判断快照是否过期”。
  • HMM 是“让设备读懂 CPU 地址空间,并能参与页面迁移”。
  • hmm_range_fault()是“把一段用户 VA 翻译成 HMM PFN 数组”。
  • migrate_vma是“驱动参与的 CPU 内存和设备内存搬家流程”。
  • DMA mapping 是“把 CPU/内核认识的页转换成设备能访问的地址”。
  • test_hmm是“HMM 协议的最小可运行样板”。
  • drm_gpusvm是“DRM 驱动接入 HMM/SVM 的通用骨架”。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 23:59:01

11_指针入门_地址指针变量解引用与指针运算

指针入门&#xff1a;地址、指针变量、解引用与指针运算 一、本篇文章要解决什么问题 如果你问学过 C 语言的人"什么最难"&#xff0c;十个人里有八个会说"指针"。 不是指针本身有多难&#xff0c;而是它在教法上出了很多问题&#xff1a;很多教材一上来就…

作者头像 李华
网站建设 2026/5/23 23:58:58

【Telephony】IPC 跨层通信机制深度解析 (Binder HAL)

description: “深度剖析 Android Telephony 跨层与层内通信机制,包括 App 层 Binder IPC、Framework 到 HAL 层的 AIDL/HIDL 通信以及进程内 Handler 机制。” Android Telephony 系统由于横跨应用层、系统服务层、硬件抽象层,其内部存在大量复杂的进程间通信(IPC)与进程…

作者头像 李华
网站建设 2026/5/23 23:56:04

Go语言并发模式:Worker Pool

Go语言并发模式&#xff1a;Worker Pool 1. Worker Pool实现 func workerPool(workers int, jobs <-chan Job, results chan<- Result) {var wg sync.WaitGroupfor i : 0; i < workers; i {wg.Add(1)go func() {defer wg.Done()for job : range jobs {results <- p…

作者头像 李华
网站建设 2026/5/23 23:51:58

Git 版本控制完全指南:从分支管理到远程协作

引言在前面的文章中&#xff0c;我们学习了 Linux 环境下的各种编程技术。然而&#xff0c;无论是个人项目还是团队协作&#xff0c;代码版本管理都是不可或缺的核心技能。Git 是目前最流行的分布式版本控制系统。它不仅能记录每一次代码变更、回溯任意历史版本&#xff0c;还能…

作者头像 李华
网站建设 2026/5/23 23:42:38

从Java全栈开发到云原生:一次真实的面试对话与技术剖析

从Java全栈开发到云原生&#xff1a;一次真实的面试对话与技术剖析 面试场景回顾 在一次真实的互联网大厂Java全栈开发岗位的面试中&#xff0c;面试官和应聘者展开了一场围绕技术栈、项目经验和系统设计的深入交流。面试官以专业严谨的态度&#xff0c;逐步引导应聘者展示其技…

作者头像 李华
网站建设 2026/5/23 23:42:33

滑膜观测器代码及参数取值说明

1、滑膜观测器源原理基于BLDC(无刷电机)/PMSM(永磁同步电机)在αβ坐标系下的电压方程&#xff1a;di_alpha/dt (-Rs/Ld)*i_alpha (Ualpha - Ealpha)/Lddi_beta/dt (-Rs/Ld)*i_beta (Ubeta - Ebeta)/Ld 其中Ealpha、Ebeta为αβ轴反电动势&#xff0c;包含转子速度和位置…

作者头像 李华