Linux 基础IO(2)磁盘文件

文章目录

    • 1.磁盘文件
    • 2.文件系统
    • 3.软硬链接
      • 1.软链接
      • 2.硬链接
    • 4.动静态库
      • 1.静态库
      • 2.动态库

1.磁盘文件

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

  1. 扇区:整个盘片分成不同的区块,每一个区块就是一个扇区。
    扇区是磁盘IO的基本单位,一般为512Byte4KB,一般磁盘都是512Byte
  2. 磁道:同一半径一圈区域是磁道

磁盘读写依靠的是磁头,盘面高速旋转,磁头来回摆动。
首先,确定在那个盘面,也就是磁头 head
其次,磁头来回摆动定位磁道 cylinder
然后,盘面高度旋转定位扇区 sector
这样在就可以定位在哪个盘面,哪个磁道的哪个扇区
这样的方法叫做CHS定址法

2.文件系统

扇区是磁盘IO的基本单位,把整个磁盘想象成一个数组,每个元素就是一个扇区,节点下标就是这个扇区的编号
在这里插入图片描述
OS认为一次访问一个扇区,单位太小了,所以操作一次读取4KB的数据块(8个扇区)
在这里插入图片描述
同时,我们把这种地址叫做逻辑区块地址(LBA)

LBA地址怎么转换成CHS呢
首先,设当前LBA = n, 将LBA地址转换为扇区编号区间[8 * n, 8 * n + 7]
扇区编号转CHS:

  1. 盘面c = x / 一个盘面的扇区个数 x %= 一个盘面的扇区个数
  2. 在哪个磁道:x / 一个磁道上扇区个数
  3. 在哪个扇区 : x % 一个磁道上扇区个数

我们使用笔记本/台式机经常会听到分区,但实际上我们的硬盘不会被分成几块,只是划分成了几个区域
在这里插入图片描述
在这里插入图片描述

1.Boot Block(启动块):它的大小是确定的,即1KB,用来存储磁盘分区信息和启动信息。Boot Block的主要作用是引导计算机启动,将操作系统载入内存中
2. inode Table:存放文件属性,如文件大小,所有者,最近修改时间等
3. inode Bitmap:比特位的位置表示第几个inode,比特位的内容表示该inode是否被使用
4. Data blocks:存放文件内容
5. Block Bitmap:比特位的位置表示块号,比特位的内容表示对应的块是否被使用
6. GDT(Group Descriptor Table):块组描述符,描述块组属性信息,管理分组
7. Super Block:存放文件系统本身的结构信息,管理分区

linux系统中每个文件都有它对应的inode,OS只认inode。每个inode占128Byte, inode分区内唯一。
linux中,文件内容和属性分开存储,文件名不属于文件属性。
目录本身也是一个文件,拥有自己的inode和数据块,数据块中保存的是当前目录下的文件名和文件inode的对应关系。
对一个文件,进行增删查改都和文件所处的目录有关系,所以在内核中,都要逆向递归般得到/,从根目录开始进行路径解析
所以之前权限时讲到目录的权限,如果没有r,就无法读取目录下的文件,本质就是无法访问目录数据块的内容,如果没有w,就无法修改当前目录下的文件,因为无法增加或删除或更改存储在目录数据块中的文件名和inode的映射关系。

3.软硬链接

1.软链接

在这里插入图片描述
软链接本质是一个独立的文件,有独立的inode和数据块,软链接的内容中存放着目标文件的路径,相当于快捷方式
可以为目录建立软连接
在这里插入图片描述

2.硬链接

在这里插入图片描述
硬链接的本质是在指定目录下插入新的文件和和inode的映射关系,同时让inode的引用计数(硬链接数)++
在这里插入图片描述
我们不能为目录建立硬链接,除非操作系统自己建立
在这里插入图片描述
一个目录下有多少个子目录:硬连接数 - 2

4.动静态库

在Linux下,静态库的后缀是 .a,动态库的后缀是 .so
在Window下,静态库的后缀是 .lib,动态库的后缀是 .dll
libc.so库名去掉前缀lib,去掉后缀.a/.so就是库的名字

1.静态库

生成静态库
生成.o文件:在这里插入图片描述
打包生成静态库:在这里插入图片描述
ar:打包 -r:replace -c:create
使用静态库:在这里插入图片描述
gcc 选项: -l:指定库名 -L:指定库路径 -I:指定头文件路径
静态库编译生成成功,运行时就不需要了
在这里插入图片描述

