视频网站开发分析/情感营销案例
文件系统
概述
文件系统:一种用于持久性存储的系统抽象
- 在存储器上:组织、控制、导航、访问和检索数据
- 大多数计算机包含文件系统
文件:文件系统中一个单元的相关数据在操作系统中的抽象
文件系统功能
-
分配文件磁盘空间
- 管理文件块
- 管理空闲空间
- 分配算法
-
管理文件集合
- 定位文件及内容
- 命名:通过名字找到文件的接口
- 最常见:分层文件系统
- 文件系统类型
-
提供的便利及特征
- 保护:分层来保护数据安全
- 可靠性和持久性:保持文件的持久即使发生崩溃
-
文件和块
- 文件属性:名称、位置、大小、保护、创建者、创建时间、最近修改时间等
- 文件头
- 在存储数据中保存了每个文件的信息
- 保存文件的属性
- 跟踪那一块存储块属于逻辑上文件结构的那个偏移
文件描述符
-
文件使用模式
- 使用程序必须在使用之前打开文件
-
内核跟踪每个进程打开的文件
- 操作系统为每个进程维护一个打开文件表
- 一个打开的文件描述符是这个表中的索引
-
需要元数据来管理打开文件
- 文件指针:指向最近的一次读写位置,每个打开了这个文件的进程都是这个指针
- 文件打开计数:记录文件打开的次数 - 当最后一个进程关闭文件的时候才允许其从打开文件表中移除
- 文件磁盘位置:缓存数据访问信息
- 访问权限:每个程序访问模式信息
-
用户视图:持久的数据结构
-
系统访问接口
- 字节 的集合
- 系统不会关系你想存储在磁盘上的任何数据结构
-
操作系统内部视角
- 块的集合(块是逻辑转换单元,而扇区是物理转换单元)
- 块大小<>扇区大小:在unix中,块大小是4kb
用户怎么访问文件?在系统层面需要知道用户的访问模式
- 顺序访问:按照字节依次读取
- 几乎所有的访问都是这种方式
- 随机访问:从中间读写
- 不常用,但是仍然重要,例如虚拟内存支持文件:内存页存储在文件中
- 更加快速 - 不希望获取文件中间的内容的时候也必须先获取块内所有的字节
- 基于内筒访问:通过特征
- 许多系统不提供此种访问方式,相反,数据库是建立在索引内容的磁盘访问上实现的(需要高效的随机访问)
文件内部结构
- 无结构
- 单词、比特的队列
- 简单记录结构
- 列
- 固定长度
- 可变长度
- 复杂结构
- 格式化文档
- 可执行文件
- 其他
文件共享和访问控制
- 多用户系统中的文件共享是很必要的
- 访问控制
- 谁能够获得那些文件的哪些访问权限
- 访问模式:读、写、执行、删除、列举等
- 文件访问控制列表(ACL)
- 文件实体,权限
- Unix模式
- 用户|组|所有人, 读|写|可执行
- 用户ID识别用户,表明每个用户所允许的权限以及保护模式
- 组ID允许用户组成组,并指定了组访问权限
- 指定多用户/客户如何同时访问共享文件
- 和过程同步算法相似
- 因磁盘I/O网络延时而设计简单
- Unix文件系统语义
- 对打开文件的写入内容立即对其他打开同一文件的其他用户可见
- 共享文件指针允许多用户同时读取和写入文件
- 会话语义
- 写入内筒只有当文件关闭时可见
- 锁
- 一些操作系统和文件系统提供该功能
目录
-
文件以目录方式组织起来
-
目录是一类特殊的文件
- 每个目录都包含了一张表
-
目录和文件的树形结构
- 早期的文件系统时扁平的(只有一层目录)
-
层次名称空间
-
典型操作
- 搜索文件
- 创建文件
- 删除文件
- 枚举目录
- 重命名文件
- 在文件系统中遍历一个路径
-
操作系统应该只允许内核模式修改目录
- 确保映射完整性
- 应用程序能够读目录
-
文件名的线性列表,包含了指向数据块的指针
- 编程简单
- 执行耗时
-
Hash表 - hash数据结构的线性表
- 减少目录搜索时间
- 碰撞 - 两个文件名的hash值相同
- 固定大小
一个文件系统需要先挂载才能被访问
一个未挂载的文件系统被挂载在挂载点上
文件别名
-
两个活多个文件管理同一个文件
-
硬链接:多个文件项指向一个文件
-
软连接:以快捷方式指向其他文件
-
通过存储真是文件的逻辑名来实现
-
如果删除了一个有别名的文件会如何
- 这个别名将成为悬空指针
-
Backpointers 方案:
- 每个文件有一个包含多个backpointers的列表,所以删除所有的backpointers
- backpointers使用菊花链管理
-
添加一个间接层:目录项数据结构
- 连接 - 已经存在文件的另外一个名字
- 连接处理 - 跟随指针来定位文件
文件系统的种类
- 磁盘文件系统
- 文件处处在数据存储设备商,如磁盘
- FATNTFS ext2/3等
- 数据库文件系统
- 文件根据其特征是可被寻址的
- 如:WinFS
- 日志文件系统
- 记录文件系统的修改/事件
- 例如:journaling file system
- 网络/分布式文件系统
- NFS SMB AFS GFS
- 分布式文件系统
- 文件可以通过网络被共享
- 文件位于远程服务器
- 客户算远程挂载服务器的文件系统
- 标准文件系统访问被转换成远程访问
- 标准的协议:NFS CIFS
- 分布式文件系统的问题
- 客户端和客户端上的用户辨别起来很复杂
- NFS是不安全的
- 一致性问题
- 错误处理模式
- 文件可以通过网络被共享
- 特殊/虚拟文件系统
虚拟文件系统
- 分层结构
- 上层:虚拟(逻辑)文件系统
- 底层:特定文件系统模块
- 目的
- 对所有的不同文件系统的抽象
- 功能
- 提供相同的文件和文件系统接口
- 管理所有的文件和文件系统关联的数据结构
- 高效的查询例程,遍历文件系认
- 与特定的文件系统模块的交互
需要包含那些内容:
- 卷控制块
- 每个文件系统一个
- 文件系统详细信息
- 块,块大小,空余块、计数指针等
- 文件控制块
- 每个文件一个
- 文件详细信息
- 许可、拥有者、大小、数据库位置等
- 目录节点
- 每个目录项一个
- 将目录项数据结构和树形布局编码成树形数据结构
- 指向文件控制块,父节点和项目列表
数据块缓存
数据块需要按需读入内存
- 提供read操作
- 预读:预选读取后面的数据块
数据块使用后被缓存
- 假设数据将会被使用
- 写操作可能被缓存和延时写入
两种数据块的缓存方式
-
普通缓冲区缓存
-
页缓存:统一缓存数据块和内存页
-
分页要求:
- 当需要一个页的时候才将其载入内存
-
支持存储
- 一个页可以被映射到一个本地文件中
-
打开文件
- 打开文件描述
- 每个被打开的文件一个
- 文件状态信息
- 目录项,当前文件指针、文件操作设置等
- 打开文件表
- 一个进程一个
- 一个系统级的
- 每个卷控制块也会保存一个列表
- 所以如果有文件被打开将不能被卸载
锁的保护机制:
- 一些操作系统和文件系统提供该功能
- 调节对文件的访问
- 强制和劝告:
- 强制:根据锁保持情况和需求拒绝访问
- 劝告:进程可以查找锁的状态来决定怎么做
文件分配
- 大多数文件都很小
- 需要对小文件提供强力的支持
- 块空间不能太大
- 一些文件非常大
- 必须支持大文件(64-bit文件偏移)
- 大文件访问需要相当高效
如何为一个文件分配数据块?
- 分配方式
- 连续分配
- 文件头指定起始块和长度
- 位置/分配策略
- 最先匹配,最佳匹配
- 优势:文件读取表现好; 高效的顺序和随机访问
- 劣势:碎片!; 文件增加问题:预分配?按需分配?
- 链式分配
- 文件以数据块链表方式存储
- 文件头包含了到第一块和最后一块的指针
- 优点:创建、增大、缩小很容易;没有碎片
- 缺点:不可能进行真正的随机访问;可靠性不强:破坏一个链然后…
- 索引分配
- 为每个文件创建一个名为索引数据块的非数据数据块
- 文件头包含了索引数据块
- 优点:创建增大缩小很容易;没有碎片;支持直接访问
- 缺点:当文件很小时,存储索引的开销,如何处理大文件?链式索引快,多级索引块
- 连续分配
- 指标
- 高效:如存储利用率
- 表现:如访问速度
空闲空间管理
跟踪在存储中所有未分配的数据块
空闲空间列表存储在哪里?空闲空间列表的最佳数据结构是什么样的?
- 用位图代表空闲数据块列表:
- 使用简单但是可能会是一个big vector
- 需要保护
- 执行空闲列表的指针
- 位图
- 必须保存在磁盘上
- 在内存和磁盘拷贝可能有所不同
- 不允许block在内存中的状态为bit而在磁盘中bit
- 解决
- 在磁盘上设置bit[i]为1
- 分配block[j]
- 在内存中设置bit[i] = 1
- 链式列表
- 分组列表
RAID多磁盘管理
- 通常磁盘通过分区来最大限度减小寻道时间
- 一个分区是一个柱面的集合
- 每个分区都是逻辑上独立的磁盘
- 分区:硬件磁盘的一种适合操作系统指定格式的划分
- 卷:一个拥有一个文件系统实例的可访问的存储空间
- 使用多个并行磁盘来增加
- 吞吐量
- 可靠性和可用性
- RAID - 冗余磁盘阵列
- 各种磁盘管理技术
- RAID levels:不同RAID分类
- 实现
- 在操作系统内核:存储、卷管理
- RAID硬件控制器
RAID0
- 数据块分成多个子块,存储在独立的磁盘中
- 和内存交叉相似
- 通过更大的有效块大小来看提供更大的磁盘带宽
RAID1
- 可靠性城北增长
- 读取性线性增加
- 向两个磁盘写入,从任何一个读取
RAID3
- 存储Bit-string 作奇偶校验
RAID4
- 数据块级磁带配有专用奇偶校验磁盘
- 允许从任意一个故障磁盘中恢复
RAID5
- 每个条带块有一个奇偶校验块
- 允许一个磁盘出错
RAID6
- 两个冗余块
- 有一种特殊的编码方式
- 允许两块磁盘错误
组合方式
- RAID01
- RAID10
其他
磁盘调度
- 读取或者写入时,磁头必须被定为在期望的磁道,并从所期望的扇区开始
- 寻道时间:定为到期望磁道所花费的时间
- 旋转延迟:从扇区的开始处到达目的处花费的时间
- 平均班旋转延时时间:磁盘旋转一周时间的一半
调度手段:
-
先进先出:
- 按顺序处理请求
- 公平对待所有进程
- 在很多进程的情况下,接近随机调度性能
-
最短服务优先:
- 选择从磁臂当前位置需要移动最少的I/O请求
- 总选择最低端的寻道时间
-
SCAN方式
- 磁臂在一个方向上个移动,满足所有未完成的请求,知道磁臂到达该方向上的最后的磁道
- 调换方向
- 有时被称为 elevator algorithm
-
C-SCAN
- 限制了仅在一个方向上的扫描
- 当最后一个磁道也被访问过之后,磁臂返回到磁盘的另外一端再进行扫描
-
C-LOOK
- C-SCAN的改进版本
- 磁臂先到达该方向上最后一个请求处,然后立即反转
-
N-step-SCAN
- 在SSTF/SCAN和CSCAN几种调度算法中,都可能出现磁臂停留在某处不动的情况,例如进程反复请求对某一个磁道的IO操作。我们把这一现象称为磁臂粘着
- N-step-SCAN算法是将磁盘请求队列分为若干个长度为N的字队列,磁盘调度将按照FCFS算法依次处理这些子队列。而每处理一个队列时优势按照SCAN算法,对每一个队列处理完成之后再处理其他队列
- 当正在处理某个子队列时,如果出现新的磁盘I/O请求,便将新的请求进程放入其他队列,这样就可以避免出现粘着现象
-
FSCAN
- FSCAN算法实质上是N步SCAN算法的简化,即FSCAN只将磁盘请求队列分成两个子队列
- 一个是由于当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按照SCAN算法仅此呢个处理。在处理某个队列期间,将新出现的所有请求磁盘I/O的进程,放入另一个等待处理的请求队列。这样,所有的新请求都将被推迟到下一次扫描时处理
相关文章:

