Linux 的热插拔机制通过 Udev(用户空间设备)实现、守护进程

news2025/1/16 14:08:08

一、Udev作用概述

  • udev机制简介
  • udev工作流程图

二、Linux的热拔插UDEV机制
三、守护进程

  • 守护进程概念
  • 守护进程在后台运行
  • 基本特点

四、守护进程和后台进程的区别

一、Udev作用概述

udev机制简介

Udev(用户空间设备)是一个 Linux 系统中用于动态管理设备的设备管理器。它的主要作用是在设备插入或移除时,负责管理与这些事件相关联的设备节点以及执行相应的动作。以下是 Udev 的一些主要作用概述:

  1. 设备发现和管理: Udev 负责在 Linux 系统中检测和管理设备。当新设备插入或旧设备被移除时,Udev 负责识别这些变化,并在 /dev 目录下创建或删除相应的设备节点。

  2. 设备命名: Udev 为设备节点提供了一个规范的命名机制,以便用户和应用程序能够更容易地识别设备。这有助于确保相同类型的设备在不同系统上都有相似的设备节点名称。

  3. 热插拔支持: Udev 支持热插拔设备,即在系统运行时插入或移除设备。它可以动态地更新设备节点,而无需重新启动系统。

  4. 规则系统: Udev 使用规则文件来定义在设备事件发生时要执行的操作。这些规则可以基于设备属性、类型和其他标识符来匹配。规则允许用户执行自定义脚本、设置环境变量、创建符号链接等操作。

  5. 持久化设备节点: Udev 提供了机制,以确保设备节点的稳定性。即使设备在重新启动后未连接,Udev 仍会分配相同的设备节点名称,以便应用程序可以依赖特定的设备节点。

  6. 提供额外信息: Udev 为每个设备节点提供了大量的额外信息,例如设备类型、设备路径、驱动程序信息等。这些信息可用于用户空间的应用程序,以更好地理解和利用系统中的设备。

总体而言,Udev 是 Linux 系统中一个重要的组件,它使设备的管理变得更加动态、灵活,并支持热插拔和用户空间的定制化设备管理。

udev工作流程图:

在这里插入图片描述

二、Linux的热插拔UDEV机制

Linux 的热插拔机制主要通过 Udev(用户空间设备)来实现。Udev 是 Linux 系统中用于动态管理设备的设备管理器。以下是 Udev 实现热插拔的主要机制:

  1. 设备事件监测: Udev 不断监听内核发出的事件,以便检测设备的插入和拔出。内核通过 Netlink 通信机制向 Udev 发送设备事件。

  2. 规则匹配: 当 Udev 检测到设备事件时,它会根据预定义的规则(规则文件)来匹配事件中的设备信息。规则可以基于设备的各种属性、类型、路径等进行匹配。

  3. 规则文件: Udev 的规则文件通常存储在 /etc/udev/rules.d/ 目录下。这些规则文件定义了在特定条件下要执行的操作。规则文件的命名约定通常是 XX-name.rules,其中 XX 是两位数字,用于确定规则文件的加载顺序。

  4. 执行动作: 当规则匹配成功时,Udev 将执行相关的动作。动作可以包括创建设备节点、设置环境变量、执行脚本等。例如,可以在设备插入时创建相应的设备节点、加载适当的驱动程序等。

  5. 设备节点管理: Udev 负责在 /dev 目录下创建或删除设备节点。这确保了用户和应用程序可以在一个标准位置找到设备节点,而无需关心设备插入的确切时刻。

  6. 持久化设备节点: Udev 确保设备节点的持久性,即使设备在重新启动后未连接,也会分配相同的设备节点名称。这有助于确保应用程序可以依赖特定的设备节点。

总体而言,Udev 通过规则匹配和执行动作的方式,实现了对设备事件的监听和处理,从而支持 Linux 系统的热插拔机制。这使得在系统运行时插入或拔出设备时,系统能够动态地适应这些变化。
在这里插入图片描述
udev是一个设备管理工具,udev以守护进程的形式运行,通过侦听内核发出来的uevent来管理 /dev目录下的设备文件。
通过侦听内核发出来的硬件数据(事件),在用户空间为这个硬件去创建对应代表该硬件的文件,应用程序例如adb就可以通过该文件操作到硬件设备
udev在用户空间运行,而不在内核空间运行。它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。
设备文件通常放在 /dev目录下。使用 udev后,在 /dev目录下就只包含系统中真正存在的设备。

