操作系统之旅--03(线程)

 1. 线程的概念

       用它来提高程序并发执行的程度。提高资源的利用率和系统的吞吐量。

 2.对进程的一个总结:

     首先进程是一个可独立运行的基本单位。他有两个属性,第一进程是一个可拥有资源的独立单位,他如果不能拥有资源,那他就没办法运行,这些资源包括内存,磁盘,io设备等等。第二,进程同时又是一个可独立调度和分派的基本单位,因为进程有PCB,可根据PCB的信息来对进程进行调度,断点信息保存,恢复运行现场等等。

因为进程作为资源的拥有者,他在创建,撤销和切换的过程中会有较大的时空开销从而限制了并发程度的提高,所以有了更轻量级的线程。

 3.线程和进程的区别?

1.有了线程以后,线程就是调度和分派的基本单位,是能独立运行的基本单位,他的切换代价远远小于进程的切换代价,因为他仅需保存少量设置在寄存器中。

2.并发性,进程之间可以有并发性,同一进程的不同线程有并发性,不同进程的线程之间也可并发执行。

3.拥有的资源来看,进程可以拥有系统资源,线程本身不拥有系统资源,只有自己少量的必不可少的信息,比如控制线程运行的线程控制块PCB,程序计数器,局部变量等等。虽然线程不拥有系统资源,但是他可以共享进程所拥有的系统资源。

4.独立性,线程没有独立的地址空间,他们都是共享进程的内存地址空间。所以线程间的独立性比进程间的独立性低。

4.线程的三个基本状态:

    就绪状态:指线程已具备各种执行条件,只需再获得CPU便可立即执行。

   阻塞状态:指线程在执行中因某事件受阻而处于暂停状态,比如当一个线程执行从键盘读入数据的系统调用时,该线程就被阻塞。

   执行状态:表示线程已获得处理机而正在运行。

       

 5.  线程控制块TCB:

  包含线程的唯一标识符,一组寄存器,线程运行状态,线程占有存储区,堆栈指针。

 6.线程的实现方式:

    线程的实现可以分为两类:用户级线程(User-LevelThread, ULT)和内核级线程(Kemel-LevelThread,  KLT)。内核级线程又称为内核支持的线程。

  在用户级线程中有关线程管理的所有工作都由应用程序完成,内核意识不到线程的存在。应用程序可以通过使用线程库设计成多线程程序。通常,应用程序从单线程起始,在该线程中开始运行,在其运行的任何时刻,可以通过调用线程库中的派生例程创建一个在相同进程中运行的新线程。

所以用户级线程的实现模型就是多对一模型:

多对一模型

将多个用户级线程映射到一个内核级线程,线程管理在用户空间完成。

此模式中,用户级线程对操作系统不可见(即透明)。

优点:线程管理是在用户空间进行的,因而效率比较高。

缺点:当一个线程在使用内核服务时被阻塞,那么整个进程都会被阻塞;多个线程不能并行地运行在多处理机上

 

在内核级线程中,线程管理的所有工作由内核完成,应用程序没有进行线程管理的代码,只有一个到内核级线程的编程接口。内核为进程及其内部的每个线程维护上下文信息,调度也是在内核基于线程架构的基础上完成。

  内核级线程的实现模型就是一对一模型: 

  将每个用户级线程映射到一个内核级线程。

  优点:当一个线程被阻塞后,允许另一个线程继续执行,所以并发能力较强。

  缺点:每创建一个用户级线程都需要创建一个内核级线程与其对应,这样创建线程的开销比较大,会影响到应用程序的性能。

在一些系统中,使用组合方式的多线程实现。线程创建完全在用户空间中完成,线程的调度和同步也在应用程序中进行。一个应用程序中的多个用户级线程被映射到一些(小于或等于用户级线程的数目)内核级线程上。

三种模型的图解:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

时空恋旅人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值