首页 > 系统相关 >[操作系统]线程在 Linux 中的实现

[操作系统]线程在 Linux 中的实现

时间:2024-09-20 23:12:55浏览次数:1  
标签:操作系统 线程 内核 Linux 进程 机制 轻量级

线程在 Linux 中的实现

线程机制是现代编程技术中常用的一种抽象概念。该机制提供了在同一程序内共享内存地址空间运行的一组线程。这些线程还可以共享打开的文件和其他资源。线程机制支持并发程序设计技术(concurrent programming),在多处理器系统上,它也能保证真正的并行处理(parallelism)。Linux 实现线程的机制非常独特。从内核的角度来说,它并没有线程这个概念。Linux把所有的线程都当做进程来实现。内核并没有准备特别的调度算法或是定义特别的数据结构来表征线程。相反,线程仅仅被视为一个与其他进程共享某些资源的进程。每个线程都拥有唯一隶属于自己的 task struct,所以在内核中,它看起来就像是一个普通的进程(只是线程和其他一些进程共享某些资源,如地址空间)。

上述线程机制的实现与Microsoft Windows或是Sun Solaris等操作系统的实现差异非常大。这些系统都在内核中提供了专门支持线程的机制(这些系统常常把线程称作轻量级进程(lightweight processes))。“轻量级进程”这种叫法本身就概括了Linux 在此处与其他系统的差异。在其他的系统中,相较于重量级的进程,线程被抽象成一种耗费较少资源,运行迅速的执行单元。而对于Linux 来说,它只是一种进程间共享资源的手段(Linux的进程本身就够轻量级了)

举个例子来说,假如我们有一个包含四个线程的进程,在提供专门线程支持的系统中,通常会有一个包含指向四个不同线程的指针的进程描述符。该描述符负责描述像地址空间、打开的文件这样的共享资源。线程本身再去描述它独占的资源。相反,Linux仅仅创建四个进程并分配四个普通的 task sturct结构。建立这四个进程时指定他们共享某些资源,这是相当高雅的做法。

标签:操作系统,线程,内核,Linux,进程,机制,轻量级
From: https://www.cnblogs.com/DCFV/p/18423437

相关文章

  • Nodejs 揭秘:单线程魔法背后的真相以及它如何为高性能应用程序提供动力
    Node.js有时被称为“单线程”,这个词对于习惯了Java或.NET等多线程环境的开发人员来说可能会令人困惑,甚至令人畏惧。然而,Node.js如何处理作业的真相远比这个简单术语所暗示的复杂和强大。在这篇博客中,我们将了解Node.js的架构、单线程意味着什么,以及Node.js如何通过其独......
  • JavaScript 如何在后台工作:了解其单线程性质和异步操作
    javascript是网络的支柱,为数十亿网站和应用程序提供动态客户端功能。但您有没有想过javascript是如何在后台发挥其魔力的?在这篇文章中,我们将深入研究javascript单线程本质的内部工作原理,并探索异步编程的概念。单线程是什么意思?当我们说javascript是“单线程”时,这意......
  • Linux VDSO 机制及其在系统调用优化中的作用
    linux-vdso.so是Linux操作系统中虚拟动态共享对象(VDSO)的一部分。它是Linux内核用来加速某些系统调用的一种机制。传统上,系统调用是通过从用户空间切换到内核空间来完成的,这会带来一定的性能开销。而linux-vdso.so则允许某些系统调用在用户空间中执行,从而减少了上下文切换的......
  • Linux系统终端中文件权限的10位字符是什么意思
    Linux操作系统终端长格式显示的文件在Linux操作系统终端中用文件长格式命令ls-l显示文件,如上图。第一列10个字符表示的含义如下:drwxrwxrwx第一个字符是表示该文件的类型,如红色d表示该文件是一个目录,详细内容可以参考我的《Linux系统终端文件类型的区分标识》这篇文章。蓝......
  • NOI Linux 基础知识与编程环境
    在计算机早期历史中,终端专指用户与计算机系统进行交互的物理设备,包括命令行终端和图形化终端等。在流行的UNIX、Linux发行版中,可以使用快捷键调出命令行终端模式,也可以在图形界面中使用终端仿真器(terminalemulator)来模拟命令行终端。在桌面版Ubuntu中常见的终端仿真器有“终......
  • 操作系统相关
    操作系统1.操作系统主要功能进程管理功能:创建、调度、终止进程,管理进程的执行。目的:确保多个进程能够有效地共享处理器资源,并进行合理的调度和管理。内存管理功能:分配和管理系统内存,包括虚拟内存和物理内存。目的:提供程序执行所需的内存空间,并保护进程之间的内存隔......
  • MySQL linux下安装,配置,免密登录与基本认识
    目录MySQL卸载环境查看是否已安装MySQL卸载mysql服务查看是否卸载干净MySQL安装查看linux版本选择MySQL版本获取mysql官方yum源rpm安装mysql官方yum源安装mysql服务查看是否安装成功配置MySQL简单登录mysql命令免密登录配置my.cnf其他配置项设置开机启动(可选)常用命令与名词认识......
  • C++ 多线程知识汇总
    https://zhuanlan.zhihu.com/p/194198073 (防链接失效)程序使用并发的原因有两种:为了关注点分离(程序中不同的功能,使用不同的线程去执行),当为了分离关注点而使用多线程时,设计线程的数量的依据,不再是依赖于CPU中的可用内核的数量,而是依据概念上的设计(依据功能的划分);为了提高性能......
  • 【嵌入式Linux】嵌入式Linux平台上DNS-SD(DNS Service Discovery)协议结合mDNS(Multicast
    在嵌入式Linux平台中,实现设备和服务的自动发现是提升系统智能化和用户体验的重要手段。DNS-SD(DNSServiceDiscovery)协议结合mDNS(MulticastDNS)协议,可以在局域网内实现设备和服务的自动注册与发现。本文将详细介绍如何在嵌入式Linux平台上使用DNS-SD协议实现设备服务发现,包......
  • 亿级数据表多线程update锁表问题
    目录1、问题描述2、原因分析3、问题解决1、问题描述在pg数据库,某个业务,有一张数据表test,数据表结果如下:test(sjjbh,wlbid,gzmb,sfzg,zgsj,cjsj,xx...),这个表没有主键,会有很多重复数据。test表需要根据另外表(是多张表),动态更新sfzg字段, 加入另外表结构如下sjj_ckb1(......