【操作系统】线程简介

这篇具有很好参考价值的文章主要介绍了【操作系统】线程简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

线程简介

线程概念

在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 只是维护应用程序所需的各种资源,而线程则是真正的执行实体。

所以,线程是轻量级的进程(LWP:light weight process),在Linux环境下线程的本质仍是进程。

为了让进程完成一定的工作,进程必须至少包含一个线程。

【操作系统】线程简介

进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源,所以我们也说,进程是CPU分配资源的最小单位

线程存在与进程当中(进程可以认为是线程的容器),是操作系统调度执行的最小单位。说通俗点,线程就是干活的。

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。

线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

如果说进程是一个资源管家,负责从主人那里要资源的话,那么线程就是干活的苦力。一个管家必须完成一项工作,就需要最少一个苦力,也就是说,一个进程最少包含一个线程,也可以包含多个线程。苦力要干活,就需要依托于管家,所以说一个线程,必须属于某一个进程。

进程有自己的地址空间,线程使用进程的地址空间,也就是说,进程里的资源,线程都是有权访问的,比如说堆啊,栈啊,静态存储区什么的。

进程是操作系统分配资源的最小单位

线程是操作系统调度的最小单位

线程的特点

类Unix系统中,早期是没有“线程”概念的,80年代才引入,借助进程机制实现出了线程的概念。

因此在这类系统中,进程和线程关系密切:

  1. 线程是轻量级进程(light-weight process),也有PCB,创建线程使用的底层函数和进程一样,都是clone

  2. 从内核里看进程和线程是一样的,都有各自不同的PCB.

  3. 进程可以蜕变成线程

  4. 在linux下,线程最是小的执行单位;进程是最小的分配资源单位

【操作系统】线程简介 

查看指定进程的LWP号:

ps -Lf pid

实际上,无论是创建进程的fork,还是创建线程的pthread_create,底层实现都是调用同一个内核函数 clone 。

Ø 如果复制对方的地址空间,那么就产出一个“进程”;

Ø 如果共享对方的地址空间,就产生一个“线程”。

Linux内核是不区分进程和线程的, 只在用户层面上进行区分。所以,线程所有操作函数 pthread_* 是库函数,而非系统调用。

线程共享资源

  1. 文件描述符表

  2. 每种信号的处理方式

  3. 当前工作目录

  4. 用户ID和组ID

内存地址空间 (.text/.data/.bss/heap/共享库)

线程非共享资源

  1. 线程id

  2. 处理器现场和栈指针(内核栈)

  3. 独立的栈空间(用户空间栈)

  4. errno变量

  5. 信号屏蔽字

  6. 调度优先级

  7. 线程的优缺点

    优点:

    Ø 提高程序并发性

    Ø 开销小

    Ø 数据通信、共享数据方便

    缺点:

    Ø 库函数,不稳定

    Ø 调试、编写困难、gdb不支持

    Ø 对信号支持不好

    优点相对突出,缺点均不是硬伤。Linux下由于实现方法导致进程、线程差别不是很大。

 文章来源地址https://www.toymoban.com/news/detail-455675.html

到了这里,关于【操作系统】线程简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 王道操作系统学习笔记(1)——操作系统基本概念

    本文介绍了操作系统的基本概念,文章中的内容来自B站王道考研操作系统课程,想要完整学习的可以到B站官方看完整版。 操作系统:系统资源的管理者(处理机管理、存储器管理、文件管理、设备管理) 交互式命令(在终端中输命令)和批处理命令(Shell脚本) 并发: 宏

    2024年02月10日
    浏览(48)
  • 【操作系统】内存管理概念

    1、 编译:由编译程序将用户源代码编译成若干个目标模块(编译就是把高级语言翻译成机器语言) 2、 链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块 ① 静态链接:在程序运行之前,先将各目标模块及它们所需的库函

    2024年02月06日
    浏览(50)
  • 操作系统安全 基本概念

    参考教材是沈晴霓的《操作系统安全设计》,课程链接:https://www.coursera.org/learn/os-virtsecurity 本书内容由浅入深,分为“基础篇”、“理论篇”、“实践篇”和“趋势篇”四大部分。 “基础篇\\\"重点介绍操作系统基本安全概念、通用安全需求、安全标准和必要的安全机制等。

    2024年02月09日
    浏览(39)
  • 操作系统教程1简介

    这个操作系统教程提供了操作系统的所有基本和高级概念。这个操作系统课程是为初学者、专业人士和GATE考生准备考试而设计的。本教程将为你提供关于每个操作系统概念的深刻知识。 操作系统(OS Operating System)是一种软件,作为最终用户和计算机硬件之间的接口。每台计

    2024年02月07日
    浏览(42)
  • 【操作系统】一些重要的概念

    创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡𖥦)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 🔥c++系列专栏:C/C++零基础到精通 🔥 给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ 本文为自己整理

    2024年02月12日
    浏览(44)
  • 【Linux】操作系统&&进程概念

    冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构 。数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成( 运算器、控制器、存储器、输入设备、输出设备 ),这

    2024年01月16日
    浏览(46)
  • 欧拉操作系统(openEuler)简介

              一、欧拉操作系统(openEuler)  是什么?      欧拉操作系统(openEuler, 简称“欧拉”)是面向数字基础设施的操作系统,支持服务器、云计算、边缘openEuler是面向数字基础设施的操作系统,支持服务器、 云计算、边缘计算、嵌入式等应用场景,支持多样性计算,致力于

    2024年02月04日
    浏览(52)
  • 操作系统-线程复用

    操作系统执行线程复用的过程涉及到线程调度和管理。 线程复用是指操作系统能够有效地重用现有的线程来执行新的任务,而不必每次都创建新线程。 这有助于减少线程创建和销毁的开销,提高系统性能。下面是操作系统如何执行线程复用的关键步骤: 线程池管理 :操作系

    2024年02月09日
    浏览(31)
  • Linux:冯诺依曼系统和操作系统的概念

    本篇主要总结的是操作系统的基本认知和一些概念 那么上图表示的就是冯诺依曼体系结构,那这个体系结构是什么?为什么要先介绍它? 截止目前来说,常见的计算机都是遵循着冯诺依曼体系组成的,可以说有了冯诺依曼体系才能让计算机变得这么普及,才有了现在的互联

    2024年02月07日
    浏览(43)
  • 【操作系统——进程与线程(一)】

    2.1.1 进程的概念和特征 进程是指正在执行中的程序的实例。它是计算机系统进行资源分配和调度的基本单位。每个进程都有自己的地址空间、堆栈和数据区域,以及与其他进程通信和同步所需要的操作系统资源。 进程具有以下特点: 独立性:进程是独立的执行实体,拥有自

    2024年02月11日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包