库搜索路径:
-L指定目录下
系统指定目录下/usr/lib

2.动态库

生成.o文件:在这里插入图片描述
gcc 选项: -fPIC:生成与位置无关码
打包生成动态库:在这里插入图片描述
使用动态库:
在这里插入图片描述
运行:在这里插入图片描述
运行时报错:无法找到动态库,所以动态库在编译时需要给gcc/g++搜索路径,同时运行时需要给OS搜索路径
解决方法:

  1. 拷贝.so到系统共享库路径下
    在这里插入图片描述
  2. 更改LD_LIBRARY_PATH环境变量
    将不在系统默认库搜索路径下的库的路径,添加到LD_LIBRARY_PATH
    缺点:bash重启之后需重新配置
    在这里插入图片描述
  3. 在系统库的默认搜索路径下添加软链接
    在这里插入图片描述
    在这里插入图片描述
  4. 系统配置文件/etc/ld.so.conf.d/
    在这里插入图片描述
    ldconfig:让配置文件生效

静态库:程序在编译链接时把库的代码复制到可执行文件中,程序运行时不再需要静态库
动态库:程序在运行时动态链接动态库的代码,多个库共享使用库的代码

  1. 同时提供静态库和动态库,gcc默认使用动态库
  2. 同时提供静态库和动态库,要静态链接,必须使用-static选项
  3. 只提供静态库,可执行程序只能对该库进行静态链接,但程序不一定是静态的,可能会动态链接其他库
  4. 只提供动态库,要静态链接,会发生链接报错

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

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

相关文章

Mysql 查询表参考

基本操作 数据库和表的基础操作_数据库和表的基本操作-CSDN博客文章浏览阅读222次。数据库基础知识_数据库和表的基本操作https://blog.csdn.net/weixin_67573348/article/details/126946843 单表 语法分析:MySQL 单表查询 语法分析_adn查询-CSDN博客文章浏览阅读…

CTFHub(web sql注入)(三)

MYSQL 手工注入 1.判断字段数 输入1 输入2 输入3 得知字段有两个 2.判断注入类型 1 and 1 1 1 and 12 回显错误,说明存在sql注入 3.查看数据库内容 知道字段数量为2后,可以查看数据库位置 1 union select 1,2 使用union select 1,2查看未发现数…

【2023】springboot通过阿里云oss进行文件单个批量文件上传下载

SpringBoot整合阿里OSS实现上传下载 目录💻 前言一、介绍二、阿里云添加oss1、进入oss目录2、创建bucket3、测试上传下载4、创建AccessKey管理账号 三、依赖以及配置1、依赖2、yml3、Config类4、OSSUtil 工具类 四、controller五、测试1、测试上传2、测试删除 前言 …

【调制】π/4-DQPSK信号模型及其相关特性分析 【附MATLAB代码】

