欢迎来到天天文库
浏览记录
ID:37813001
大小:1.54 MB
页数:98页
时间:2019-05-31
《第2章 存储管理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第二章存储管理¾本章知识要点ßLinux的虚拟存储空间的管理ßLinux的物理内存空间(包括交换)的管理ß请求调页ßLinux的缓存《操作系统—原理·技术与编程》2004年,机械工业出版社蒋静徐志伟200620062006---555---242424LinuxLinuxLinux操作系统分析操作系统分析操作系统分析111本章要求分析的源代码¾关键数据结构ßmm_struct结构体ßvm_area_struct结构体;ßpage结构体ß交换设备的数据结构structswap_info_struct¾关键函数ß在m
2、m/mmap.c文件中的do_mmap()函数ß在arch/i386/mm/fault.c中的do_page_fault()函数200620062006---555---242424LinuxLinuxLinux操作系统分析操作系统分析操作系统分析222§2.1概述¾存储管理是多任务操作系统的核心¾需要实现以下功能ß既为每个进程提供独立的线性空间,又能数据共享ß统一操作系统空间与普通进程的线性空间,但权限不同ß解决物理内存大小的局限ß为输入/输出系统分配缓存¾采用的技术ß虚拟存储(分段、分页、交换)ß请求调页和动
3、态地址变换:进程开始时只装入它的第一个页面,进程访问到某一虚拟地址时才确定其对应的物理地址ß页面共享:不同进程间共享物理页面,包括操作系统页面200620062006---555---242424LinuxLinuxLinux操作系统分析操作系统分析操作系统分析333Linux虚存管理的基本特点¾更大的地址空间ß虚拟内存使得操作系统看起来拥有比实际大得多的物理内存¾公平的物理内存分配。ß通过共享和交换策略,使各个运行的进程能公平地共享内存¾进程保护ßLinux存储管理子系统为每一内存页设置了“上锁位”ß在线性地址
4、及每级页表页项上设置了“读/写”位,这样可确保某一个进程不受其他进程的干扰。ß即使某一个进程失败了,也不会影响到其他进程和操作系统本身。¾共享虚拟内存ßLinux实现的虚拟内存允许两个进程之间互相共享内存ß例如:共享的库。在这种情形之下,库代码仅存在于一个进程,而不需要为每一个应用都复制一份200620062006---555---242424LinuxLinuxLinux操作系统分析操作系统分析操作系统分析444Linux使用的地址空间¾存储管理本质上是实现地址空间之间的映射¾地址映射就是在几个存储空间(逻辑地
5、址空间、线性地址空间、物理地址空间)或存储设备之间进行的地址转换200620062006---555---242424LinuxLinuxLinux操作系统分析操作系统分析操作系统分析555Linux存储管理的基本框架¾Linux是一个多任务的操作系统,它的虚存空间实行以进程为单位,按“需”分配的管理策略ß为每个进程提供4GB的独立的线性地址空间¾Linux的存储保护机制ß进程间,虚存相互独立ß进程内*操作系统使用内核级,相当于x86的0级*应用程序使用用户级,相当于x86的3级¾为了能够在不同的CPU上实现,L
6、inux设计了一种独立于CPU的三级分页模型,完成线性地址到物理地址的转换200620062006---555---242424LinuxLinuxLinux操作系统分析操作系统分析操作系统分析666§2.2Linux进程的虚存空间¾每个进程只能“看到”自己的4GB的线性地址空间¾操作系统内核映射到所有进程的虚存空间¾空间划分ß用户区(3GB)*访问权限设置为3级*包含进程本身的程序代码和数据*是Linux存储管理的主要对象ß内核区(1GB)*访问权限设置为0级*包含操作系统内核和其他共享资源2006200620
7、06---555---242424LinuxLinuxLinux操作系统分析操作系统分析操作系统分析777进程虚存用户区用户区用户区的映射结构200620062006---555---242424LinuxLinuxLinux操作系统分析操作系统分析操作系统分析888mm_struct结构体¾在内核代码中,用于这一数据结构的变量名通常为mm¾每一个进程用一个mm_struct结构体来定义它的虚存用户区。ß虽然一个进程只有一个mm_struct,但一个mm_struct却可被多个进程共享¾mm_struct结构体首
8、地址在任务结构体task_struct成员项mm中:structmm_struct*mm;¾mm_struct结构定义在include/linux/schedule.h中200620062006---555---242424LinuxLinuxLinux操作系统分析操作系统分析操作系统分析999mm_structstructmm_struct{structvm_area_
此文档下载收益归作者所有