深入理解操作系统[5]:线程

1. 进程与线程

· 进程的两个特点:
   1. 进程总是拥有对资源的控制权和所有权;
   2. 进程具有执行状态和分配给优先级,是可以被操作系统调度和分派的实体。
   当区分这两个特点时,通常把分派的单位称作轻量级进程,而资源拥有权的单位叫做进程(或作业,task)。


· 引入线程
  由于进程是一个资源的拥有者,因而在创建、撤消和切换中,系统必须为之付出较大的时空开销。因此进程数目不宜过多,进程切换的频率也不宜过高,这也就限制了并发程度的进一步提高。
  若能将进程的上述两个属性分开,由操作系统分开处理,亦即对于作为调度和分派的基本单位,不同时作为拥有资源的单位,以做到“轻装上阵”;而对于拥有资源的基本单位,又不对之进行频繁的切换。正是在这种思想的指导下,形成了线程的概念。


· 对比
  1. 进程的引入是为了使多个程序并发执行,提高资源利用率和系统吞吐量;线程是为了减少程序在并发执行过程中所付出的时空开销,使操作系统具有更好的并发性
  2. 在单线程进程模型中,进程包括PCB,用户地址空间,执行过程种的用户栈和内核栈。当进程运行时处理器寄存器由内核控制,未运行时保存寄存器内容。
   多线程环境中,进程仍只有一个PCB和用户地址空间。但每个线程有多个单独的栈和单独的控制块

· 线程的优点
  1. 创建,终止,切换线程比进程快;
  2. 线程提高不同执行程序间的通信效率,因独立进程间通信需介入内核进行保护,而同一进程中的多线程无需调入内核。


2. 线程

线程的特点
  1. 不拥有系统资源;
  2. 是独立调度和分派的基本单位(线程切换速度快,开销小);
  3. 可并发执行;
  4. 与进程内其他线程共享进程资源。


线程的分类

  1. 用户级线程:
     管理线程的所有工作都由应用程序完成,内核感觉不到线程的存在,任何程序都可以使用线程库设计多线程程序。
     用户级线程是在用户空间实现的。所有的用户级线程都具有相同的结构,它们都运行在一个中间系统的上面。当前有两种方式实现的中间系统,即运行时系统和内核控制线程。所谓“运行时系统”,实质上是用于管理和控制线程的函数(过程)的集合,其中包括用于创建和撤消线程的函数、 线程同步和通信的函数以及实现线程调度的函数等。正因为有这些函数,才能使用户级线程与内核无关。运行时系统中的所有函数都驻留在用户空间,并作为用户级线程与内核之间的接口。内核控制线程又称为轻型进程 LWP(Light Weight Process)。每一个进程都可拥有多个 LWP,同用户级线程一样,每个 LWP 都有自己的数据结构(如 TCB),其中包括线程标识符、优先级、状态,另外还有栈和局部存储区等。它们也可以共享进程所拥有的资源。LWP 可通过系统调用来获得内核提供的服务,这样,当一个用户级线程运行时,只要将它连接到一个LWP 上,此时它便具有了内核支持线程的所有属性。这种线程实现方式就是组合方式。
    优点: -1. 线程不需要切换到内核模式,节省两次状态转换;
        -2. 调度因应用程序不同而不同,可量身定制;
        -3. 可以在任何操作系统种运行;
    缺点: -1. 进行系统调用时,会阻塞同一进程中的所有线程;
        -2. 在纯UTL策略中多线程程序无法利用多处理技术。
  2. 内核级线程:
     管理线程的所有工作都由内核完成,应用级没有线程管理代码,只有一个内核线程设施API,典型的就是Windows系统。
     系统在创建一个新进程时,便为它分配一个任务数据区,其中包括若干个线程控制块TCB 空间.在每一个 TCB 中可保存线程标识符、优先级、线程运行的 CPU状态等信息。虽然这些信息与用户级线程 TCB 中的信息相同,但现在却是被保存在内核空间中。内核支持线程的调度和切换与进程的调度和切换十分相似,也分抢占式方式和非抢占方式两种。在线程的调度算法上,同样可采用时间片轮转法、优先权算法等。
    优点: -1. 内核可以同时把同一进程的多个线程调入多个处理器;
        -2. 一个线程被阻塞时内核可以调度同进程的另一线程;
        -3. 内核例程自身也是多线程。
    缺点: --. 需进行模式切换。

.
.
.
.
.
.


桃花仙人种桃树,又摘桃花换酒钱_

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值