文件系统和磁盘调度
文件系统 概述 文件系统:一种用于持久性存储的系统抽象 在存储器上:组织、控制、导航、访问和检索数据大多数计算机包含文件系统 文件:文件系统中一个单元的相关数据在操作系统中的抽象 文件系统功能 分配文件磁盘空间 管理文件块管理空…...

C++ stringOJ练习题
目录 把字符串转换成整数 反转字符串 字符串中的第一个唯一字符 字符串最后一个单词的长度 找出字符串中第一个只出现一次的字符 字符串相加 字符串最后一个单词长度 字符串相乘 反转字符串3 反转字符串2 验证回文串 把字符串转换成整数 通过遍历字符串并逐位转换…...

解决问题:ImportError: cannot import name ‘_update_worker_pids‘
在复现一些较早年份文献时,网络架构是较早的Pytorch模型,现阶段的高版本不兼容,所以就得安装比如低版本的torch0.4.0以解决问题。 目录 一、问题1.1 问题分析 二、解决办法2.1 Pytorch安装2.2 torchvision安装2.3 测试是否安装成功 三、总结…...

【面试总结】Java面试题目总结(一)
(以下仅为个人见解,如果有误,欢迎大家批评并指出错误,谢谢大家) 1.项目中的验证码功能是如何实现的? 第一步:在项目的pom.xml文件中导入 EasyCaptcha 的依赖; <dependency>…...

