什么是多线程
试题:
什么是多线程
答案:
多线程是指从软件或者硬件上实现多个线程并发执行的技术。
【相关阅读】[由整理]
多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程潜力的计算机因有硬件支持而能够在同一时光执行多于一个线程,进而提升整体处理性能。具有这种潜力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-levelmultithreading)或同时多线程(Simultaneousmultithreading)处理器。 在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理(Multithreading)”。具有多线程潜力的计算机因有硬件支持而能够在同一时光执行多于一个线程(台湾译作“执行绪”),进而提升整体处理性能。
在计算机编程中,一个基本的概念就是同时对多个 任务加以控制。许多 程序设计问题都要求程序能够停下手
头的工作,改为处理其他一些问题,再回到主 进程。能够透过多种途径到达这个目的。最开始的时候,那些掌握机器低级语言的 程序员编写一些“中断服务例程”,主 进程的暂停是透过 硬件级的中断实现的。尽管这是一种有用的方法,但编出的 程序很难移植,由此造成了另一类的代价高昂问题。中断对那些实时性很强的 任务来说是很有必要的。但对于其他许多问题,只要求将问题划分进入独立运行的 程序片断中,使整个程序能更迅速地响应用户的请求。
最开始,线程只是用于分配单个处理器的处理时光的一种工具。但假如 操作系统本身支持多个处理器,那么每个线程都可分配给一个不一样的处理器,真正进入“并行运算”状态。从 程序设计语言的角度看,多线程操作最有价值的特性之一就是 程序员不必关心到底使用了多少个处理器。 程序在逻辑好处上被分割为数个线程;假如机器本身安装了多个处理器,那么程序会运行得更快,毋需作出任何特殊的调校。根据前面的论述,大家可能感觉线程处理十分简单。但务必注意一个问题:共享资源!如果有多个线程同时运行,而且它们试图访问相同的资源,就会遇到一个问题。举个例子来说,两个线程不能将信息同时发送给一台 打印机。为解决这个问题,对那些可共享的资源来说(比如 打印机),它们在使用期间务必进入锁定状态。所以一个线程可将资源锁定,在完成了它的 任务后,再解开(释放)这个锁,使其他线程能够之后使用同样的资源。
多线程是为了同步完成多项 任务,不是为了提高运行效率,而是为了提高 资源使用效率来提高系统的效率。线程是在同一时光需要完成多项 任务的时候实现的。
最简单的比喻多线程就像火车的每一节 车厢,而进程则是火车。车厢离开 火车是无法跑动的,同理火车也不可能只有一节车厢。多线程的出现就是为了提高效率。同时它的出现也带来了一些问题。
用途
在大多数研究领域内是要求线程调度程序要能够快速选取其中一个已就绪线程去运行,而不是一个一个运行而降低效率。所以要让调度程序去分辨线程的优先级是很重要的。而线程调度程序可能是以硬件、软件,或是软硬件并存的形式存在。
而另一个研究领域则是要研究何种事件(高速缓存失败、内部运行连续性、使用DMA等)会造成线程切换。
如果多线程的方案会复制 所有软件可见的状态,包括特许的控制登录、TLB 等,那就能够让 虚拟机去创造各式线程。这样貌就允许在相同的处理器中每个线程跑各自的操作系统。换句话说,如果只有存储了用户模式的状态,就能够让相同的裸晶大小的芯片在一段时光内处理更多的线程。
硬件支持 修改
多线程硬件支持的目标,即支持快速进行就绪态线程、执行态线程间的切换。为达成这个目标,需要硬件实现保存、恢复程序看得见的寄存器以及一些对程序执行有影响的控制寄存器(如程序计数器PC、程序状态寄存器SR)。从一个线程切换到另一个线程对硬件来讲意味着保存当前线程的一组寄存器的值,并恢复即将执行线程的一组寄存器的值。
新增这些功能的硬件有以下优势:
为了在各个线程间有效率的进行切换,每个线程需要保存自我的一组寄存器集(register set)。有些硬件设计成每个处理器核心具有两组寄存器文件,以实此刻多个线程间快速切换。
- 上一篇:元稹的唐诗阅读鉴赏试题及答案
- 下一篇:其身不正虽令不从