内存管理
Norton-JAVA工程师
android+java后端架构
展开
-
Linux内存缺页错误处理
linux内存访问是通过页表访问的形式访问的,当虚拟内存找不到对应物理内存,则抛出缺页错误。缺页错误函数在mm/fault.c中的do_page_fault定义,do_page_fault(struct pt_regs *regs, unsigned long error_code){ struct vm_area_struct *vma; struct task_struct *t原创 2014-03-03 11:56:30 · 2208 阅读 · 0 评论 -
linux内存映射/内存区域/地址空间的概念
内存区域的结构函数:vm_area_struct,通常称为VMA,是指虚拟内存,在include/linux/mm_types.h定义书上常说的内存区块,指的就是内存映射后的虚拟地址区块,内存映射如下面所述,是指从物理内存映射到虚拟内存struct vm_area_struct { struct mm_struct * vm_mm; /* The address space we b原创 2014-03-03 10:59:28 · 1263 阅读 · 0 评论 -
linux页面缓存【笔记】
页面缓存(page cache)也叫File Cache,使用页面缓存是为了提高磁盘对文件的访问速度。顾名思义,“页面”是物理内存的概念,因此page cache是以物理页为单位缓存(不存在虚拟内存)。linux一般会利用空闲的内存进File Cache,只有接受到内存申请时,才会清理页面缓存,因此Linux系统下很少空闲内存,这样做是为了提高文件访问效率。页面缓存基于内存管理系统,同时又原创 2014-03-03 14:31:20 · 4610 阅读 · 0 评论 -
linux多级页表结构
linux的页表结构是为了节省地址转换所需要的空间。分为PGD/PUD/PMD/PTE,P代表page,G代表global,D代表目录(Director),U代表上级,M代表中间,T代表Table,E代表Entry。PTE是页表项。他们之间的关系是层级结构,通过PGD访问到最低端的PTE,访问方式是上一层地址+偏移量(offset)。PTE+页内偏移量可以访问到具体的物理地址。每个进程都有自己原创 2014-03-03 11:43:08 · 4047 阅读 · 0 评论 -
linux缓冲区 即 块
文件系统通过块访问设备,块,是扇区之上的抽象概念。扇区是设备访问的最小单元,而文件系统最小寻址单元是块(扇区只是物理概念,块才是内核上的概念)。块一般是扇区的倍数(扇区是块的基本单元),但必须小于一个页大小,因此,块大小一般是512B,1KB,4KB。文件系统的缓冲区对应着块。一个块就是一个缓冲区。一个磁盘块被调入内存的时候,它会被调入一个缓冲区中,这个缓冲区在内存中表示就是块。2.4内核原创 2014-03-04 13:45:25 · 1056 阅读 · 0 评论 -
指针的大小到底是由谁决定?是多少?
小结:貌似8位单片机可以有16位寻址长度。之前看到有些8位机可以跑16位寻址,一直不解,所以找了下资料。参考了下文,如果寻址地址是16,可能编译器也是16位的,这样8位机的指针其实也可以是16位长度的。另外,据说指针长度是和计算机字长有关的。一般说8位机的字长也是8位,会不会字长也是对应着寻址长度呢?这些疑问只好以后碰到datasheet再考虑了。下文转自 http://blog.原创 2014-12-22 17:36:51 · 1528 阅读 · 0 评论