磁盘文件系统

磁盘文件系统

  • 一、磁盘结构
    • 1.1 认识一下基础的硬件设备以及真实的机房环境
    • 1.2 磁盘物理结构与存储结构
      • 1、磁盘物理结构
      • 2、磁盘的存储结构
      • 3、CHS地址定位
      • 4、磁盘的逻辑结构(LBA)
      • 5 磁盘真实过程
      • 5 CHS && LBA地址
  • 二、理解分区、格式化
    • 1 引⼊"块"概念
    • 2 引⼊"分区"概念
  • 三、学习Ext*系列文件系统(inode号与inode)
  • 四、理解系统中的文件、目录
    • inode与block如何映射?
    • 相关问题
      • 凭什么拿到inode?我们在系统层面访问的好像都是文件名啊???
      • 再次理解文件名
    • 你怎么确定自己在哪一个分区?
  • 五、深刻理解软硬链接
    • 5.1 软链接
    • 5.2 硬链接
    • 5.3 理解软硬链接
    • 5.4 软硬链接的使用场景

在这里插入图片描述
1、文件可以分为打开的文件和没有被打开的文件,之前我们谈的进程中的文件就是打开的文件,这一节的内容我们要讲的就是没有被打开的文件
2、首先我们需要明白对于所有的文件,其实没有被打开的文件占大多数,所以对没有被打开的文件的管理是非常重要的,其次我们需要知道打开的文件是被加载到内存的,那没有被打开的文件在哪里?—很显然就是磁盘
3、磁盘上的文件被打开的前提是什么?当然是需要找到这个文件的位置,也就是路径,当然每一个文件都有自己的路径,操作系统对每一个文件的路径,属性等的管理就叫做磁盘级文件系统,严格意义上文件系统分内存级、磁盘级两种。
4、文件系统类似于我们生活中的菜鸟驿站,每一个快递都有自己的货柜号(例如,12-3-1012),驿站通过一系列方式管理我们的快递,驿站我们可以简单理解为快递系统,管理文件的系统我们称为文件系统,它们的管理方式类似,(12-3-1012)就类似于快递路径,文件的路径也是类似的路径,快递系统的工作就是增加快递,取走快递,遗失快递等进行管理,文件系统也是如此。
5、这一节的目的就是
(1)文件系统是怎样管理未打开文件的?
(2)路径怎么理解—(定位文件)

一、磁盘结构

1.1 认识一下基础的硬件设备以及真实的机房环境

(1)磁盘(机械磁盘------便宜、但是容量大)-----唯一的机械设备
在这里插入图片描述
上图打开圆盘后如下图
在这里插入图片描述
我们所有的数据都被保存在图二中的盘片上的,盘片上有一个探头,叫做磁头

(2)服务器
在这里插入图片描述
没有键盘没有显示器,服务器上的许多空格就是存放磁盘的地方,如图中的服务器就有24个盘
(3)服务器机柜(里面存放服务器)
在这里插入图片描述
(4)机房(存放许多服务器机柜)
在这里插入图片描述
(5)我们一直畅谈二进制,那磁盘上的二进制我们该如何理解?
我们生活中磁铁是很常见的吧,磁铁分为N,S极,磁盘我们可以理解为上面有无数个小磁铁,我们可以规定(N为1,S为0),向磁盘中写入数据,其实就是更改某个小磁铁的N/S极,当我们需要销毁磁盘时,我们不能直接销毁,比如我们将所有文件全部删除,但是后面我们会学习到磁盘中的文件是可以恢复的,特别容易造成信息泄露,最好的方式是火烧消磁。

1.2 磁盘物理结构与存储结构

1、磁盘物理结构

在这里插入图片描述

2、磁盘的存储结构

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
磁片每一面都有磁头
在这里插入图片描述

3、CHS地址定位

扇区是磁盘存储数据的基本单位,512字节块设备
磁头摆动的本质:定位磁道或者(柱面)
磁盘盘片旋转的本质:定位扇区
所以通过磁盘盘片的旋转再加上磁头左右的摆动,就可以在任意磁盘面、任意扇区上读写存取数据

如何定位⼀个扇区呢?
• 可以先定位磁头(header)
• 确定磁头要访问哪⼀个柱⾯(磁道)(cylinder)
• 定位⼀个扇区(sector)

