gpt4 book ai didi

multithreading - 保护一个线程的线程本地存储免受其他线程的攻击

转载 作者:行者123 更新时间:2023-12-03 13:04:37 26 4
gpt4 key购买 nike

线程本地存储是在线程之间不共享数据的多线程应用程序中reduce synchronization开销的一种方法。这就需要围绕某些线程本地内存位置(例如TLS和堆栈)的保护机制,以便只有一个线程可以访问该内存。由于进程中的所有线程共享相同的虚拟地址空间,如何保护线程的本地线程存储和堆栈免受同一进程的其他线程的侵害?

我想操作系统应该提供这样的保护机制,如果可以的话,怎么办? ...线程本地存储的整个概念是减少开销,因此涉及OS意味着增加了开销。是否有运行时库或硬件支持?或者也许根本没有受到保护,而是留给程序员...

最佳答案

您认为程序员可以在同一进程中访问另一个线程的线程本地存储空间是正确的。因为程序员将不得不直接访问内存或使用一些未公开的API,但这并不是微不足道的,但是从理论上讲可以做到这一点。但是,为什么他(或她)呢? TLS的整个前提是使程序员可以轻松地将数据存储在不与流程中其他线程共享的位置。

线程本地存储由操作系统管理的事实意味着,线程本地存储在进程内存中的实际位置不会直接发布。通过提供简单的Get/Set api,操作系统以相对较低的开销(函数调用)“管理”对TLS的读写。这里的保护主要是为方便起见,因为它使某人难以意外访问属于另一个线程(也被访问)的数据。

关于multithreading - 保护一个线程的线程本地存储免受其他线程的攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30989192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com