Linux内存管理

Linux内存管理

ID:41883932

大小:118.00 KB

页数:30页

时间:2019-09-04

Linux内存管理_第1页
Linux内存管理_第2页
Linux内存管理_第3页
Linux内存管理_第4页
Linux内存管理_第5页
资源描述:

《Linux内存管理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、MemoryManagementinLinuxAnandSivasubramaniamTwoPartsArchitectureIndependentMemoryShouldbeflexibleandportableenoughacrossplatformsImplementationforaspecificarchitectureArchitectureIndependentMemoryModelProcessvirtualaddressspacedividedintopagesPagesizegiveninPAGE_SIZEmacroinasm/page.h(4Kforx86and8Kf

2、orAlpha)Thepagesaredividedbetween4segmentsUserCode,UserData,KernelCode,KernelDataInUsermode,accessonlyUserCodeandUserDataButinKernelmode,accessalsoneededforUserDataput_user(),get_user(),memcpy_tofs(),memcpy_fromfs()allowkerneltoaccessuserdata(definedinasm/segment.h)Registerscsanddspointtothecodean

3、ddatasegmentsofthecurrentmodefspointstothedatasegmentofthecallingprocessinkernelmode.Get_ds(),get_fs(),andset_fs()aredefinedinasm/segment.hSegment+Offset=4GBLinearaddress(32bits)Ofthis,userspace=3GB(definedbyTASK_SIZEmacro)andkernelspace=1GBLinearAddressconvertedtophysicaladdressusing3levelsIndexi

4、ntoPageDir.IndexintoPageMiddleDir.IndexintoPageTablePageOffsetPageDir.AndMiddleDir.AccessFunctions (inasm/page.handasm/pgtable.h)Structurespgd_tandpmd_tdefineanentryofthesetables.pgd_alloc_alloc()/pgd_free()toallocateandfreeapageforthepagedirectorypmd_alloc(),pmd_alloc_kernel()/pmd_free(),pmd_free

5、_kernel()allocateandfreeapagemiddledirectoryinuserandkernelsegments.pgd_set(),pgd_clear()/pmd_set(),pmd_clear()setandclearaentryoftheirtables.pgd_present()/pmd_present()checksforpresenceofwhattheentriesarepointingto.pgd_page()/pmd_page()returnsthebaseaddressofthepagetowhichtheentryispointing…..Pag

6、eTableEntry(pte_t)AttributesPresence(ispagepresentinVAS?)Read,WriteandExecuteAccessed?(age)DirtyMacrosofPgprot_typePAGE_NONE(invalid)PAGE_SHARED(read-write)PAGE_COPY/READ_ONLY(readonly,usedbycopy-on-write)PAGE_KERNEL(accessibeonlybykernel)PageTableFunctionsmk_pte(),Pte_clear(),set_pte()pte_mkclean

7、(),pte_mkdirty(),pt_mkread(),….pte_none()(checkwhetherentryisset)pte_page()(returnsaddressofpage)pte_dirty(),pte_present(),pte_young(),pte_read(),pte_write()ProcessAddressSpace(nottoscale!)Kernel0xC0000000Filenam

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

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

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