首页 > 系统相关 >Linux第4章学习笔记

Linux第4章学习笔记

时间:2023-10-28 12:33:40浏览次数:37  
标签:并发 笔记 并行执行 学习 互斥 线程 Linux 进程 执行

第四章学习笔记

并发编程

并行计算导论

早期,大多数计算机只有一个处理组件,称为处理器或中央处理器(CPU)。受这种硬件条件的限制,计算机程序通常是为串行计算编写的。
并行计算是一种计算方案,它尝试使用多个执行并行算法的处理器更快速地解决问题。

顺序算法和并行算法

并行性与并发性

通常,并行算法只识别可并行执行的任务,但是它没有规定如何将任务映射到处理组件。在理想情况下,并行算法中的所有任务都应该同时实时执行。然而,真正的并行执行只能在有多个处理组件的系统中实现,比如多处理器或多核系统。在单 CPU 系统中,一次只能执行一个任务。在这种情况下,不同的任务只能并发执行、即在逻辑上并行执行。在单CPU系统中,并发性是通过多任务处理来实现的。

线程

线程的原理

  • 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
  • 线程是独立调度和分派的基本单位。
  • 同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。
  • 一个进程可以有很多线程,每条线程并行执行不同的任务。

线程的优点

与进程相比,线程有许多优点。
(1)线程创建和切换速度更快
(2)线程的响应速度更快
(3)线程更适合并行计算

线程的缺点

(1)由于地址空间共享,线程需要来自用户的明确同步。
(2)许多库函数可能对线程不安全。通常,任何使用全局变量或依赖于静态内存内容的函数,线程都不安全。
(3)在单CPU系统上,使用线程解决问题实际上要比使用顺序程序慢

线程操作

线程的执行轨迹与进程类型。线程可在内核模式或用户模式下执行。线程是独立的执行单元,可根据操作系统内核的调度策略,对内核进行系统调用,变为挂起、激活以继续执行等。

线程管理函数

创建线程

线程ID

线程终止

线程连接

线程同步

当多个线程试图修改同一共享变量或数据结构时,如果修改结果取决于线程的执行顺序,则称之为竞态条件
通常,同步是一种机制和规则,用于确保共享数据对象的完整性和并发执行实体的协调性。

互斥量

最简单的同步工具是,它允许执行实体仅在有锁的情况下才能继续执行。在Pthread中,锁被称为互斥量。在使用之前必须对他们进行初始化。

死锁预防

互斥量使用封锁协议。如果某线程不能获取互斥量,就会被阻塞,等待互斥量解锁后再继续。在任何封锁协议中,误用加锁可能会产生一些问题。最常见和突出的问题是死锁。

条件变量

作为锁,互斥量仅用于确保线程只能互斥地访问临界区中的共享数据对象。条件变量提供了一种线程协作的方法。在Pthread中,使用类型pthread_cond_t来声明条件变量,而且必须在使用前进行初始化。

信号量

信号量是进程同步的一般机制。信号量是一种数据结构

屏障

线程连接操作允许某线程(通常是主线程)等待其他线程终止。创建新线程需要系统开销。

苏格拉底挑战

Linux/Unix中的并发编程




线程管理函数



chatgpt

线程的创建和销毁过程以及相关的函数调用


代码


标签:并发,笔记,并行执行,学习,互斥,线程,Linux,进程,执行
From: https://www.cnblogs.com/nql2/p/17793963.html

相关文章

  • 数字图像处理实验笔记
    实验一数学形态学图像处理实验内容与要求使用结构元素函数strel分别定义'square'和'disk'形状的结构元素,对下图(a)所示的二值图像进行腐蚀(imerode)和膨胀(imdilate)操作,分析腐蚀和膨胀运算的作用。结合腐蚀和膨胀运算,使用开运算(imopen)和闭运算(imclose),对下图(b)所示的二值图像进行开运......
  • Linux间进程的通信
    进程间的通信    每个进程都是独立的,都有属于自己的虚拟地址空间,经过操作系统的段页管理将虚拟地址映射到不同的物理内存上,因此不同进程之间的信息是不能直接进行通信的,需要经过内核的帮助才能通信。进程通信的概念    进程间通信又称IPC(......
  • 第9周Linux课堂总结
        这一周的linux课程我们学习了高级权限,首先我们学习的是SUID权限,使用ll命令查看/usr/bin/passwd文件,第1行的第4个字符为“s”,“s”表示特殊权限SUID,任何用户在执行该文件时,其身份是该文件的属主,在进程文件上增加SUID权限,可以让本来没有相应权限的用户也可以访问没有权......
  • 第四章学习笔记
    第四章学习笔记第四章并发编程本章论述了并发编程,介绍了并行计算的概念,并指出了并行计算的重要性;比较了顺序算法与并行算法,以及并行性与并发性;解释了线程的原理及其相对于进程的优势;介绍了Pthread中的线程操作,包括线程管理函数,互斥量、连接、条件变量和屏障等线程同步工具;解释......
  • HuggingFace机器视觉学习
    HuggingFace中计算机视觉的现状:https://huggingface.co/blog/zh/cv_state从0开始timm库的quickstarthttps://huggingface.co/docs/timm/quickstart例子中通过调用模型mobilenetv3_large_100识别图像mobilenetv3_large_100模型的说明页https://huggingface.co/timm/mobi......
  • 2023-2024-1 20231312《计算机基础与程序设计》第5周学习总结
    作业信息这个作业属于哪个课程<班级的链接>2023-2024-1-计算机基础与程序设计|-这个作业要求在哪里<作业要求链接>2023-2024-1计算机基础与程序设计第四周作业|这个作业的目标《计算机基础概论》第6章《C语言程序设计》第4章|作业正文作业链接教材学习......
  • linux IFS(internal field separator,内部字段分隔符)
    1、简介IFS是一个shell内置变量,它是一个字符列表,列表里的每个字符是默认的字段分隔符2、查看IFS变量(1)centosset|less然后搜索字符串IFS,如下图 (2)kali的zsh环境下set|grepIFS结果如下图3、打印IFS变量因为IFS变量是空格、tab、换行,所以打印结果一片空白......
  • SSTI模板注入学习
    一、前言最近在练ctf的时候遇到了不少模板注入的漏洞,自己对这一块也一直是一知半解的,所以记录一下,对这一块知识也进行一个总结。二、什么是模板注入SSTI(服务器端模板注入)是格式化字符串的一个非常好的例子,如今的开发已经形成了非常成熟的MVC的模式,我们的输入通过V接收,交给......
  • 作笔记tips
    将项目目录结构作笔记有时候需要输出,项目的目录结构,比如js文件夹下的a.js项目目录下打开cmd,输入tree,这时就能复制这个目录结构了C:...>treeE:.├─.hbuilderx├─pages│├─category│├─home│├─index│└─mine├─static└─unpackage└─dis......
  • 学习笔记7
    教材知识点总结并行计算导论:顺序算法与并行算法:顺序算法是按照一定的顺序执行的算法,而并行算法是可以同时执行多个任务的算法。并行算法可以通过将任务分解为多个子任务并行执行来提高计算效率。并行性与并发性:并行性是指多个任务同时进行,而并发性是指多个任务交替进行。并......