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

news/2024/9/20 23:20:44

线程在 Linux 中的实现

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/62761.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

opencascade Bnd_OBB源码学习 OBB包围盒

opencascade Bnd_OBB OBB包围盒前言 类描述了定向包围盒(OBB),比轴对齐包围盒(AABB)更紧密地包围形状的体积。OBB由盒子的中心、轴以及三个维度的一半定义。与AABB相比,OBB在作为非干扰物体的排斥机制时可以更有效地使用。 方法 1. 空构造函数 //! 空构造函数 Bnd_OBB() …

Scala安装与环境配置详解教程

本文参考来源: http://mengmianren.com/zhihuishu2020/641069.htmlScala运行在java的JVM之上,因此需要先安装Java运行环境 一、JDK8的下载和安装及环境变量配置 使用的jdk版本是:jdk-8u191-windows-i586.exe https://pan.baidu.com/s/1RNNb7lcqKHC_2h0iiTlqFg?pwd=9t5e 提取…

day2-2

今天进行了一次小测验,仍与基础的增删改查有关。 题目的要求是通过Java写出一个建议系统,能够历遍输出各个数据,能够添加,删除,修改数据,能够根据编号查找到对应的数据。程序如下该程序能够完成这些要求,也具有一定的健全性。

大学C++程序设计课程开发指南——开发环境搭建

前言 由于某些大学程序设计课程仍然在使用VC6.0这一上古工具,不太适合学生与现代开发生产接轨,并且也有可能出现兼容问题等,故编写此文,仅供参考。 使用 Visual Studio 在介绍Visual Studio(此后简称VS)前,先给大家介绍这一工具的发展。 其前身正是VC6.0(全称Visual C++…

LLM DATASET

大模型的能力来源 https://arxiv.org/pdf/2402.18041 大模型合规来源 https://arxiv.org/html/2402.12193v2 大模型的罪恶检测来源 https://www.kaggle.com/datasets/odins0n/ucf-crime-dataset/data code math https://github.com/mlabonne/llm-datasetsMath & LogicLLMs …

2024-9-20

ArrayList类 获取元素

在链接与运行地址不同时gdb的调试方法

搭建一个链接和运行不同的环境 SECTIONS {. = 0xffff000000080000,/* . = 0x80000, */.text.boot : { *(.text.boot) }.text : { *(.text) }.rodata : { *(.rodata) }..... }-s还可以看到符号都链接到高地址去了但是elf文件中有详细的地址信息,如果后续qemu加载的是elf的话就会…

排队论——随机服务系统仿真精解

排队论作为研究随机服务系统的重要工具,专门研究系统中客户到达、排队、服务和离开的过程。排队论的核心目的是通过数学建模和分析,研究系统的性能指标,如平均等待时间、队列长度、系统的吞吐量等。虽然排队论提供了强大的数学工具来分析随机服务系统,但在许多复杂的实际问…