三、守护进程

守护进程概念

守护进程(Daemon Process)是在计算机系统后台运行的一类进程,它们通常在系统启动时启动,不依赖于用户直接操作,一直运行在后台,不受用户登录或注销的影响。守护进程的存在主要是为了执行特定的系统任务或服务,例如服务器、网络服务、定时任务等。

以下是守护进程的一些特点和常见特征:

  1. 后台运行: 守护进程通常在后台运行,不与任何终端关联,不接受用户的直接输入。

  2. 脱离终端: 守护进程通常会调用 fork 函数创建一个子进程,并使得子进程成为新的会话组长,从而脱离与终端的关联。

  3. 文件描述符: 守护进程通常会关闭与终端相关的文件描述符,以防止被终端关闭影响进程运行。

  4. 重定向标准输入输出: 守护进程通常会将标准输入、输出、错误重定向到 /dev/null 或其他适当的文件,以防止输出信息到终端。

  5. 权限: 守护进程通常以超级用户或其他特定用户的身份运行,以便执行需要特殊权限的任务。

  6. 信号处理: 守护进程通常会捕获并处理一些特定的信号,如 SIGHUP,以便在配置文件更改或其他条件下重新加载配置。

  7. 周期性任务: 守护进程通常执行一些周期性的任务,如定时清理、日志轮转等。

  8. 示例: 常见的守护进程包括 sshd(SSH 服务器守护进程)、httpd(Apache HTTP 服务器守护进程)等。

创建守护进程的一般步骤包括:

  1. 调用 fork 函数: 创建一个子进程,父进程退出,子进程继续执行。

  2. 调用 setsid 函数: 创建一个新的会话组,使得子进程成为新的会话组长。

  3. 修改工作目录: 为了防止卸载文件系统导致守护进程找不到文件,通常需要更改工作目录。

  4. 重定向标准输入输出: 将标准输入、输出、错误重定向到适当的文件。

  5. 关闭文件描述符: 关闭不需要的文件描述符,避免占用系统资源。

  6. 处理信号: 捕获并处理一些信号,如 SIGHUP

创建和管理守护进程需要谨慎处理,确保进程以安全和可靠的方式在后台运行。

守护进程在后台运行

Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器mysqld等。守护进程的名称通常以d结尾
UDEV守护进程,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。

基本特点

  • 生存周期长[非必须],一般操作系统启动的时候就启动,关闭的时候关闭。
  • 守护进程和终端无关联,也就是他们没有控制终端,所以当控制终端退出,也不会导致守护进程退出
  • 守护进程是在后台运行,不会占着终端,终端可以执行其他命令
  • 一个守护进程的父进程是init进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出了,所以它是一个由init继承的孤儿进程

ps -efj 是一个用于显示进程信息的命令。具体解释如下:

ps -efj
  • ps: 进程状态命令。
  • -e: 显示所有进程,而不仅仅是与终端相关的进程。
  • -f: 以全格式显示。
  • -j: 以作业格式显示。

在这个命令中,-ef 是常用组合,用于显示所有进程的详细信息。而 -j 则以作业格式显示,包括作业控制的信息。
在这里插入图片描述
输出的各列含义如下:

  1. UID (User ID): 进程的用户标识。
  2. PID (Process ID): 进程的唯一标识号。
  3. PPID (Parent Process ID): 父进程的标识号。
  4. PGID (Process Group ID): 进程组的标识号。
  5. SID (Session ID): 会话的标识号。
  6. TTY (Controlling Terminal): 控制终端。
  7. TPGID (Foreground Group ID of the controlling terminal): 控制终端的前台进程组的标识号。
  8. STAT (Process Status): 进程的状态,如 R(运行)、S(睡眠)、Z(僵尸)等。
  9. TIME (Cumulative CPU time): 进程执行的累计 CPU 时间。
  10. COMMAND (Command with all its arguments): 进程的命令及其参数。

这个命令的输出显示了当前系统上所有进程的详细信息,以及它们的层次结构和作业控制信息。

