欢迎来到天天文库
浏览记录
ID:45555375
大小:352.15 KB
页数:18页
时间:2019-11-14
《【精品】Linux存储管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、八.Linux的内存管理虚拟存储技术,二级页表将虚拟地址物理地址(―)80386段机制将虚拟存储器组成大小可变的容量单位的集合段虚拟地段偏移段三参数段基址段界垦属性7—读/写Limit虚拟空J可最大长度丿Base线性空间中段开始A线性地址转换(补充材料P32图4.4)LimitB0LimitA0LimitCBaseB+LimitB段A段cBaseBBaseA+LimitABaseABaseC+LimitCBaseC虚拟地址空间线性地址空间图4-1(二)386分页机制(段机制之后作分页机制:)完成虚拟地址=物理地址BP:将线性地址物理地址1.803864G线性地址'4KB/页=4096b/页'
2、4G/4KB=22X230/212=220=lM(个页面)线性地址失效:V)线性地址映射的物理地址,OS不支持(超出内存页框号)2)线性地址空间页在外存上未驻留(P1695・30三级页表)将页表分成二级2•二级页表结构(X86二级页表)80386中页表[1M个表目项<1表目项占4BS(1KX4bs/表目项=4K占一个页面)I页表占4MBS连续空间3.线性地址转换为物理地址(采用页高速缓冲快速地址变换)(补P32图4.22)线性地址转换为物理地址表目录项,每个目录项指向二级页表图4-2(三)Linux存贮管理的重要数据结构1・内核空间与用户空间4GB3GB由内核页目数据段巒址代码段内核空间:内
3、核用户空间(依各用户段经地址射机制=物理地址)OGB4GB线桂地址空间2與址映射机制'建立几种存贮媒介(内存,外存,虚存)间关联(补P32图6・7)线性地址空间图4-33•地址映射数据结构进程虚地址映射三结构•整个进程虚内存描述:structmm_struct层次高{•….}•虚存区域(多个构成一个链):structvm_area_struct{・・・}•页属性描述:structpagemm_struct结构(P167)vm_area_struct结构描述一个虚拟区域page结构描述一个物理页(一个RAM页框)信息用于]空闲页管理:structpage*next4、v、页面cache管理:structpage*next_hashstructpage*prev_hash进程虚拟地址(数据结构关系)图4-5补P33图页目录表物理内存mmstructmmstructtaskstructtaskstructcountcountstructstruct*pgd*pgdmmstructi:mmmmstruct*mm*mmapmmapmmap_avl*mmap_avl(二级页表)(二级页表)(memman)(memmaD)vm_area_struct进程虚拟内存vmarea.struct进程虚拟内存vmendvmendvm_opsvm_opsvmnextvmnext5、vmareavmareastriietvmendvmstartvmstartvm_flagsvm_flagsvminodevminodevm_opsvm_opsvmnext0x805900vmstartvm_flagsvminodevm_flagsvmstartvminode高址0x1048000x000000低址虚拟内存按降序排列vmareastruct虚拟内存操作集虚拟内存操作集open()open()dose()unmap()protect()sync()advise()nopage()swapout()swapin()dose()unmap()protect()sync()advis6、e()nopage()swapoutQswapin()页面分配和回收Linux采用多种策略分配物理内存伙伴策略管理空闲内存伙伴策略:将主存划分成块,块大小2幕次页:(块组)1页,2页,4页,8页,16页,32页2°2122232425块内页连续存贮于MEM,当分配一个空闲区:S=2k时,若空闲组链中2*链非空:分配出去。若2*链空:则找2k+i链「不空:分成2个2*一个分配V—个进2k链空:继续找2k+2链1.原理:Linux物理页分配借助链表H结合方法数据结构:structfree_area_struct{structpage*list;〃描述页框信息,page〃结点组成双向链表头指针un7、signedint*map;//记录页块组分配情况//位示图J0-块组忙〔1-块组闲//(例:位示图第N位为1,表示第//N个页块是空闲的)}〃(显然页块组越小,位图越大!!!)staticstructfree_area_structfree_area[NR_MEM_LISTS]空闲页面的分配与回收(P169图5-31)free_area[NR_MEM_LISTS]物理内存7表示2号块数中有2个页■6块组,第
4、v、页面cache管理:structpage*next_hashstructpage*prev_hash进程虚拟地址(数据结构关系)图4-5补P33图页目录表物理内存mmstructmmstructtaskstructtaskstructcountcountstructstruct*pgd*pgdmmstructi:mmmmstruct*mm*mmapmmapmmap_avl*mmap_avl(二级页表)(二级页表)(memman)(memmaD)vm_area_struct进程虚拟内存vmarea.struct进程虚拟内存vmendvmendvm_opsvm_opsvmnextvmnext
5、vmareavmareastriietvmendvmstartvmstartvm_flagsvm_flagsvminodevminodevm_opsvm_opsvmnext0x805900vmstartvm_flagsvminodevm_flagsvmstartvminode高址0x1048000x000000低址虚拟内存按降序排列vmareastruct虚拟内存操作集虚拟内存操作集open()open()dose()unmap()protect()sync()advise()nopage()swapout()swapin()dose()unmap()protect()sync()advis
6、e()nopage()swapoutQswapin()页面分配和回收Linux采用多种策略分配物理内存伙伴策略管理空闲内存伙伴策略:将主存划分成块,块大小2幕次页:(块组)1页,2页,4页,8页,16页,32页2°2122232425块内页连续存贮于MEM,当分配一个空闲区:S=2k时,若空闲组链中2*链非空:分配出去。若2*链空:则找2k+i链「不空:分成2个2*一个分配V—个进2k链空:继续找2k+2链1.原理:Linux物理页分配借助链表H结合方法数据结构:structfree_area_struct{structpage*list;〃描述页框信息,page〃结点组成双向链表头指针un
7、signedint*map;//记录页块组分配情况//位示图J0-块组忙〔1-块组闲//(例:位示图第N位为1,表示第//N个页块是空闲的)}〃(显然页块组越小,位图越大!!!)staticstructfree_area_structfree_area[NR_MEM_LISTS]空闲页面的分配与回收(P169图5-31)free_area[NR_MEM_LISTS]物理内存7表示2号块数中有2个页■6块组,第
此文档下载收益归作者所有