上面这种定位扇区的方法我们可以叫做CHS地址定位法
• CHS地址定位
⽂件 = 内容+属性 都是数据,⽆⾮就是占据那⼏个扇区的问题!能定位⼀个扇区了,能不能定位多个扇
区呢?当然是可以的

知识点:
• 扇区是从磁盘读出和写⼊信息的最⼩单位,通常⼤⼩为 512 字节。
• 磁头(head)数:每个盘⽚⼀般有上下两⾯,分别对应1个磁头,共2个磁头
• 磁道(track)数:磁道是从盘⽚外圈往内圈编号0磁道,1磁道…,靠近主轴的同⼼圆⽤于停靠磁
头,不存储数据
• 柱⾯(cylinder)数:磁道构成柱⾯,数量上等同于磁道个数
• 扇区(sector)数:每个磁道都被切分成很多扇形区域,每道的扇区数量相同
• 圆盘(platter)数:就是盘⽚的数量
磁盘容量=磁头数 × 磁道(柱⾯)数 × 每道扇区数 × 每扇区字节数
• 细节:传动臂上的磁头是共进退的(这点⽐较重要,后⾯会说明)

4、磁盘的逻辑结构(LBA)

CHS地址定位是磁盘真实的地址操作方法,但设计师设计了一种更简便的方法,下面我们来学习。
在这里插入图片描述
这个东西大家应该见过,里面黑色的带子叫做磁带,磁带上⾯可以存储数据,我们可以把磁带“拉直”,形成线性结构
在这里插入图片描述
那么磁盘本质上虽然是硬质的,但是逻辑上我们可以把磁盘想象成为卷在⼀起的磁带,那么磁盘的逻
辑存储结构我们也可以类似于:
在这里插入图片描述
这样每⼀个扇区,就有了⼀个线性地址(其实就是数组下标),这种地址叫做LBA
在这里插入图片描述
通过这种方式我们可以将磁盘抽象为一个特别大的线性数组,但是真正访问磁盘还是CHS方式,所以我们需要将LBA<—>CHS
转化

5 磁盘真实过程

上面我们说了传动臂上的磁头是共进退的,但没有解释原因,下面就给大家简单回答一下:
在这里插入图片描述
根据上面的理解我们或许会认为磁盘是一片一片的,但那只能是初步理解,真实的磁片其实是一圈一圈的,每一圈被称为一个柱面

磁道:
某⼀盘⾯的某⼀个磁道展开:
在这里插入图片描述
即:⼀维数组
柱⾯:
整个磁盘所有盘⾯的同⼀个磁道,即柱⾯展开:
在这里插入图片描述

• 柱⾯上的每个磁道,扇区个数是⼀样的
• 这不就是⼆维数组吗

整盘:
在这里插入图片描述
整个磁盘不就是多张⼆维的扇区数组表(三维数组?)
所有,寻址⼀个扇区:先找到哪⼀个柱⾯(Cylinder) ,在确定柱⾯内哪⼀个磁道(其实就是磁头位置,
Head),在确定扇区(Sector),所以就有了CHS,CHS的顺序就是查找扇区的顺序。

我们之前学过C/C++的数组,在我们看来,其实全部都是⼀维数组:(二维数组本质也是一维数组)
在这里插入图片描述

所以,每⼀个扇区都有⼀个下标,我们叫做LBA(Logical Block Address)地址,其实就是线性地址。所以
怎么计算得到这个LBA地址呢?
在这里插入图片描述
OS只需要使⽤LBA就可以了!!LBA地址转成CHS地址,CHS如何转换成为LBA地址。谁做啊??磁盘
⾃⼰来做!固件(硬件电路,伺服系统)

对于操作系统只需要LBA地址,但是对于磁盘来说CHS还是必须要的,所以我们需要两者进行转化.

5 CHS && LBA地址

在这里插入图片描述

二、理解分区、格式化

1 引⼊"块"概念

OS与磁盘进行IO的时候,以扇区为基本单位,512字节,但是这是不是有点少啊,所以操作系统选择以1k、2k、4k、8k等单位来IO的,大多数情况下操作系统以4k(8个扇区)为一个基本IO单位,我们称这样4k的区域叫做块

• 知道LBA:块号 = LBA/8
• 知道块号:LAB=块号*8 + n. (n是块内第⼏个扇区)

在这里插入图片描述

