您的位置:首页 > 教育 > 培训 > 海诚互联_南昌网站建设工作_安庆seo_优化大师官方免费

海诚互联_南昌网站建设工作_安庆seo_优化大师官方免费

2025/2/24 2:46:51 来源:https://blog.csdn.net/qq_74160210/article/details/143134309  浏览:    关键词:海诚互联_南昌网站建设工作_安庆seo_优化大师官方免费
海诚互联_南昌网站建设工作_安庆seo_优化大师官方免费

线程的概念

  1. 程序中的一个执行路线就是线程,线程就是一个进程内部的控制序列
  2. 一个进程至少都有一个执行线程
  3. 线程在进程内部运行,本质是在进程地址空间内运行
  4. liunx系统下,cpu眼里的PCB比传统进程更加轻量化
  5. 透过虚拟地址空间,把进程的大部分资源,把资源合理分配给每个执行流,就形成了线程

线程和进程

  • 进程是资源分配的基本单位
  • 线程是调度的基本单位
  • 线程共享进程地址空间,但是也有自己的一部分数据:线程ID,一组寄存器,栈,errno,信号屏蔽字,有限调度级

线程私有

1.线程的硬件上下文(cpu寄存器的值

线程的硬件上下文是指线程在执行过程中,CPU寄存器的当前状态。这些寄存器包括通用寄存器、程序计数器(IP)、处理器状态寄存器(如EFLAGS在x86架构中)以及栈指针(ESP)等。这些寄存器的值在线程切换时会被保存,以便在线程重新获得CPU时能够恢复其执行状态。

  • 通用寄存器:用于存储线程在执行过程中的临时数据。
  • 程序计数器:存储线程当前正在执行的指令的地址,或者即将执行的下一条指令的地址。
  • 处理器状态寄存器:包含线程的执行状态信息,如条件码、中断标志等。
  • 栈指针:指向线程私有栈的栈顶,用于管理线程的栈空间。

在线程切换时,操作系统会保存当前线程的硬件上下文,并加载下一个要执行的线程的硬件上下文。这样,当线程重新获得CPU时,它可以从上次中断的地方继续执行。

2.线程的独立栈结构

每个线程都有自己独立的栈结构,用于存储线程的局部变量、函数调用信息以及返回地址等。线程的栈空间是线程私有的,这意味着一个线程不能访问另一个线程的栈空间。

  • 栈的作用

    • 存储局部变量:线程在执行函数时,会在栈上分配空间来存储局部变量。
    • 函数调用信息:当线程调用一个函数时,会在栈上保存函数的参数、返回地址以及调用者的上下文信息。
    • 返回地址:当函数执行完毕后,线程会从栈上获取返回地址,并跳转到该地址继续执行。
  • 栈的独立性

    • 线程的栈空间是私有的,这保证了线程之间的数据隔离。
    • 一个线程的栈空间大小是有限的,通常由操作系统在创建线程时指定。
    • 如果线程使用的栈空间超过了指定的限制,就会发生栈溢出错误。

 线程共有

  • 进程地址空间
  • 全局变量
  • 文件描述表
  • 每种信号的处理方式
  • 当前工作目录
  • 用户id和组id

线程就是轻量级进程 

在Linux系统中,线程通常是通过轻量级进程来实现的。线程与轻量级进程在概念上是相似的,都表示进程内部的一个执行单元。linux中没有线程相关的系统调用,只有轻量级进程的系统调用。原生线程库:将轻量级进程系统调用做封装,转成线程相关的接口语义提供给用户

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com