操作系统原理及应用(Linux)(第二)存储器的管理课件文本资料.ppt

操作系统原理及应用(Linux)(第二)存储器的管理课件文本资料.ppt

  1. 1、本文档共116页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.分段保护 在分段系统中,由于每个分段是独立的,因此比较容易实现信息保护。目前,采用以下几种方式保护信息。 (1)越界检查 在段表寄存器中,存放段表长度信息;同样,在段表中也为每个段表设置段长字段,将逻辑地址空间的段号和段表长度进行比较,若等于或大于段表长度,则发出越界中断信号,其次还要检查段内地址是否等于或大于段长。若大于段长,将产生越界中断信号,从而保证进程有自己的地址空间。 第4章 存储器管理 * (2)存取控制检查 在段表的每个表项中,设置一个存取控制字段,通常的访问方式有 (a)只读。只允许程序对该段中的程序和数据进行访问。 (b)只执行。只允许执行,但不允许读写。 (c)读/写。允许程序对该段进行读写控制。不同的访问对象,赋予不同的权限。 * (3)环保护机构 它是一种较完善的保护机构。在该机制中规定:低编号的环具有较高的优先权。OS居于0环内;某些重要的系统软件占据中间环。而一般的应用程序位于外环。程序访问和调用的规则遵循: (a)一个程序可以访问驻留在相同环或较低环中的数据。 (b)一个程序可以调用驻留在相同环或高特权环中的服务。 第4章 存储器管理 * 4.8 Linux系统的内存管理方法 4.8.1 Linux的分页管理机制 在Linux中,每个用户进程都可以访问4GB的线性虚拟内存空间。其中从0到 3GB的虚拟地址空间是用户空间,用户进程可以直接对其进行访问。从3GB到4GB的虚拟内存地址空间为内核态空间,存放仅供内核态访问的代码和数据,用户态进程不可访问。 所有的进程从3GB到4GB 的虚拟空间是一样的,有同样的页目录项,同样的页表,对应同样的物理内存段。Linux以此方式让内核态进程共享代码段和数据段。 * 内核态虚拟空间从3GB到3GB+4MB的一段,被映射到物理空间0到4MB。 Linux 采用“按需调页”技术管理虚拟内存。标准Linux的虚存页表应为三级页表,依次为页目录(Pgd,page Directory)、中间页目录(PMD,page Middlie Directory)和页表(PTE,PageTable) 。 * 4.8.2虚存段的组织与管理 用户进程实际可申请的虚存空间为0至3GB。在用户进程创建时,已由系统调用fork()的执行函数do_fork()将内核的代码段和数据段映射到3GB以后的虚存空间,供内核态进程访问。所有进程的3GB到4GB的虚存空间的映象都是相同的。以此方式共享代码段和数据段。 * 4.8.3内存的共享和保护 Linux中内存共享以页表的形式实现,共享该页的各进程的页表表项直接指向共享页。这种结构不需要设立共享页表,节约内存的占用,但效率较低。当共享页状态发生变化时,共享该页的各进程的页表均需要修改,要多次访问页表。 * 4.8.4物理空间管理 尽管Linux采用虚拟存储管理策略,有些申请仍然需要直接分配物理空间。例如,为刚创建的进程分配页目录,为装入进程的代码段分配空间,为I/O操作准备缓冲区等等。物理 内存以页帧为单位,页帧的长度固定,等于页长,对于INTEL CPU缺省为4KB字节。 Linux对物理内存的管理通过mem_map表描述。mem_map在系统初始化时,由free_area_init()函数创建。 * 4.8.5空闲物理内存管理 在物理内存低端,紧跟mem_map表的bitmap表以位示图方式记录了所有物理内存的空闲情况。与men_map一样,bitmap表在系统初始化时有free_area_init()函数创建。 * 4.8.6态内内核存的申请与释放 内核态内存是用来存放Linux内核系统数据结构的内存区域,处于进程虚拟空间的3GB至4GB范围内。内核态内存的分配和释放以块为单位。 4.8.7 用户态内存的申请和释放 Linux用kmalloc()函数和kfree()函数提供内核内存申请、释放的接口。它还实现另一种虚拟空间的申请、释放界面,就是vmalloc()和vfree()。 由vmalloc()分配的存储空间在进程的虚拟空间时连续的,但物理页帧不是连续的。 * 4.8.8 交换空间 当内存太小时,操作系统采用交换的方式。Linux采用两种方式保存换出的页面。一种是整个块设备,如磁盘的一个分区,称做交换设备。另一种用文件系统的固定长度的文件,称做交换文件,它们统称为交换空间。尽管交换空间有两种不同的方式,但它们的内部格式是一致的。一个交换空间最多可容纳32687个页面。 * 4.8.9 页交换进程和页面换出 当物理页面不够时,Linux存储管理系统必须释放部分物理页面,将它们的内容写到交换空间。实现此功能的是内核态交换程

文档评论(0)

糖糖 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档