2 引⼊"分区"概念

学习这一部分之前我们先引入一个问题OS如何管理1000G、5000G、甚至50T的磁盘空间?
当操作系统要管理这么大的空间,成本非常的高,对于文件系统管理难度也是非常的高,那真实是如何管理的?
这种管理方式类似于我们现实生活中的省、市、县的划分,一个国家要一次性全部管理确实有难度,但我们分成市、县,我们只需要管理好一个市、县,其他市县也按这种方式管理,就轻松很多,操作系统也类似。

磁盘要管理其实首先应该划分区域(分区:c盘、d盘),分区与分区之前是可以使用不同的文件系统,这样一个分区挂掉,不至于整个磁盘出问题

光是分区还不够,操作系统又将一个分区分为不同的组,这样管理好每一个组就等同于管理好一个区,管理好每一个区就等同于管理好整个磁盘空间,这种管理方式我们称为分治

所以现在我们只需要学习管理每一个组:
在这里插入图片描述
我们在Ext*文件系统中来学习分区

三、学习Ext*系列文件系统(inode号与inode)

在这里插入图片描述
在这里插入图片描述
补充知识:
文件==内容+属性(也是数据)属性会以结构体的方式构建出来----inode
因此一个文件一个inode(一个文件的属性集,128字节)互不重复
一个块就(有4k/128字节)个inode
由于磁盘上的文件非常的多,为了存储大量的inode所以我们需要一个inode table

当然磁盘更重要的还是储存文件内容,所以磁盘还有数据块,数据块中每一个小块都是4kb
在这里插入图片描述
所以linux下文件属性与文件内容分开存储。其中inode与数据块存在着映射关系,所以找到inode就找到了存储数据的数据块

一、inode bitmap类似于位图,通过二进制位的值来查看此处有没有inode存在,但是现在问题来了,我们上面说过磁盘是以块为单位来存储的,最小的访问单位是扇区,磁盘与文件系统最小IO单位是4kb,我们根本就不能直接操作一个bit位,那我们该如何理解呢?
1、inode table也是以4kb(块)为单位的方式存储的
2、磁盘上的所有数据要修改都要读到内存中(哪怕修改一个bit位都会读到内存在操作,最后写回)

根据我们上面的学习其实我们就可以简单来谈一下新建一个文件在磁盘上的过程:
1、分配一个inode(在inode bitmap中查找一个未被分配的位置),然后再向inode写入文件属性,例如时间,大小等
2、在block bitmap里申请一个块,再向该块写入文件内容
3、最后在inode table中写入inode号

所以我们找到inode编号就可以找到文件了。
在这里插入图片描述

二、删除文件的理解:
删除一个文件根本不需要删除属性inode,和存储内容的块做清空,删一个文件只需要在inode bitmap 和 block bitmap里把bit位由1->0 ,所以删除一个文件可以恢复,所以只需要找到原本inode编号然后在inode bitmap和block bitmap里对应位置的bit位由0->1就恢复了,删除本质就是inode, block无效

三、GDT:块组描述符
描述当前区一共有多少inode,还剩多少inode,还剩多少block等等

四、super block:
我们的一个分区一共分了多少组?一个组的开始扇区,开始块号,结束块号,一共有多少个inode,多少个块?。。。。。。
我们都需要知道,super block会把这些东西都记录下来,所以super block表示对整个分区管理的数据结构,超级块就表示文件系统。并不是一个分区一个super block,但也不是一个所有组都有super block,拥有super block的组是混杂在所有组之间的,并且所有的super block的内容完全一致,为什么?因为一个分区如果只有一个super block的话,一旦这个superblock挂掉后果太严重了,整个文件系统就等同于挂掉了,所以为了防止这种情况出现,会有多份

文件系统以分区为单位,每一个分区可以设置不同的文件系统

五、boot block:
在所有分组之前,它与磁盘启动有关,这里我们不做了解,自己下来了解

文件名不在inode中,下面讲解原因

格式化:向一个分区中写入操作系统(将bit map,block map清空等)

四、理解系统中的文件、目录

1、在一个分区中,每一个组的inode号的个数,block个数都是固定的,所以inode号个数等在整个文件系统中都是固定的,那有没有inode用完了,block没用完?这种情况是有可能的,这种情况其实很简单就直接使用其他分区即可