大白话数据中台,何为数据中台
文章目录 一、数据中台二、本质三、构建数据中台的几个方面四、总结 最近一直在研发Ai平台,忙碌非凡。 在之余,有小伙伴质疑数据中台其实就是一个web系统,无法就是添加一些业务逻辑的增删改查。 答曰: 回去好好把科普下什么是数…...

escapeshellarg参数绕过和注入的问题
escapeshellcmd escapeshellcmd(string $command): string command--要转义的命令。 escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数,或者 执行操作符 之前进行转义。 …...

CSS——标准流、浮动、Flex布局
1、标准流 标准流也叫文档流,指的是标签在页面中默认的排布规则,例如:块元素独占一行,行内元素可以一行显示多个。 2、浮动 作用:让块元素水平排列 属性名:float 属性值: left:…...

P21 类神经网络训练不起来怎么办- 自动调整学习率 Adapative learning rate
梯度大,学习率减小梯度小,学习率变大adam随时间变化 , decay / warm up 调整学习率方法一 adagrad 学习率除以 梯度的方差 方法二 RMSProp 目前最常用的: Adam: RMSProp Moment Learning rate schedule : decay/ warm up l…...

[Linformer]论文实现:Linformer: Self-Attention with Linear Complexity
文章目录 一、完整代码二、论文解读2.1 介绍2.2 Self-Attention is Low Rank2.3 模型架构2.4 结果 三、整体总结 论文:Linformer: Self-Attention with Linear Complexity 作者:Sinong Wang, Belinda Z. Li, Madian Khabsa, Han Fang, Hao Ma 时间&#…...