四、守护进程和后台进程的区别

守护进程(Daemon Process)和后台进程(Background Process)是两个不同的概念,它们有以下区别:

  1. 启动方式:

    • 守护进程: 通常由系统启动,独立于控制终端,以在后台运行的方式启动。
    • 后台进程: 可以由用户手动将一个前台进程移至后台,即使它最初是由用户启动的。
  2. 是否与终端关联:

    • 守护进程: 通常不与任何控制终端关联,因此它们不受终端关闭的影响。
    • 后台进程: 可以从终端启动,并且可能受终端的影响。
  3. 执行环境:

    • 守护进程: 在后台执行,并且通常在系统引导时启动。它们通常在系统运行期间一直存在。
    • 后台进程: 通常是用户在前台启动的进程,后来放到后台执行,可能在终端关闭后继续运行。
  4. 继承环境:

    • 守护进程: 通常会脱离终端会话,重新设置文件权限,改变工作目录等,以确保独立于用户终端的环境。
    • 后台进程: 通常继承自其父进程(通常是终端 Shell)的环境。
  5. 用户交互性:

    • 守护进程: 通常不与用户进行交互,因为它们不关联于任何终端。
    • 后台进程: 在启动时可能与用户进行交互,但放到后台后通常不再与用户直接交互。

总的来说,守护进程是一种设计用于在系统后台一直运行的进程,而后台进程是一种在终端启动后被放到后台执行的进程。

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

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

相关文章

玄子Share-HTML5知识手册

玄子Share-HTML5知识手册 前言: 这一版 HTML 笔记,算是我写的第四版了,第三版对照课本编写,第四版则是对照 MDN 官方文档编写,不论是术语亦或专业性,都更上一层 文章依托 MDN 文档,拓展了大量课…

【2023-11-09】git使用随记——gitignore文件配置某些文件忽略

git使用随记——gitignore文件配置某些文件忽略 通过git进行版本控制在项目中是非常常见的,一些项目构建上的文件通常是不需要进行版本控制的,也就无需推送到git仓库中,比如前端项目中的node_module目录。提供配置.gitignore文件 但是某些情…

腾讯云88,阿里云99,现在都这么卷了吗?!

你是否曾经想过,云服务器的价格竟然可以如此亲民?现在,腾讯云和阿里云竟然都推出了超低价位的云服务器,只要88元和99元!这让我们这些自媒体人、创业者、开发者等都感到非常惊喜。可以看一下配置和价格: 可…

MATLAB中Line 属性说明

目录 颜色和样式 位置 Line 属性是注释线条的外观和行为。 Line 属性控制 Line 对象的外观和行为。通过更改属性值,可以修改线条的特定方面。使用圆点表示法查询和设置属性。 h annotation("line"); c h.Color; h.Color "red"; 颜色和样…

边缘计算如何改变数据存储?

边缘计算在整个价值链中提供多种优势——从降低成本到提高效率再到安全数据传输。该技术允许在源头收集和分析相关数据,这有助于减少延迟和带宽成本,同时显著提高计算过程的冗余系数和效率。 通过降低数据传输成本和损失,边缘计算帮助企业实现…

docker更改存储目录原因及方案

为什么一定要将docker的存储目录挂载到其他目录 docker在安装时默认存储目录在/var/lib/docker,而该目录是在系统盘下的。docker安装后,会使用各种各样的镜像,动辄几个G,那么如此多的镜像文件,装着装着系统盘就撑爆了…

【AI】自回归 (AR) 模型使预测和深度学习变得简单

自回归 (AR) 模型是统计和时间序列模型,用于根据数据点的先前值进行分析和预测。这些模型广泛应用于各个领域,包括经济、金融、信号处理和自然语言处理。 自回归模型假设给定时间变量的值与其过去的值线性相关,这使得它们可用于建模和预测时…

【Unity细节】Unity中的Transform.SetParent还有你不知道的细节

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 😶‍🌫️收录于专栏:unity细节和bug 😶‍🌫️优质专栏 ⭐【…

除了鲁大师,你还可以装这些。

