- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式操作系统chap4
一、进程虚拟存储空间的管理 Linux系统: 采用的是段页式内存管理 80x86(32位)中,逻辑页面大小为4KB,每个页表项占4B 采用请求调页技术实现虚拟存储 用“最近最少使用”(LRU)算法进行页面置换 采用伙伴算法实现内存的分配与回收 虚拟存储器 计算机系统的存储器分为内存(主存)和外存(硬盘)。使更多的用户进程合理、充分地使用存储资源,操作系统统一管理内存和外存,即把内存中暂时不用的内容放在硬盘上,内存中就可以腾出一部分空间,可以从硬盘装入其他迫切需要的内容。因此,从效果上看,计算机系统好像为用户提供了一个其存储容量比实际主存大得多的存储器。人们称这个存储器为虚拟存储器。 虚拟存储器:在具体层次存储器的计算机系统中,采用自动失效部分装入和部分对换的功能,为用户提供一个比物理主存容量大得多的,可寻址的移植“主存储器”,虚拟存储器是为扩大主存而采用的一种设计技巧。 虚拟存储器的容量和主存没有直接关系。 Linux的虚拟内存映射 在逻辑地址和物理地址之间相互转化的工作是由内核和硬件内存管理单元(MMU)共同完成的。MMU是CPU芯片内部的一部分。 内核告诉MMU如何为每个进程把某逻辑页面映射到某特定物理页面,而MMU在进程提出内存请求时完成实际的转化工作——动态地址映射方式。 内核空间和用户空间 Linux操作系统采用了请求式分页虚拟存储管理方法。系统为每个进程提供了4GB的虚拟内存空间。各个进程的虚拟内存彼此独立。 Linux的存储管理主要是管理进程虚拟内存的用户区。进程虚拟内存的用户区分成代码段、数据段、堆栈以及进程运行的环境变量、参数传递区域等。 表明: 使用的都是全局描述符表(GDT,包含着系统中所有任务都可用的那些描述符 ) 进程对段访问的请求权限(RPL),运行级别只用了0和3两级,内核为0级,用户进程为3级。 Linux运行在ARM时,进程的虚拟内存为4GB。它定义在/arch/arm/kernel/head-armv.S文件中: 从表面上看内核的基地址变为了0,但实际上,内核通常仍在虚址3G以上。其中奥妙在于不同的连接描述文件: 通过使用页机制提供的保护,阻止了用户程序访问内核空间。 一、进程虚拟存储空间的管理 struct mm_struct { Int count; /*共享进程数*/ Pdg_t *pgd; /*进程页目录表*/ Unsigned long context; /*进程上下文地址*/ Unsigned long start_code,end_code,start_data,end_data; /*代码段、数据段的首、终地址*/ Unsigned long start_brk,brk, start_stack,start_mmap;/* start_stack堆栈首地址*/ Unsigned long arg_start,arg_end,env_start,env_end; /*参数区、环境变量去的首、终地址*/ Unsigned long rss,total_vm,locked_vm; /* total_vm占用的虚拟内存总量*/ Unsigned long def_flags; Struct vm_area_struct *mmap; /*指向该进程虚拟区域链表首地址*/ Struct vm_area_struct *mmap_avl; /*指向该进程虚拟区域AVL树的根*/ Struct semaphore mmap_sem; /*信号量*/ } 一、进程虚拟存储空间的管理 3、虚存空间的映射和虚存区域的建立 一、进程虚拟存储空间的管理 核心的共享虚拟内存机制 虽然允许进程拥有分离(虚拟)的地址空间,但有时也需要进程之间共享内存。例如,系统中可能有多个进程运行命令解释程序bash 。尽管可以在每一个进程的虚拟地址空间都拥有一份 bash 的拷贝,但更好的方法是在物理内存中只拥有一份拷贝,所有运行 bash 的进程共享代码。动态连接库是多个进程共享执行代码的另一个常见例子。另外,共享内存也经常用于进程间通讯机制,两个或多个进程可以通过共同拥有的内存交换信息。Linux系统支持系统V的共享内存 IPC机制。 一、进程虚拟存储空间的管理 动态地址映射方式 Linux虚存采用动态地址映射方式,即进程的地址空间和存储空间的对应关系是在程序的执行过程中实现的。进程使用的是虚拟地址,因此它对每个地址的访问都需通过MMU把虚拟地址转化为内存的物理地址。 一、进程虚拟存储空间的管理
文档评论(0)