【Jeecg Boot 3 - 第二天】1.1、后端 docker-compose 部署 JEECGBOOT3
一、场景 二、实战 ▶ 2.1 修改配置文件 > 目的一:将 dev 变更为生产环境 prod > 目的二:方便spring项目调用docker同个network下的redis和mysql ▶ 2.2 编写dockerfile ▶ 2.3 编写docker-compose.yaml ▶ 2.4 打…...

Centos单用户模式修改root密码
在CentOS 7的单用户模式下,你可以按照以下步骤修改root用户密码: 启动CentOS 7并进入GRUB菜单。在启动时按下任意键进入GRUB菜单。 在GRUB菜单中,选择要启动的CentOS 7内核版本,并按下e键进行编辑。 找到以 ro 开头的行…...

[Unity]关于Unity接入Appsflyer并且打点支付
首先需要去官方下载Appsflyer的UnityPackage 链接在这afPackage 然后导入 导入完成 引入此段代码 using AppsFlyerSDK; using System.Collections; using System.Collections.Generic; using UnityEngine;public class AppflysManager : MonoBehaviour {public static App…...

AICore 带来了 Android 专属的 AI 能力,它要解决什么?采用什么架构思路?
前言 Google 最近发布的 Gemini 模型在全球引起了巨大反响,其在多模态领域的 Video demo 无比震撼。对于 Android 开发者而言,其中最振奋人心的消息莫过于 Gemini Nano 模型将内置到 Android 系统当中,并开放给开发者使用。 事实上…...

python学习1
大家好,这里是七七,今天开始又新开一个专栏,Python学习。这次思考了些许,准备用例子来学习,而不是只通过一大堆道理和书本来学习了。啊对,这次是从0开始学习,因此大佬不用看本文了,小…...

【SpringBoot】Spring Boot 单体应用升级 Spring Cloud 微服务
Spring Cloud 是在 Spring Boot 之上构建的一套微服务生态体系,包括服务发现、配置中心、限流降级、分布式事务、异步消息等,因此通过增加依赖、注解等简单的四步即可完成 Spring Boot 应用到 Spring Cloud 升级。 Spring Boot 应用升级为 Spring Cloud…...

el-tree搜索的使用
2023.12.11今天我学习了如何对el-tree进行搜索的功能,效果如下: 代码如下: 重点部分:给el-tree设置ref,通过监听roleName的变化过滤数据。 default-expand-all可以设置默认展开全部子节点。 check可以拿到当前节点的…...

Java使用Microsoft Entra微软 SSO 认证接入
1. Microsoft Entra Microsoft Entra ID 是基于云的标识和访问管理服务,可帮助员工访问外部资源。 示例资源包括 Microsoft 365、Azure 门户以及成千上万的其他 SaaS 应用程序。 Microsoft Entra ID 还可帮助他们访问你的企业 Intranet 上的应用等内部资源&#x…...

“华为杯”研究生数学建模竞赛2016年-【华为杯】A题:无人机在抢险救灾中的优化运用(附获奖论文及MATLAB代码实现)
目录 摘 要: 1. 问题重述 1.1. 问题背景 1.2. 需要解决的问题 1.2.1....

17--异常处理
1、异常概述 1.1 什么是异常 异常:指的是程序在执行过程中,出现的非正常情况,如果不处理最终会导致JVM的非正常停止。 异常指的并不是语法错误和逻辑错误。语法错了,编译不通过,不会产生字节码文件,根本运…...

数据结构 | c++编程实现求二叉树的叶节点的个数。(递归非递归)
目录 非递归 递归 非递归 #include<iostream> #include<stack> using namespace std; struct BTNode {int data;BTNode* left, * right;BTNode(int val) :data(val), left(NULL), right(NULL) {}}; //递归的方式求二叉树的叶子结点数 int countnode(BTNode* t) …...

python读取csv文件
在Python中,你可以使用pandas库来读取CSV文件。以下是一个基本的例子: import pandas as pd# 读取CSV文件data pd.read_csv(filename.csv)# 显示前几行数据print(data.head()) 这里,filename.csv应该被替换为你的CSV文件的实际路径和名称。…...

租一台服务器多少钱决定服务器的价格因素有哪些
租一台服务器多少钱决定服务器的价格因素有哪些 大家好我是艾西,服务器这个名词对于不从业网络行业的人们看说肯定还是比较陌生的。在21世纪这个时代发展迅速的年代服务器在现实生活中是不可缺少的一环,平时大家上网浏览自己想要查询的信息等都是需要服…...

深度学习(生成式模型)——ADM:Diffusion Models Beat GANs on Image Synthesis
文章目录 前言基础模型结构UNet结构Timestep Embedding关于为什么需要timestep embedding global attention layer 如何提升diffusion model生成图像的质量Classifier guidance实验结果 前言 在前几篇博文中,我们已经介绍了DDPM、DDIM、Classifier guidance等相关的…...

Ubuntu无法解析域名DNS指向127.0.0.53问题处理
用nslookup 域名.com返回127.0.0.53无法解析错误 error"Could not lookup srv records on xxx.com: lookup xxx.com on 127.0.0.53:53: no such host" #首次尝试编辑/etc/resolved.conf文件DNS为8.8.8.8 或1.1.1.1 发现reboot重启后又恢复到127.0.0.53的内容#再次尝…...

Intewell-Hyper I_V2.0.0_release版本正式发布
新型工业操作系统_Intewell-Hyper I_V2.0.0_release版本正式发布 软件发布版本信息 版本号:V2.0.0 版本发布类型:release正式版本 版本特点 1.建立Intewell-Hyper I基线版本 版本或修改说明 基于Intewell-Lin V2.3.0_release版本: 1.Devel…...

Mysql mybatis 语法示例
service package com.ruoyi.goods.service;import java.util.List; import com.ruoyi.goods.domain.GoodsProducts;/*** 商品Service接口* * author ruoyi* date 2023-08-27*/ public interface IGoodsProductsService {/*** 查询商品* * param ProductID 商品主键* return 商…...

第77讲:二进制方式搭建MySQL数据库5.7版本以及错误日志管理
二进制方式搭建MySQL数据库5.7版本 前面是使用的yum的方式安装的MySQL数据库,在企业生产环境中大多数都用二进制方式安装。 本次使用二进制方式搭建MySQL 5.7.36版本。 1.二进制安装MySQL5.7版本 1.1.下载MySQL5.7版本的二进制文件 [root@mysql ~]# wget https://downloads.…...

R语言,table()函数实现统计每个元素出现的频数+并将最终统计频数结果转换成dataframe数据框形式
在 R中,要统计dataframe数据框中每个元素出现的频数,可以使用table()函数。以下是一个示例: 目录 一、创建数据 二、统计第一列每个元素出现的频数 三、统计第二列每个元素出现的频数 四、将频数结果转换为数据框,并改列名 一…...

微信小程序uniapp记住密码
记住密码功能 在请求登录接口成功后,我们需要判断用户是否勾选记住密码,如果是,则将记住密码状态、账号信息存入本地。 下次登录时,获取本地的记住密码状态,如果为true则获取本地存储的账号信息,将信息回填…...

喜报!Coremail荣获2023信创“大比武”优秀生态融合奖
近期,2023信创“大比武”金融业务创新应用赛道(简称金融赛道)活动正式落下帷幕。经过赛程的层层考核,中泰证券股份有限公司(简称“中泰证券”)与Coremail联合组成的“中泰证券CACTER邮件安全保卫队”最终在…...