C#-CLR note - 26线程

2021-04-22 03:28

阅读:615

标签:分离   属性   window   上下   cpu   时间   切换   连接   调度   

26.2 线程开销

内存占用

  • 线程内核对象
    拥有线程描述属性与线程上下文,线程上下文占用的内存空间为 x86 架构 占用 700 字节、x64 架构 1240 字节 、ARM 架构 350 字节。

  • 线程环境块(TEB)
    TEB 消耗一个内存页,占用 4KB内存。

  • 用户模式栈。
    用户模式栈存储传递给方法的局部变量与实参,并且还存储有一个地址用于当前方法返回的时候,线程应该从哪个地方继续执行。默认 Windows 分配保留 1MB 内存。

  • 内核模式栈。
    32 位 Windows 占用 12 KB,64 位 Windows 占用 24 KB。

  • DLL 线程连接与线程分离通知。

上下文切换
任何时刻一个线程只分配一个CPU,只能运行一个“时间片”(也称“量”“量程”)的长度。时间片到期,就上下文切换到另一个线程。每次操作都有以下操作:

  • 将 CPU 寄存器值存储在当前正在运行的线程的内核对象内部的上下文结构之中。
  • 从先有线程集合选取一个线程供调度,如果该线程属于另一个进程,还得切换 CPU 能够操作的虚拟地址空间。
  • 将上下文结构中的值加载到 CPU 寄存器之中。

C#-CLR note - 26线程

标签:分离   属性   window   上下   cpu   时间   切换   连接   调度   

原文地址:https://www.cnblogs.com/Jaysonhome/p/13278572.html


评论


亲,登录后才可以留言!