1 读写速度
DDR4 50G/S > DDR3 10G/S > SSD 300M/S > HDD 100M/S
2 内存映射
物理内存 -> 物理内存地址 -> 虚拟内存地址-> MMU(Memory Management Unit) in CPU
3 内存使用
读共享,写复制,内存不够,虚拟磁盘
4 映射过程
CPU->寄存器->MMU->TLB缓存近期访问的PTE->主存的虚拟页表->物理内存页号PPN+VPO->物理内存
5 页表
页表->页(4096字条4K,不固定具体看系统)->页表条目PTE(有效位+PPN Physical Page Number)
6 PTE 有效位标:
1 【1】虚拟内存已创建和分配页,已缓存在物理内存(或TLB-Cache)中。
2 【0】虚拟内存还未分配或创建。
3 【0】虚拟内存已创建和分配页,但未缓存在物理内存(或TLB-Cache)中。
7 程序->CPU->寄存器->CREATE VA(VPN虚拟页号+ VPO虚拟偏移量)->MMU->PTE(FIRST SEARCH TLB)
->PTE(有效位1命中)->PA Physical Address(PPN * 页长度4K + VPO)->物理内存->DONE
->PTE(有效位未命中)->exception->sys catch->repair->goto PTE 1
零拷贝
用户空间 -> 内核空间 -> 硬件
正常IO过程需要进行两次DMA拷贝,两次CPU拷贝,四次上下文切换。
零拷贝主要是通过减少拷贝次数,提高性能。
mmap
映射内核缓冲区数据,减少一次内核缓冲区到用户的CPU拷贝
sendfile
减少一次内核缓冲区到用户的CPU拷贝,只有一次系统调用,减少了两次上下文切换