Linux内核2.0/2.2就已经支持,为了能够使用Ramdisk,我们在编译内核时须将block device中的Ramdisk支持选上,它下面还有两个选项,一个是设定Ramdisk的大小,默认是4096k
如果umount再加载,只要不重启linux,那文件依然会保存在/dev/ramX中
Ramfs顾名思义是内存文件系统,它处缓备于虚拟文件系统(VFS)层,而不像ramdisk那样基于虚拟在内存中的其他文件系统(ex2fs)。因而,它无需格式化,可以创建多个,只要内存足够,在创建时可以指定其最大能使用的内存大小。
umount后再加载数据消失
Tmpfs是一个虚拟内存文件系统,它不同于传统的用块设备形式来实现的Ramdisk,也不同于针对物理内存的Ramfs。Tmpfs可以使用物理内存,也可以使用交换分区
在编译内核时须将
size=32m,内存的消耗值不是32m,要看真实使用
umount后再加载数据消失。
(1) ** System V shared memory(shmget/shmat/shmdt) **
(2) ** POSIX shared memory(shm_open/shm_unlink) **
2.用于POSIX共享内存,由用户负责mount,而且一般mount到/dev/shm;依赖于CONFIG_TMPFS
System V与POSIX共享内存都是通过tmpfs实现,但是受的限制却不枣扒相同。也就是说/proc/sys/kernel/shmmax只会影响SYS V共享内存,/dev/shm只会扰岩毁影响Posix共享内存
Posix共享内存区对象的大小可在任何时刻通过ftruncate修改,而System V 共享内存区对象的大小是在调用shmget创建时固定下来的。
Posix共享内存区是先调用shm_open然后再调用mmap,System V 共享内存区是先调用shmget再调用shmat。
mmap, 它把文件内容映射到一段内存上(准确说是虚拟内存上), 通过对这段内存的读取和修改, 实现对文件的读取和修改,mmap()系统调用使得进程之间可以通过映射一个普通的文件实现共享内存
mmap函数成功返回指向内存区域的指针
addr,某个特定的地址作为起始地址,当被设置为NULL,系统会在地址空间选择一块合适的内存区域。
其中data的创建采用内存映射函数mmap,用dev/ properties 的原因是因为dev为tmpfs
通常内存卡默认使用的FAT32读写系统,更改手机内存卡的文睁明件系统的方法如下:1.将内存卡插入读卡器或手机与电脑连接。
2.右键单击悉消告内存卡分区选择格式化。
3.在文件系统中选择NTFS或exFAT格式。
4.单桥陪击开始,完成即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)