通常所说的"存储保护"的基本含义是(C)。
防止存储器硬件受损
防止程序在内存丢失
防止程序间相互越界访问
防止程序被人偷看
什么是存储保护:
在采用虚拟存储技术的存储系统中,一个多任务的操作系统经常将多个不同的程序同时调入主存执行,因此,首先需要保证这些程序间不会相互覆盖,并且,一个程序不能访问其他程序的数据以及不是分配给他的主存区域。其次,一个程序出错不会破坏其他用户程序和系统程序。通过一些限制方式保护主存中程序的技术被称为存储保护。简单的说,存储保护就是对主存中的程序和数据进行保护。为了降低开销,在进行存储保护的时候,通常不会直接保护单个存储单元,而是以页或者段为单位进行保护。
存储保护主要包括以下两个方面内容。
存储区域保护:
存储区域保护主要是为了防止地址越界。常用的存储区域保护方式有基于页表或段表的保护,键保护和环保护。
(1)基于页表或段表的保护。在分页式虚存中,每个程序的虚页号是固定的经过地址变换后的实存页号也是固定的。这样,程序只能访问或影响到相应的主存页面,不会影响或访问其他程序空间。
在分段式虚存中,段表和页表的保护功能类似,但段表还需要记录段的上界,下界和段长,这样就很容易保证程序访问的地址不越界。
(2)键保护方式:操作系统为主存中的每一页分配一个键,通常被称为存储键,用于指明保护的等级。!存储键相当于一把锁,只有拥有打开这把锁的钥匙才能访问相应的页面。而钥匙就是操作系统为每道程序分配的!访问键,该访问键通常保存在!该道程序的《状态寄存器》中。当程序要访问主存的某一页时,程序的访问键要与该页的存储键!进行比较。若两键相符,则允许访问该页,否则拒绝访问。
(3)环保护方式:操作系统按照系统程序和用户程序的重要性及对整个系统正常运行的影响程度,将程序分为多个保护级别(层),每个级别称为一个环,这样,各个级别就构成了同心环。在现行程序运行前由操作系统为程序设置!个页的环号,并置入页表中。并将该道程序的开始环号保存在CPU的<现行环号寄存器》中。程序可以访问任何外层空间。访问内层空间则需要由操作系统的环控《例行程序》判断这个向内访问是否合法。pentium微处理器采用环保护方式。
访问方式保护
访问方式保护是为了保证程序不能对主存执行非授权的操作,通常,通过对页表或者段表设置访问权限标志位来实现。
对内存信息的使用可以有以下三种方式:读(R),写(w)和执行(E),因此相应的访问权限就是R,W,E三种方式形成的逻辑组合。例如,R+W+E表示可以进行任何访问(全权限),(R+W)*E表示能够读和写但不能执行。
通常,操作系统对每个程序访问方式保护的规定如下:《对本程序所在存储区域拥有全权限。对共享!数据区域(或获得授权的其他用户数据区域)可读不可写。对共享程序区域(或获得授权的其他用户程序区域)!可执行。对操作系统内核等非授权区域不可访问。
这种访问方式经常和存储区域保护结合起来实现。例如基于页表和段表的保护方式下,通常将访问方式“位”保存在段表和页表中,使得同一个段内的不同页有不同的访问方式。这样可以提高保护的灵活性。
存储保护一般以硬件保护为主,以降低系统实现开销,提高保护效率。当发生访问越界等非法操作时,硬件产生中断,进入操作系统处理。