2、关于inode
(1)inode以分区为单位,一套inode
(2)inode分配时,只需要确定每个组起始inode即可,所以每个组inode都是固定的,起始inode存于GDT里面

3、关于块
(1)块号也是统一分配的
(2)所以对于每一个组我们也只需记录起始块号就可以了,这个记录与GDT中

4、所以对于一个具体的组,我们是如何分配inode?
每一个组都有各自的inode bitmap,我们用当前bitmap的值加上组起始inode,这个就是当前inode,再存于inode table

5、如何分配块号的呢?
与上面相同-- start-block+block bitmap即可,之前我们知道inode与块会存在映射关系(允许跨组),这两者都是全局建立的,这允许我们跨组保存文件,故此允许我们大文件创建。

在这里插入图片描述
文件管理就是管理SB&&GDT
上面inode查找啊,分配inode啊全部都是内存级操作。

所以为了对应磁盘最小存储单位为块,其实内存也被划分为4k的块

如果我们知道inode如何增删查改文件?
对于上面的四个操作,我认为只需要知道增和查,其他两个操作就很简单来了,增上面已经谈过,找其实也就是将当前的inode号与每一个组中的其实inode对比,找所属组,然后再用当前inode-起始inode就找到了其在当前组中的inode bitmap,然后在找到inode table,其他就知道了。

inode与block如何映射?

在这里插入图片描述
(1)一个inode映射有15个位置,前12个直接映射,也就是一个指针对应一个块
(2)一级间接指针它不存文件数据,存其他块号(4MB–4k*1024)
(3)二级间接指针,存其他索引的块号 (4GB)
(4)三级间接指针同理

相关问题

凭什么拿到inode?我们在系统层面访问的好像都是文件名啊???

上面我们说过文件名不在inode中,那它到底存于哪里?
首先我们由一个问题引入,我们上面一直都谈论的是普通文件,但是我们知道还有一种文件叫做目录啊?对于目录也需要inode与data block,目录的内容也要有对应的目录块(存文件名—inode的映射关系、互为映射)

所以我们来重新谈一下文件属性(rwx)
无r:无法读取目录的data block,拿不到inode
无w:无法将inode与文件映射关系写到数据块里
无x:打不开
在这里插入图片描述

再次理解文件名

在这里插入图片描述
我们要操作文件需要找到文件名,首先要打开当前目录,然后需要找到当前目录的inode编号,但是当前inode编号也是由目录inode存着的,也有文件名(/,根目录的inode是固定写死的)
所以为什么每一个进程都有CWD就是因为我们要访问一个文件必须要找到完整的路径

为了防止操作系统进行大量重复的路径操作,linux需要对路径进行缓存,linux以多叉树的形式进行缓存我们的操作路径(内存级)----dentry

在这里插入图片描述

其中不光目录有自己的dentry,其实普通文件也有自己的dentry

你怎么确定自己在哪一个分区?

多个分区,都会有自己的根目录,其必须包含10个普通的目录,在分区被分好之后,linux默认该分区无法使用(除了 / )
分区必须通过挂载,分区才能以路径方式进行访问。

ls /dev/vda* 查看分区
df -h 查看磁盘详细情况

在这里插入图片描述
路径的前缀就表示着自己在哪一个分区。

五、深刻理解软硬链接

5.1 软链接

1、命令:ln -s file.txt file-soft.link
在这里插入图片描述
软链接本质上是独立的新建文件(在用户层,软链接的文件与原本文件具有相同的效应),我们可以将其理解为win上的快捷方式

5.2 硬链接

在这里插入图片描述
硬链接本质不是独立文件

5.3 理解软硬链接

1、软链接有独立的inode,软链接内容上保存的是目标文件的路径(win下的快捷方式)
2、硬链接不是独立文件,无独立inode,本质上是文件名和以及存在的文件的映射关系
3、硬链接权限后面的数字叫做inode的引用计数(硬链接数)

5.4 软硬链接的使用场景

1、软(目录也可以建立软链接):
在这里插入图片描述
让我们的程序不带 ./ 就能使用前面已经介绍过很多方法了,这里介绍一种–建立软链接在user/bin目录下
在这里插入图片描述
删除软链接

2、硬链接
在这里插入图片描述

