Dsphinx.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]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}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h翻译h]h翻译}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhKubh)}(h-司延腾 Yanteng Si h]h)}(h,司延腾 Yanteng Si h](h司延腾 Yanteng Si <}(hj hhhNhNubh reference)}(hsiyanteng@loongson.cnh]hsiyanteng@loongson.cn}(hj*hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:siyanteng@loongson.cnuh1j(hj ubh>}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h校译h]h校译}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhhhKubh)}(h*吴想成 Wu XiangCheng h]h)}(h)吴想成 Wu XiangCheng h](h吴想成 Wu XiangCheng <}(hjehhhNhNubj))}(hbobwxc@email.cnh]hbobwxc@email.cn}(hjmhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:bobwxc@email.cnuh1j(hjeubh>}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjaubah}(h]h ]h"]h$]h&]uh1hhjPubeh}(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进行交互:}(hjhhhNhNubah}(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);}hj#sbah}(h]h ]h"]h$]h&]hhuh1j!hhhK-hjhhubh)}(h在使用一个pkey之前,必须先用pkey_alloc()分配它。一个应用程序直接调用 WRPKRU指令,以改变一个密钥覆盖的内存的访问权限。在这个例子中,WRPKRU 被一个叫做pkey_set()的C函数所封装::h]h在使用一个pkey之前,必须先用pkey_alloc()分配它。一个应用程序直接调用 WRPKRU指令,以改变一个密钥覆盖的内存的访问权限。在这个例子中,WRPKRU 被一个叫做pkey_set()的C函数所封装:}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjhhubj")}(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}hj?sbah}(h]h ]h"]h$]h&]hhuh1j!hhhK6hjhhubh)}(h现在,如果应用程序需要更新'ptr'处的数据,它可以获得访问权,进行更新, 然后取消其写访问权::h]h现在,如果应用程序需要更新’ptr’处的数据,它可以获得访问权,进行更新, 然后取消其写访问权:}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjjj9j6u nametypes}(jBjAjj9uh}(jjj>jjjj6ju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jzKsRparse_messages]transform_messages]hsystem_message)}(hhh]h)}(hhh]hAHyperlink target "cn-core-api-protection-keys" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehlineKuh1juba transformerN include_log]=Documentation/translations/zh_CN/core-api/protection-keys.rst(NNNNta decorationNhhub.