MATLAB代码 % pi/4-DQPSK modulation %输入一串数,输出经过差分并映射的I、Q两路数据 ​ function [I,Q]pi4_dqpskmod(data) ​ nlength(data)./2; data1data.*2-1; ​ Idatazeros(1,n); Qdatazeros(1,n); ​ ​ Idatadata1(1,1:2:2*n); %串并变换 Qdatadata1(…

用户中心 -- 代码理解

一、删除表 & if 删除表 1.1 DROP TABLE IF EXISTS user 和 DROP TABLE user 网址: 用户管理第2节课 -- idea 2023.2 创建表--【本人】-CSDN博客 二、 代码 2.1 清空表中数据 的 命令 【truncate 清空】 网址: 用户管理第2节课 -- idea 2…

卡尔曼滤波器(二):Simulink卡尔曼滤波器模块使用

观看MATLAB技术讲座笔记,该技术讲座视频来自bilibili账号:MATLAB中国。 本节在Simulink中用卡尔曼滤波器来滤除传感器噪声,准确估算单摆摆角。 一、单摆模型简介 不考虑摩擦时,下图所示的单摆力学平衡方程为: m l 2…

‍ 太空网络攻击

🧑‍🚀 尤里-加加林成为征服外太空的第一人。他在 1961 年 4 月 12 日的飞行有力地推动了全世界的科技发展。 有趣的事实是:苏联所有首次太空发射(包括加加林的飞行)的弹道计算都是在苏联第一个计算机中心的电子计算机…

从数据库中到处所有表的列、注释、类型、是否必填等信息

从数据库中到处所有中文表名、英文表名、所有列、注释、类型、长度、是否必填等信息,效果如下: 要实现上面的表格可以直接用SQL实现,实现SQL如下: #查询SQL select* FROMinformation_schema.COLUMNS as columns left join (sele…

(七)Idea编辑器集成Tomcat

1. 点击桌面上Idea快捷方式打开Idea编辑器,假如没有创建项目的话打开Idea编辑器后的界面展示如下图所示 2. 点击界面左侧菜单中的自定义 3. 然后点击界面中的“所有设置...”,然后点击“构建、执行、部署”,选择其中的“应用程序服务器” 4. 点击“”按钮…

LeetCode 1052. 爱生气的书店老板

题目链接 https://leetcode.cn/problems/grumpy-bookstore-owner/description/?envTypedaily-question&envId2024-04-23 先把最初的满意人数累加算出来,然后使用滑动窗口来模拟连续 minutes分钟不生气,计算不生气minutes分钟最大的满意数 class S…

【智能算法】吉萨金子塔建造算法(GPC)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年,S Harifi等人受到观古代遗迹构造启发,提出了吉萨金子塔建造算法(Giza Pyramids Construction, GPC)。 2.算法原理 2.1算法思想 GPC模拟了古埃…

LeetCode:2385. 感染二叉树需要的总时间(DFS Java)

目录 2385. 感染二叉树需要的总时间 题目描述: 实现代码与解析: DFS 原理思路: 2385. 感染二叉树需要的总时间 题目描述: 给你一棵二叉树的根节点 root ,二叉树中节点的值 互不相同 。另给你一个整数 start 。在第…

文本语音互相转换系统设计

title: 文本语音互相转换系统设计 date: 2024/4/24 21:26:15 updated: 2024/4/24 21:26:15 tags: 需求分析模块化设计性能优化系统安全智能化跨平台区块链 第一部分:导论 第一章:背景与意义 文本语音互相转换系统的定义与作用 文本语音互相转换系统是…

CTFshow-PWN-栈溢出(pwn43)

32位的 system(); 但是好像没"/bin/sh" 上面的办法不行了,想想办法 检查:32 位程序 ida 分析: 跟进 ctfshow 函数 定义了一个长度为 104 的字符数组 s,gets() 函数被用来从标准输入(键盘)中读取…

CU-Mamba:具有通道学习功能的选择性状态空间模型用于图像恢复

CU-Mamba:具有通道学习功能的选择性状态空间模型用于图像恢复 摘要IntroductionRelated WorkMethod CU-Mamba: Selective State Space Models with Channel Learning for Image Restoration 摘要 重建退化图像是图像处理中的关键任务。尽管基于卷积神经网络&#x…

【人工智能基础】人工神经网络

一、人工神经网络的三要素 人工神经元数理模型 MP模型是世界上第一个神经计算模型,为神经网络理论提供了基础 MP模型功能 对树突输入u的线性加权求和对净输入的非线性转换\ 作用函数的功能作用函数的功能 MP神经元模型的作用函数是单位阶跃函数。当x≥0时f(x)…

JTS:Java Topology Suit

接口文档:org.locationtech.jts:jts-core 1.19.0 API。 开发文档:JTS | Documentation。 概述 JTS提供了平面线性几何(planar and linear geometry)与相关的基础几何处理函数(a set of fundamental geometric functions.)。 JTS遵循OGC发布的简单几何规范(Simple Featu…

递归、搜索与回溯算法:综合练习

例题一 解法: 算法思路: ⾸先,我们在第⼀⾏放置第⼀个皇后,然后遍历棋盘的第⼆⾏,在可⾏的位置放置第⼆个皇后,然后再遍历第三⾏,在可⾏的位置放置第三个皇后,以此类推&#xff0c…

nodejs切换

1.卸载nodejs 2.下载nvm工具 3.检查nvm安装情况 nvm -v3.nvm 安装命令 nvm install 10.16.34.查询nodejs版本 nvm list5.切换nodejs版本 nvm use 10.16.3

⑤【Shiro】SpringBoot整合Shiro,实现登录认证

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ ⑤【Shiro】SpringBoot整合Shiro,实…