现在我们创建了一个目录和一个文件,默认文件硬链接数是1,这个没什么问题,但是目录默认却是2,并且我们在该目录下又建一个目录,链接数又变成3了?
我们之前不是学过隐藏文件. 和 … ,之前我们只知道 . 代表自己,但我们不知道为什么,今天就可以给大家解释了 . 其实就是对自己的一个硬链接,所以目录默认为2,新建目录为什么变为3? 是因为dir目录中还有一个 … ,它也指向该目录

在这里插入图片描述
需要注意的是 根目录下的 … 是被特殊处理的,并不是指向自己.

硬链接也可以用作硬链接,当我们删除时只删除的一个引用计数,只要不完全清空,就可以使用文件。
linux中,不允许对目录新建硬链接(可能会出现环状链接)

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

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

相关文章

基于LangChain 实现 Advanced RAG-后检索优化(下)-上下文压缩与过滤

摘要 Advanced RAG 的后检索优化&#xff0c;是指在检索环节完成后、最终响应生成前&#xff0c;通过一系列策略与技术对检索结果进行深度处理&#xff0c;旨在显著提升生成内容的相关性与质量。在这些优化手段中&#xff0c;上文压缩与过滤技术是提升检索结果质量的重要手段。…

为什么 Vite 速度比 Webpack 快?

一、webpack会先进行编译&#xff0c;再运行&#xff0c;vite会直接启动&#xff0c;再按需编译文件。 首先看两张图&#xff0c;可以清晰的看到&#xff0c;上面的图是webpack编译过的&#xff0c;而下面的图是vite直接使用工程内文件。 二、区别于Webpack先打包的方式&am…

C# 操作符

C# 操作符 一、操作符概览二、优先级与运算顺序三、各类操作符的实例 一、操作符概览 操作符&#xff08;运算符&#xff09;的本质是函数的简记法 操作符不能脱离与它关联的数据类型 int x 5; int y 4; int z x / y; Console.WriteLine(z);//输出1double a 5.0; double b…

C++设计模式:面向对象的八大设计原则之四

里氏替换原则&#xff08;Liskov Substitution Principle&#xff0c;LSP&#xff09;是面向对象设计中的一个重要原则&#xff0c;它指出子类必须能够替换它的基类&#xff0c;并且程序的行为不会发生改变。也就是说&#xff0c;在任何使用基类对象的地方&#xff0c;都可以透…

网络通信领域的基础或流行协议

一、TCP(传输控制协议) 1. 宏观介绍 TCP:全称“Transmission Control Protocol”——传输控制协议,是互联网最基础的传输协议之一。传输层协议,提供面向连接、可靠的字节流传输服务。它通过三次握手建立连接、四次挥手断开连接,确保数据有序、完整地传输作用:让两个设备…

【教学类-34-10】20250503(通义万相)4*3蝴蝶拼图(圆形、三角、正方、半圆的凹凸小块+参考图灰色)

背景需求 2023年从网站上搜索拼图代码,陆续改良了圆形、三角形、菱形凹凸) 【教学类-34-05】20230425拼图(“圆角”凹凸拼图)3*4格子(中班主题《个别化拼图》偏美术)_拼图的槽叫什么形状-CSDN博客文章浏览阅读1.1k次。【教学类-34-05】20230425拼图(“圆角”凹凸拼图)…

bellard.org‌ : QuickJS 如何使用 qjs 执行 js 脚本

参阅上一篇&#xff1a;Fabrice Bellard&#xff08;个人网站&#xff1a;‌bellard.org‌&#xff09;介绍 Fabrice Bellard&#xff08;个人网站&#xff1a;‌bellard.org‌&#xff09;是计算机领域最具影响力的程序员之一&#xff0c;其贡献跨越多个技术领域并持续推动开…

数据结构---

案例一 1.随机生成n个工人工时&#xff0c;100以内&#xff0c;工号分别为2021101到2021100n 2.以工时数为关键字分别使用选择排序、冒泡排序、插入排序进行升序排序。 3.把排序后的结果输出&#xff0c;包括工号工时数 4.比较三种算法对相同的n值数组排序所花的时间 代码如下&…

Python硬核革命:从微控制器到FPGA的深度开发指南

1. 重新定义硬件开发:Python的颠覆性突破 传统硬件开发长期被C/C++和Verilog/VHDL统治,但Python正通过两条路径改变这一格局: 1.1 微控制器领域的MicroPython革命 完整Python 3.4语法支持,运行在资源受限的MCU上(最低要求:64KB ROM,16KB RAM) 直接内存访问能力,突破…

