Linux存储管理Linux memory management.ppt

Linux存储管理Linux memory management.ppt

ID:48030026

大小:426.00 KB

页数:24页

时间:2020-01-13

Linux存储管理Linux memory management.ppt_第1页
Linux存储管理Linux memory management.ppt_第2页
Linux存储管理Linux memory management.ppt_第3页
Linux存储管理Linux memory management.ppt_第4页
Linux存储管理Linux memory management.ppt_第5页
资源描述:

《Linux存储管理Linux memory management.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linuxmemorymanagementi386保护模式的分段与分页Linux分页线性地址空间分布用户地址空间内核地址空间空闲物理内存管理内核物理内存分配接口共享存储Intelx86保护模式的地址映射段选择子16bits段内偏移32bits页内偏移12bits物理地址32bits页目录索引10bits页表索引10bits逻辑地址线性地址物理地址GDT、LDTpgd、pte……Intelx86的分段描述符索引13bitsGDT/LDT1bit段选择子访问特权级2bits段内偏移32bits段基地址32bits段描述符

2、8bytes+线性地址32bits段界限20bitsGDT…………Linux在i386上的分页线性地址物理地址32bitspmd_t*dir+页帧首地址20bits<>PMD_SHIFT)&(PTRS_PER_PMD-1))pgdpte存在位读写位用户态/核心态访问位表示是否采用写透方式

3、表示是否启用高速缓存访问位已写标志位页大小,4K(0)或4M(1),只适用于页目录表项页目录表项和页表项Linux的线性地址空间分配4G线性地址空间分为用户空间和内核空间,内核空间又分为物理内存区、虚拟内存分配区、高端页面映射区、专用页面映射区和系统保留映射区线性地址从0x00000000到0xBFFFFFFF的3G为用户和内核共同访问,0xC0000000以上的1G由内核独享,用户态无法访问因此所有进程的页目录的后四分之一均指向内核页目录的相应目录项。为减小同步的开销,内核只在处理page_fault时同步用户进程

4、的页目录项,因此页目录项不一致的情况是有的Linux的线性地址空间分配Linux的线性地址空间分布Memorymappedregion:File-mappingSharedlibrarieskernelcode/data/stackMemorymappedregionforsharedlibrariesruntimeheap(viamalloc)programtext(.text)initializeddata(.data)uninitializeddata(.bss)stackforbidden0%espproce

5、ssVMbrk0xc0physicalmemorysameforeachprocessprocess-specificdatastructures(pagetables,taskandmmstructs)kernelVM.data.textpdemand-zerodemand-zerolibc.so.data.textLinux的用户地址空间分布例:#includeintz=0;/*进程的数据段中*/intmain(){int*a=0;/*进程的用户栈中*/intpid=getpid();if(pi

6、d=fork()){/*父进程执行这里的代码*/a=(int*)malloc(100*sizeof(int));/*父进程的堆空间,runtimedata*/z=pid;printf(“z1=%d”,z);}else{/*子进程执行的代码*/a=&z;*a=pid;printf(“z2=%d”,z);}printf(“alldone,pid=%d”,pid);return1;}利用/proc查看进程的用户地址空间文件映射举例#include#include#in

7、clude#include#include/*mmap.c-aprogramthatusesmmaptocopyitselftostdout*/intmain(){structstatstat;inti,fd,size;char*bufp;/*openthefile&getitssize*/fd=open("./mmap.c",O_RDONLY);fstat(fd,&stat);size=stat.st_size;/*mapthefiletoanew

8、VMarea*/bufp=mmap(0,size,PROT_READ,MAP_PRIVATE,fd,0);/*writetheVMareatostdout*/write(1,bufp,size);}用户地址空间管理-虚存段VMALinux的用户地址空间分布进程描述符中的structmm_struct*mm用来管理已分配给该进程的线性地址空间每一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。