操作系统线程介绍

什么是线程

线程是进程的一部分,是cpu调度的最小单位。每个线程拥有自己的堆栈及寄存器的保存。线程和进程一样至少有 就绪 运行 等待 三种状态。

为什么要引出线程的概念

我们可以想象一个场景,假如我们要实现一个播放音频文件的功能,首先需要我们从磁盘中读取音频文件,然后进行解压缩,然后在进行播放。为了完成这个任务,我们可以申请三个进程来分别执行这三个过程。但是我们需要这三个进程之间进行频繁的通信,而进程的设计(独立性)就是为了隔离各个进程,使用每个进程独立运行。若是要在进程间共享数据,就需要操作系统内核的帮助,开销很大,而且也不太符合进程当初设计的目的。因此设计师们引出了线程这一概念来解决这一问题。在一个进程内部,申请三个线程来并发执行这三个过程,因为这三个线程再同一个进程中,因此他们可以很容易的共享数据。

线程的特点

1.线程间可以并发执行
2.线程间共享同一块地址空间

用户线程

由一组用户级的线程库来完成对线程的管理(创建 终止 调度 同步)。线程控制块记录在进程内部。
优点:
1.可以在不支持多线程的操作系统中运行
2.线程之间切换速度快
缺点:
1.由于操作系统并不知道是多线程进程,因此一个线程由于系统调用而阻塞时,所有进程都会被阻塞。
2.并不支持线程层次的处理机抢占(只能由正在执行的线程主动放弃,其他线程才能执行)。
3.时间片是按多进程分配的,因此对于每个线程来说,分配的时间片太少了。

内核线程

由内核通过系统调用来实现线程。由内核完成对线程的管理(创建 终止 调度 同步)。线程控制块在内核中,进程控制块中有相应指针指向他的线程控制块。
优点:
1.线程执行系统调用时,其他线程不会被阻塞。
2.多线程程序可以获得更多的时间片。
缺点:
1.线程的切换开销大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值