我正在阅读一本书,它比较了两种实现线程,中间件线程和操作系统线程的方法。我不知道这些句子的含义是什么: “然而,操作系统多线程的一个难点是性能开销。由于它是涉及切换线程的操作系统,这涉及系统调用。这些通常比在用户级别执行的线程操作更昂贵,这是事务中间件正在运行。“ 系统调用与性能的关系是什么?
答案 0 :(得分:1)
这本书可能有点过时了,中间件线程(又称光纤)大约在10年前流行。是的,上下文切换相对昂贵,大约在2000到10,000个CPU指令之间。它们需要内核转换并获取全局锁。用户线程可以避免大部分成本,只需要切换CPU状态。
但这不是免费的:
后一个问题很重要,吹缓存真的很贵。与内存相比,CPU内核变得如此之快,以至于废弃高速缓存的成本变得与OS上下文切换相当。获得大量CPU内核很便宜。
答案 1 :(得分:0)
对于大多数现代操作系统。 (Windows,* nix,MAC OS),操作系统内核驻留在受保护的地址空间中。并且为了保持受保护空间的完整性,只能从已知位置的用户空间输入该空间。因此,调用操作系统比在用户空间中进行普通函数调用要贵一些。 http://en.wikipedia.org/wiki/System_call。
286 CPU从用户空间到内核空间的速度相当慢,但是最新的CPU架构,如当前的x86和IA64,都有专门的指令,专门用于尽可能快地从用户空间到内核空间的转换,以及虽然它仍然比用户空间中的正常函数调用更昂贵,但我认为这本书所表明的关注程度并不合理。
答案 2 :(得分:0)
正如您引用的文字所说,系统调用通常比用户级线程操作更昂贵。
可能使系统调用昂贵的一些事情(与用户级函数调用相比):