无论是专业的电脑维护人员,还是只是一个简单的 DIY 兴趣爱好者,有的时候都会或多或少遇到一些电脑硬件的问题。 这种情况下,如果特地去安装一款专门的检测软件,肯定会非常麻烦。 一般来说,检测电脑硬件,使…

【解刊】可投!Elsevier旗下1/2区SCI,4天见刊!

计算机类 • 好刊解读 今天小编带来Elsevier旗下计算机领域好刊的解读,如有相关领域作者有意向投稿,可作为重点关注!后文有同领域快刊发表案例,供您投稿参考~ 01 期刊简介 Sustainable Computing: Informatics and Systems ☑️…

内存卡数据恢复,5 个免费好用的数据恢复方法工具全解

丢失了 SD 卡中的一些重要照片或文档,并且不知道如何恢复?好吧,别担心!!以下是一些适用于 Windows 的最佳 SD 卡恢复工具,可增加您检索意外删除、丢失或丢失数据的机会。 什么是 SD 卡数据恢复软件&#xf…

ps 让图片附着在文字上

按住alt在文字与图片图片中间,文字在图片下面)

Scala中编写多线程爬虫程序并做可视化处理

目录 一、引言 二、Scala爬虫程序的实现 1、引入必要的库 2、定义爬虫类 3、可视化处理 三、案例分析:使用Scala爬取并可视化处理电影数据 1、定义爬虫类 2、实现爬虫程序的控制逻辑 3、可视化处理电影数据 四、总结 一、引言 随着互联网的快速发展&#…

CSS3 过度效果、动画、多列

一、CSS3过度&#xff1a; CSS3过渡是元素从一种样式逐渐改变为另一种的效果。要实现这一点&#xff0c;必须规定两相内容&#xff1a;指定要添加效果的CSS属性&#xff1b;指定效果的持续时间。如果为指定持续时间&#xff0c;transition将没有任何效果。 <style> div…

华为认证 | 11月底这门HCIP认证即将发布!

非常荣幸地通知您&#xff0c;华为认证HCIP-Storage V5.5&#xff08;中文版&#xff09;预计将于2023年11月30日正式对外发布。为了帮助您做好学习、培训和考试计划&#xff0c;现进行预发布通知&#xff0c;请您关注。 01 发布概述 基于“平台生态”战略&#xff0c;围绕“云…

Talk | 马里兰大学博士生吴曦旸:分布式多智能体强化学习在复杂交通轨迹规划中的应用

本期为TechBeat人工智能社区第545期线上Talk&#xff01; 北京时间11月09日(周四)20:00&#xff0c;马里兰大学博士生—吴曦旸的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “分布式多智能体强化学习在复杂交通轨迹规划中的应用”&#xff0c;介…

【网络安全小课堂】网络安全相关名词解释

网络时代&#xff0c;企业与个人对于网络安全的关注度很高&#xff0c;也非常重视网络安全。今天我们网络安全小课堂&#xff0c;就来为大家简单说说网络安全相关名词。 网络安全相关名词解释 1、网络&#xff1a;是指由计算机或者其他信息终端及相关设备组成的按照一定的规则…

[Hive] INSERT OVERWRITE DIRECTORY要注意的问题

在使用Hive的INSERT OVERWRITE语句时&#xff0c;需要注意以下问题&#xff1a; 数据覆盖&#xff1a;INSERT OVERWRITE语句会覆盖目标目录中的数据。因此&#xff0c;在执行该语句之前&#xff0c;请确保目标目录为空或者你希望覆盖的数据已经不再需要。数据格式&#xff1a;…

【操作系统】测试二

文章目录 单选题判断题填空题 单选题 在操作系统中&#xff0c;进行资源分配、调度和管理的最小独立单位是&#xff08;&#xff09;。 【 正确答案: C】 A. 作业 B. 程序 C. 进程 D. 用户 进程在发出I/O请求后&#xff0c;可能导致下列哪种进程状态演变&#xff1f; 【 正确答…

C++进阶-STL deque容器的简单认识

STL deque容器的简单认识 deque容器的基本概念deque和vector的区别deque内部工作原理&#xff1a; deque容器构造函数deque容器赋值操作deque容器大小操作deque容器插入和删除deque容器数据存取deque容器排序操作 deque容器的基本概念 功能&#xff1a;双端数组&#xff0c;可…