操作系统——多线程

简介: 操作系统——多线程

1,什么是线程(Thread)


  • 线程是处理代码的执行流,有着自己的程序计数器,用来追踪下一次执行的指令,系统寄存器持有它的变量,栈包含了它的执行历史。
  • 线程间可进行数据共享。当一个线程改变了内存,其他线程亦可以看到。
  • 线程也叫做轻量级进程。线程基于并行工作提高应用程序的性能。线程是一种提高操作系统性能的软件方法,但是其开销小于多进程。
  • 每一个线程都存在一个特定的进程中。没有任何一个线程可存在于一个进程外。线程成功地被用于实现网络服务器和web服务器。


下图就是单进程单线程和单进程多线程示意图。

image.png


2,进程和线程的不同


序号 进程 线程
1 进程是重量级,资源密集型 轻量级,消耗更小的资源(与进程比)
2 进程切换需要操作系统交互 线程切换不需要操作系统交互
3 多进程,相同代码,但每个进程拥有自己的资源 所有的线程可共用资源
4 当一个进程阻塞,其他进程等待 当一个线程阻塞,后续线程可执行
5 多进程中不用线程会用更多的资源 多线程进程用更傻少的资源
6 多进程中,每个进程都是相互独立的 一个线程可以改变读,写,改变其它线程的数据


3,线程的优点


  • 线程降低了上下文切换的时间
  • 多线程使得在进程中并发执行任务
  • 有效的通信
  • 线程的创建和切换上下文更加经济
  • 线程使得多处理器架构伸缩性更高、更有效


4,线程的类别


  • 用户级线程——用户管理的线程
  • 内核级线程——操作系统管理线程


4.1 用户级线程


在这种情况下,线程管理内核没有意识到线程的存在。线程库包含了创建和销毁线程的代码,包含了在线程间传递消息和数据的代码,以及调度线程执行和保存、恢复线程上下文的代码。应用被一个线程启动。下图是该类线程的示意图。

image.png


4.1.1,优点


  • 线程切换不需要内核模式权限
  • 用户级线程可以在任何操作系统上运行
  • 用户级线程可以快速创建和管理
  • 根据应用特定需要允许进程选择线程调度算法


4.1.2,缺点

  • 多线程程序没有利用多处理器的优势
  • 在传统的操作系统中,大多数系统调用被阻塞


4.2,内核级线程

该线程被操作系统的内核管理,在应用程序中没有线程管理代码。线程的创建、调度、销毁等操作均由内核来管理。内核维护了进程上下文切换以及单个进程中线程间的上下文切换。


4.2.1,优点


  • 内核可以同时调度同一进程的多个线程
  • 如果一个线程被阻塞,内核可以调度另一个
  • 内核本身就是多线程的


4.2.2,缺点


  • 线程创建和管理速度慢
  • 统一进程的线程间的控制传输需要内核的模式切换


5,多线程模型


一些操作系统提供了上述两种线程,比如Solaris系统。在混合操作系统中,同一程序中多个线程可以并行地运行于多个处理器上,一个阻塞的系统调用不会阻塞整个进程进行。多线程模型有三种。


  • 多对多关系
  • 多对一关系
  • 一对一关系


5.1,多对多关系


多对多关系线程模型是任意数量N的用户线程到相等或者小于N的内核线程的多路复用。

下图显示了多对多线程模型,其中6个用户级线程与6个内核级线程进行多路复用。在此模型中,开发人员可以根据需要创建任意数量的用户线程,并且相应的内核线程可以在多处理器计算机上并行运行。此模型提供了并发的最佳准确性,当线程执行阻塞系统调用时,内核可以调度另一个线程来执行。

image.png


5.2,多对一关系


多对一模型将许多用户级线程映射到一个内核级线程。线程管理由在用户空间由线程库中完成。当线程进行阻塞系统调用时,整个进程将被阻止。 一次只有一个线程可以访问内核,因此多个线程无法在多处理器上并行运行。

如果用户级线程库在操作系统中以系统不支持它们的方式实现的,则内核线程使用多对一关系模式。

image.png


5.3,一对一关系

用户级线程与内核级线程之间存在一对一的关系。与多对一模型相比,此模型提供更多并发性。 当线程进行阻塞系统调用时,它还允许另一个线程运行。 它支持多个线程在微处理器上并行执行。

该模型的缺点是创建用户线程时需要相应的内核线程。 OS / 2,Windows NT和Windows 2000使用一对一的关系模型。

image.png


相关文章
|
3月前
|
消息中间件 存储 算法
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
111 0
|
3月前
|
存储 消息中间件 算法
《操作系统》——进程与线程
《操作系统》——进程与线程
136 0
|
2月前
|
存储 调度 C++
【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)
【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)
69 1
|
3月前
|
Unix 调度
操作系统(6)----线程相关
操作系统(6)----线程相关
33 0
|
1月前
|
Python
Python线程是操作系统能够进行运算的最小单位
【7月更文挑战第18天】Python线程是操作系统能够进行运算的最小单位
20 1
|
1月前
|
API 调度
从操作系统层面描述线程的五种状态
从操作系统层面描述线程的五种状态
|
1月前
|
人工智能 分布式计算 物联网
操作系统的演变:从单任务到多任务和多线程
在数字时代的浪潮中,操作系统作为计算机硬件与软件之间的桥梁,经历了从简单到复杂的演进过程。初始的操作系统仅能执行单一任务,随着技术的进步,它们逐渐发展为能够同时处理多个任务和线程的系统。这一变化不仅提升了计算机的效率,也极大地促进了现代计算技术的发展。本文将深入探讨操作系统的关键发展阶段,分析其对现代计算技术的影响,并展望未来可能的发展趋势。
|
2月前
|
消息中间件 分布式计算 物联网
深入理解操作系统之进程与线程管理
操作系统的核心职责之一是进程与线程管理,它关乎系统的效率和稳定性。本文将剖析进程与线程的基本概念、生命周期以及它们在现代操作系统中的实现机制。通过对比分析,我们将揭示进程与线程的区别、优势及其适用场景,并探讨它们对系统性能的具体影响。进一步,文章将讨论进程间通信(IPC)的几种方式,以及同步和异步处理在多任务环境中的重要性。最后,我们将展望未来操作系统在进程与线程管理方面可能的发展趋势。
|
1月前
|
消息中间件 Java 调度
线程和进程的区别及其在操作系统中的实现机制
线程和进程的区别及其在操作系统中的实现机制
|
3月前
|
算法 调度
【操作系统】处理机调度的基本概念和三个层次、进程调度的时机和方式、调度器、闲逛线程
【操作系统】处理机调度的基本概念和三个层次、进程调度的时机和方式、调度器、闲逛线程
247 3