【操作系统基础】线程

线程

在传统的操作系统中,每个进程有一个地址空间和一个控制线程。事实上,这几乎就是进程的定义,不过,经常存在同一个地址空间中准并行运行多个控制线程的情形,这些线程就像分离的进程。

线程的使用

为什么人们需要在一个进程中再有一类进程?

主要原因是:在许多的应用中同时发生着多种活动,某些活动会随着时间的推移会被阻塞,通过将这些应用程序分解成可以准并行运行的多个顺序线程,程序设计模型会变得更简单。

  1. 并行实体拥有共享同一个地址空间和所有可用数据的能力
  2. 由于线程比进程更轻量级,所以他们比进程更容易(即更快)创建,也更容易撤销。
  3. 可以加快应用程序的执行速度。(如果多个线程不是CPU密集的,那么多个线程允许这些活动彼此重叠进行,从而会加快应用程序执行的速度)

经典的线程模型

进程模型基于两种独立的概念:资源分组处理和执行。有时,将这两种概念分开会更好,这就引入了”线程“这一概念。

理解进程的一个角度是,用某种方法把相关资源集中在一起。进程有存放程序正文和数据以及其他资源的地址空间。这些资源中包括打开的文件、子进程、即将发生的定时器、信号处理程序 、账号信息等。把它们放到进程中可以更容易管理。

另一个概念是,进程拥有一个执行的线程,通常简写为线程。在线程中有一个程序计数器,用来记录接着要执行哪一条指令。线程拥有寄存器,用来保存现场当前的工作变量。线程还拥有一个堆栈,用来记录执行历史,其中每一帧保存了一个已经调用的但是还没有从中返回的过程。尽管线程必须在某个进程中执行,但是线程和它的进程是不同的概念,并且可以分别处理。进程用于把资源集中到一起,而线程则是在CPU上被调度执行的实体

线程给进程模型增加了一项内容,即在同一个进程环境中,允许彼此之间有较大独立性的多个线程执行。

需要注意的是:进程共享计算机的物理内存、磁盘、打印机和其他资源。而多个线程共享进程的地址空间和其他资源。由于线程具有进程的某些性质,所以有时候被称为轻量级进程。而多线程指的是同一个进程中允许多个线程的情况。

每个进程中的内容:(线程共享的内容)

  • 地址空间
  • 全局变量
  • 打开文件
  • 子进程
  • 即将发生的定时器
  • 信号和信号处理程序
  • 账户信息

每个线程中的内容(线程的私有内容)

  • 程序计数器
  • 寄存器
  • 堆栈
  • 状态

线程概念试图实现的是,共享一组资源的多个线程的执行能力,以便这些线程可以为完成某一个任务而共同工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vivien_o.O

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值