WEB开发网
开发学院操作系统Linux/Unix AIX 6 和 POWER 6 中的内存保护存储键(storage k... 阅读

AIX 6 和 POWER 6 中的内存保护存储键(storage keys)

 2008-09-06 08:19:31 来源:WEB开发网   
核心提示: 另外请注意,存储键不是安全功能(存储键安全功能指应用到内存的一项普通安全机制,AIX 6 和 POWER 6 中的内存保护存储键(storage keys)(2),可保证进程拥有自己的地址空间,并能访问具有自己的保护机制的共享内存),但这没有什么意义! POWER6 CPU 提供了一个额外

另外请注意,存储键不是安全功能(存储键安全功能指应用到内存的一项普通安全机制,可保证进程拥有自己的地址空间,并能访问具有自己的保护机制的共享内存)。

存储键是用于协作程序的调试功能,可确定有问题的代码,以便消除问题,从而提高可靠性。还可以将其用于其他情况,例如运行用户编写的服务器存储过程的数据库,以保护数据库不受用户编程错误的影响。锁定,以保护数据

锁定,以保护数据

考虑一下包含数十亿内存页的大型系统,程序访问内存的速度非常快,因此要检查这些锁定,也需要非常快,即在毫微秒级单位进行。因此,我们不能使用数百万个键来交叉检查对内存的每次读写,因此只需要少量的锁定和键。每个内存页都有一个锁定,缺省为锁定状态(编号为 0),称为 UKEY_PUBLIC,即内存按照正常或解锁方式工作,可以进行读写操作(对于程序代码之类的只读部分只能进行只读操作)。

程序可以将内存锁定更改为 UKEY_PRIVATE1……UKEY_PRIVATE32。此操作通过函数调用完成ukey_protect( address, size, UKEY_PRIVATE1)

注意:

Address 必须为页面对齐

Size 必须为页面大小的倍数

AIX 有 4 种页面大小!

获得访问的键

现在要访问此受保护的内存,进程必须具有恰当的键。键具有不同的选项

无权访问

读访问

写访问

读写访问

可以设置只写访问,但这没有什么意义!

POWER6 CPU 提供了一个额外的寄存器,称为 ASR,其中保存当前的键和选项。

其设置如下:ukeyset_t none, reader, writer;    /* define three keys */
ukeyset_init(none,0);      /* initialise one */
writer = reader = none;      /* you can copy a key - this initialises the other keys */
ukset_add_key(&reader,UKEY_PRIVATE1, UK_READ); /* set the read permission bits */
ukset_add_key(&writer,UKEY_PRIVATE1, UK_RW);  /* set the read and write permission bits */
uketset_activate(writer, UKA_REPLACE_KEYS);    /* Activate the key to the ASR register */

上一页  1 2 3 4  下一页

Tags:AIX POWER 内存

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接