基于springboot+vue的宠物共享平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat12开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;Maven3.3.9 系统展示 宠物寄养管理 宠…

day 11 超参数调整

一、内参与外参&#xff08;超参数&#xff09; 内参是模型为了适应训练数据而自动调整的&#xff0c;是模型内部与训练数据紧密相关的因素&#xff0c;不同的训练数据会导致模型学习到不同的参数值&#xff0c;这些参数在模型训练完成后就固定下来。 超参数是在模型训练前需…

快速搭建对象存储服务 - Minio,并解决临时地址暴露ip、短链接请求改变浏览器地址等问题

其他文章 服务容错治理框架resilience4j&sentinel基础应用---微服务的限流/熔断/降级解决方案-CSDN博客 conda管理python环境-CSDN博客 快速搭建对象存储服务 - Minio&#xff0c;并解决临时地址暴露ip、短链接请求改变浏览器地址等问题-CSDN博客 大模型LLMs的MCP入门-…

朴素贝叶斯分类器

朴素贝叶斯分类器 朴素贝叶斯是一种基于密度估计的分类算法&#xff0c;它利用贝叶斯定理进行预测。该算法的核心假设是在给定类别的情况下&#xff0c;各个特征之间是条件独立的&#xff0c;尽管这一假设在现实中通常不成立&#xff0c;但朴素贝叶斯分类器依然能够生成对有偏…

在 Trae CN IDE 中配置 Python 3.11的指南

在 Trae CN IDE 中配置 Python 3.11的指南 下载 python 3.11 安装 Python 3.11 首先&#xff0c;我们需要确保安装了 Python 3.11。可以从Python 官方网站下载适合你操作系统的版本。 链接 如果你已经安装了 Python 3.11&#xff0c;可以通过以下命令确认&#xff1a; 文…

MQTT 协议与 HTTP 协议的区别

在现代的网络通信中&#xff0c;MQTT 协议和 HTTP 协议都扮演着重要的角色&#xff0c;但它们有着不同的特点和适用场景。下面我们就从多个方面来详细探讨它们之间的区别。 一.协议设计理念 1. MQTT 协议 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;即…

Postgresql源码(145)优化器nestloop参数化路径评估不准问题分析

相关 《Postgresql源码&#xff08;133&#xff09;优化器动态规划生成连接路径的实例分析》 1 问题 最近遇到一个问题&#xff0c;评估行数和真实行数存在较大差距&#xff0c;导致计划不准的问题。 nestloop内表评估是根据外表的参数来的。因为外表驱动表每取一条&#xff…

HTML与CSS实现风车旋转图形的代码技术详解

在前端开发中&#xff0c;HTML和CSS是构建网页的基础技术。通过巧妙运用HTML的结构搭建和CSS的样式控制&#xff0c;我们能够实现各种精美的视觉效果。本文将对一段实现旋转图形效果的HTML和CSS代码进行详细解读&#xff0c;剖析其中的技术要点。 一、运行效果 HTML与CSS实现风…

linux下,ollama会把模型文件保存在哪里?

文章目录 运行ollama,有两种形式,估计得分开讨论首先是使用自动启动的ollama:先跑个“小一点的大模型”但是现在模型文件存在哪儿呢?运行ollama,有两种形式,估计得分开讨论 我们用两种方式,来运行ollama。 首先是使用自动启动的ollama: ps -aux | grep ollama系统自…

鼎讯信通 智能通信干扰设备:多频段多模态信号压制解决方案

在万物互联时代&#xff0c;通信安全已成为现代社会的核心基础设施防护重点。面对日益复杂的电磁环境挑战&#xff0c;新一代智能通信干扰设备通过技术创新实现了信号压制能力的革命性突破。本文将深入解析该设备的八大核心功能与技术特性&#xff0c;展现其在商业通信保障、工…

【2025软考高级架构师】——案例分析总结(13)

摘要 本文对2025年软考高级架构师的考纲及案例分析进行了总结。内容涵盖系统规划、架构设计、系统建模、安全架构、可靠性分析、大数据架构等多方面知识点&#xff0c;还涉及软件质量特性、系统流程图与数据流图、嵌入式系统架构、分布式系统设计等考查内容&#xff0c;详细列…