Esphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/core-api/protection-keysmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/zh_TW/core-api/protection-keysmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/it_IT/core-api/protection-keysmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/ja_JP/core-api/protection-keysmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/ko_KR/core-api/protection-keysmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/pt_BR/core-api/protection-keysmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/sp_SP/core-api/protection-keysmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Simplified)uh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhY/var/lib/git/docbuild/linux/Documentation/translations/zh_CN/core-api/protection-keys.rsthKubhnote)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]h paragraph)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_CN/disclaimer-zh_CN.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(h+Documentation/core-api/protection-keys.rst h]h)}(h*Documentation/core-api/protection-keys.rsth]h*Documentation/core-api/protection-keys.rst}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h翻译h]h翻译}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhKubj)}(h-司延腾 Yanteng Si h]h)}(h,司延腾 Yanteng Si h](h司延腾 Yanteng Si <}(hj4hhhNhNubh reference)}(hsiyanteng@loongson.cnh]hsiyanteng@loongson.cn}(hj>hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:siyanteng@loongson.cnuh1j<hj4ubh>}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj0ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h校译h]h校译}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhhhKubj)}(h*吴想成 Wu XiangCheng h]h)}(h)吴想成 Wu XiangCheng h](h吴想成 Wu XiangCheng <}(hjyhhhNhNubj=)}(hbobwxc@email.cnh]hbobwxc@email.cn}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:bobwxc@email.cnuh1j<hjyubh>}(hjyhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjuubah}(h]h ]h"]h$]h&]uh1hhjdubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhtarget)}(h .. _cn_core-api_protection-keys:h]h}(h]h ]h"]h$]h&]refidcn-core-api-protection-keysuh1jhKhhhhhhubhsection)}(hhh](htitle)}(h内存保护密钥h]h内存保护密钥}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubh)}(hX用户空间的内存保护密钥(Memory Protection Keys for Userspace,PKU,亦 即PKEYs)是英特尔Skylake(及以后)“可扩展处理器”服务器CPU上的一项功能。 它将在未来的非服务器英特尔处理器和未来的AMD处理器中可用。h]hX用户空间的内存保护密钥(Memory Protection Keys for Userspace,PKU,亦 即PKEYs)是英特尔Skylake(及以后)“可扩展处理器”服务器CPU上的一项功能。 它将在未来的非服务器英特尔处理器和未来的AMD处理器中可用。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h对于任何希望测试或使用该功能的人来说,它在亚马逊的EC2 C5实例中是可用的, 并且已知可以在那里使用Ubuntu 17.04镜像运行。h]h对于任何希望测试或使用该功能的人来说,它在亚马逊的EC2 C5实例中是可用的, 并且已知可以在那里使用Ubuntu 17.04镜像运行。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX 内存保护密钥提供了一种机制来执行基于页面的保护,但在应用程序改变保护域 时不需要修改页表。它的工作原理是在每个页表项中为“保护密钥”分配4个以 前被忽略的位,从而提供16个可能的密钥。h]hX 内存保护密钥提供了一种机制来执行基于页面的保护,但在应用程序改变保护域 时不需要修改页表。它的工作原理是在每个页表项中为“保护密钥”分配4个以 前被忽略的位,从而提供16个可能的密钥。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX还有一个新的用户可访问寄存器(PKRU),为每个密钥提供两个单独的位(访 问禁止和写入禁止)。作为一个CPU寄存器,PKRU在本质上是线程本地的,可能 会给每个线程提供一套不同于其他线程的保护措施。h]hX还有一个新的用户可访问寄存器(PKRU),为每个密钥提供两个单独的位(访 问禁止和写入禁止)。作为一个CPU寄存器,PKRU在本质上是线程本地的,可能 会给每个线程提供一套不同于其他线程的保护措施。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h有两条新指令(RDPKRU/WRPKRU)用于读取和写入新的寄存器。该功能仅在64位 模式下可用,尽管物理地址扩展页表中理论上有空间。这些权限只在数据访问上 强制执行,对指令获取没有影响。h]h有两条新指令(RDPKRU/WRPKRU)用于读取和写入新的寄存器。该功能仅在64位 模式下可用,尽管物理地址扩展页表中理论上有空间。这些权限只在数据访问上 强制执行,对指令获取没有影响。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK#hjhhubj)}(hhh](j)}(h 系统调用h]h 系统调用}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhK)ubh)}(h5有3个系统调用可以直接与pkeys进行交互::h]h4有3个系统调用可以直接与pkeys进行交互:}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hjhhubh literal_block)}(hint pkey_alloc(unsigned long flags, unsigned long init_access_rights) int pkey_free(int pkey); int pkey_mprotect(unsigned long start, size_t len, unsigned long prot, int pkey);h]hint pkey_alloc(unsigned long flags, unsigned long init_access_rights) int pkey_free(int pkey); int pkey_mprotect(unsigned long start, size_t len, unsigned long prot, int pkey);}hj7sbah}(h]h ]h"]h$]h&]hhuh1j5hhhK-hjhhubh)}(h在使用一个pkey之前,必须先用pkey_alloc()分配它。一个应用程序直接调用 WRPKRU指令,以改变一个密钥覆盖的内存的访问权限。在这个例子中,WRPKRU 被一个叫做pkey_set()的C函数所封装::h]h在使用一个pkey之前,必须先用pkey_alloc()分配它。一个应用程序直接调用 WRPKRU指令,以改变一个密钥覆盖的内存的访问权限。在这个例子中,WRPKRU 被一个叫做pkey_set()的C函数所封装:}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjhhubj6)}(hint real_prot = PROT_READ|PROT_WRITE; pkey = pkey_alloc(0, PKEY_DISABLE_WRITE); ptr = mmap(NULL, PAGE_SIZE, PROT_NONE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); ret = pkey_mprotect(ptr, PAGE_SIZE, real_prot, pkey); ... application runs hereh]hint real_prot = PROT_READ|PROT_WRITE; pkey = pkey_alloc(0, PKEY_DISABLE_WRITE); ptr = mmap(NULL, PAGE_SIZE, PROT_NONE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); ret = pkey_mprotect(ptr, PAGE_SIZE, real_prot, pkey); ... application runs here}hjSsbah}(h]h ]h"]h$]h&]hhuh1j5hhhK6hjhhubh)}(h现在,如果应用程序需要更新'ptr'处的数据,它可以获得访问权,进行更新, 然后取消其写访问权::h]h现在,如果应用程序需要更新’ptr’处的数据,它可以获得访问权,进行更新, 然后取消其写访问权:}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK