首页 > 其他分享 >1- 介绍

1- 介绍

时间:2024-02-19 21:02:12浏览次数:23  
标签:文件系统 介绍 内核 驱动 内核模块 设备 加载

Introduction

原文链接

我的博客

Linux 架构

Linux 可以被粗略划分为用户空间内核空间,这两个部分使用系统调用接口交互。内核在内核空间运行,是操作系统的核心组件,它为同层或上层提供服务。应用一般运行在用户空间中。

Linux 内核模块

内核模块可以按照用户需求,加载到内核中,或从内核剔除。添加或剔除的过程不需要重启系统。客户程序可以通过下面两种方式添加到内核中:

  • 将代码添加到内核源码树中,并重新编译内核
  • 更高效的方式是在内核运行过程中将代码添加进入内核,这个过程称作加载模块,这个模块就是我们要向内核中添加的客户程序

内核模块被称作可加载内核模块 LKM: Loadable Kernel Modules,用于与内核做区分。内核位于 /boot 目录中,在我们启动设备时被加载,而 LKM 则是在内核加载结束后才被加载。

内核模块也是内核的一部分,它们通过与内核交互,完成目标功能。

使用 LKM 可以完成不同的诉求,最常见的应用是:

  • 设备驱动
  • 文件系统驱动
  • 系统调用

设备驱动

设备驱动专门为某种硬件编写,内核使用这类驱动完成于硬件的通讯。

文件系统

文件系统驱动将文件系统解释为文件以及目录等内容。有多种方式能够将文件与目录等内容存储到光驱、网络服务器等媒介上。对于每一种不同的方式,都需要与之对应的驱动。比如我们常见的 ext2 文件系统类型,就有对应的 ext2 文件系统驱动,还有其他的文件系统类型,如 MS-DOS 文件系统以及 NFS 文件系统等。

系统调用

用户空间程序通过系统调用获取内核服务。比如使用系统调用能够完成读取文件、创建新的进程、关闭系统等。大部分系统调用都是基本的内核已经提供了的内容,当然我们在开发时,也可以创造自己的系统调用,并通过 LKM 安装到内核中。

可加载内核模块优点

  • 不需要重新编译内核 ,节省时间
  • 灵活,使用单条命令就能够加载/卸载它

内核模块与用户程序区别

  • 独立的地址空间,模块运行在内核空间,应用运行在用户空间
  • 内核模块具有更高执行优先级,运行在内核空间的代码相运行在较于应用空间的代码,具有更高的优先级
  • 使用不同的头文件

内核驱动与内核模块区别

  • 内核模块是单独编译的一块代码,可以在内核运行时通过 insmodmodprobe 加载
  • 内核驱动直接与硬件打交道

设备驱动类型

有三类设备驱动类型:

  • 字符设备
  • 块设备
  • 网络设备

字符设备

以字符形式读/写硬件文件的驱动。一些典型的字符设备如键盘、鼠标、串口等。如果用户使用字符文件写数据,其他用户将不能使用相同的字符文件写数据,并阻塞访问。字符文件使用同步机制写数据,字符设备用来通讯,不能被挂载。

块设备

以块形式读/写硬件文件的驱动。我们所有的盘,比如硬盘驱动、USB、CD-ROM 都是块设备。写数据是以异步的形式实现。这些设备文件用来存储数据到真正的硬件上,可以被挂载访问。

网络设备

以数据包形式收/发数据的驱动,比如以太网卡。有些网络设备只是回环设备,用来将数据发送给自己。

标签:文件系统,介绍,内核,驱动,内核模块,设备,加载
From: https://www.cnblogs.com/arvin-blog/p/18021939

相关文章

  • APB_AHB_AXI协议的简单介绍
    一、AMBA概述今天要介绍的三种嵌入式总线技术:APB、AHB、AXI,它们都属于AMBA片上总线协议。所以,在介绍这几种总线技术之前,有必要先了解一下AMBA片上总线协议是什么。AMBA(AdvancedMicrocontrollerBusArchitecture),全称叫作高级微控制器总线架构,它是由ARM公司研发推......
  • numpy介绍
    官网:https://numpy.org/doc/stable/NumPy是一个用于科学计算的Python库,它提供了一个强大的N维数组对象ndarray。ndarray是NumPy中的基础数据结构,用于存储同类型数据的多维数组。以下是ndarray的一些关键特性:同质性:ndarray中的所有元素必须是相同类型的,这允许NumPy在底层进行高......
  • Tushare介绍、安装及使用教程
    Tushare是一个开放、免费的Python数据接口库,用于获取金融数据。它为投资、开发者和数据分析师提供了大量的股票、期货、基金等金融市场数据,可以用于市场风险评估、交易策略开发、投资决策支持等方面。Tushare使用简单便捷,在Python开发环境中,可以方便地获取股票、指数、基金等金融......
  • Netlify、Vercel 和 Digital Ocean代码托管平台介绍
    Netlify、Vercel和DigitalOcean都是用于部署Web应用程序的平台,它们各有特点和适用场景:Netlify:Netlify是一个现代化的静态站点部署平台,它提供了简单易用的界面和强大的功能,特别适合部署静态网站、单页面应用和Jamstack应用。Netlify提供了自动构建、部署、CDN加速......
  • pandas介绍
    pandas是一个python包,它提供了快速、灵活、易用的数据结构,旨在处理“关系”或“带标签”数据既直观又高效,它是一个极强的数据分析工具。官网:https://pandas.pydata.org/docs/1数据结构Pandas主要提供了两种核心的数据结构:Series和DataFrame。Series:Series是一种一维的数组型对......
  • OpenResty 介绍与实战讲解(nginx&lua)
    目录一、概述二、OpenResty安装三、OpenResty的工作原理四、OpenResty核心模块1)ngx_lua模块2)ngx_stream_lua模块3)ngx_http_lua_module模块4)ngx_http_headers_more模块5)ngx_http_echo模块6)ngx_http_lua_upstream模块7)ngx_http_redis模块8)ngx_http_proxy_connect_module......
  • 路由选择算法简要介绍
    本文仅对LS和DV进行简单的介绍,由于作者初学计算机网络,同时也没有学习图论的知识,若有不妥之处还请指出.一、链路状态算法(LS)特殊量:D(v):直到本次迭代,从源节点到节点v的最低路径开销p(v):从源到v沿着当前最低开销路径的前一节点N':已确定最短路径的节点集c(a,b):两......
  • 自然语言生成任务中的5种采样方法介绍和Pytorch代码实现
    在自然语言生成任务(NLG)中,采样方法是指从生成模型中获取文本输出的一种技术。本文将介绍常用的5中方法并用Pytorch进行实现。束搜索(BeamSearch)是贪婪解码的一种扩展,通过在每个时间步保留多个候选序列来克服贪婪解码的局部最优问题。在每个时间步保留概率最高的前几个候选词语,然......
  • AI抠图神器RMBG下载介绍
    RMBG是一款先进的AI抠图工具,和其它同类型软件不同的是,RMBG不需要人工勾勒图形轮廓,可以自动识别图像的前景并去除背景,节省大量时间,效果非常惊艳 最新中文版下载:百度网盘:https://pan.baidu.com/s/18BK6LTZ1V6xoGgyFmhdTfQ?pwd=void RMBG的模型是在精心选择的数据集上训练的,......
  • 【Vue前端】vue使用笔记0基础到高手第2篇:Vue进阶知识点介绍(附代码,已分享)
    本系列文章md笔记(已分享)主要讨论vue相关知识。Vue.js是前端三大新框架:Angular.js、React.js、Vue.js之一,Vue.js目前的使用和关注程度在三大框架中稍微胜出,并且它的热度还在递增。Vue.js是一个轻巧、高性能、可组件化的MVVM库,同时拥有非常容易上手的API。Vue.js是一个构建数据驱动......