磁盘管理
I/O 设备就是”输入/输出(Input / Output),I/O 设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。UNIX 系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作。
UNIX 系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作。
1. I/O 设备分类1.1. 使用特性
人机交互类外部设备
人机交互类外设: 鼠标、键盘、打印机等一一用于人机交互
数据传输速率慢
存储设备
存储设备:移动硬盘、光盘等一一用于数据存储
数据传输速率快
网络通信设备
网络通信设备:调制解调器等一一用于网络通信
数据传输速度介于上述二者之间
1.2. 传输速率分类
1.3. 按信息交换的单位分类
计算机基础-操作系统-磁盘管理
磁盘存储器具有容量大、存取速度快、支持随机存取的特点,因此被广泛应用于计算机系统中。对于操作系统来说,管理好磁盘的三大要求和目标是:
1. 磁盘初始化
进行低级格式化(物理格式化),将磁盘的各个磁道划分为扇区。一个扇区通常可分为头、数据区域(如512B大小)、尾三个部分组成。管理扇区所需要的各种数据结构一般存放在头、尾两个部分,包括扇区校验码(如奇偶校验、CRC循环冗余校验码等,校验码用于校验扇区中的数据是否发生错误)
将磁盘分区,每个分区由若干柱面组成(即分为 C盘、D盘、E盘)
进行逻辑格式化,创建文件系统。包括创建文件系统的根目录、初始化存储空间管理所用的数据结构(如位示图、空闲分区表)
2. 引导块计算机开机时需要进行一系列初始化的工作,这些初始化工作是通过执行初始化程序(自举程序)完成的。初始化程序可以放在 ROM(只读存储器)中。ROM 中的数据在出厂时就写入了,并且以后不能再修改。ROM一般在出厂时就集成到了主板之上。
以前的操作系统
计算机开机时,先读取 ROM 中程序并执行,完成初始化工作
初始化程序程序(自举程序)放在 ROM 中万一需要更新自举程 ...
计算机基础-操作系统-文件系统的层次结构
现代操作系统有多种文件系统类型(如FAT32、NTFS、 ext2、ext3、ext4等),因此文件系统的层次结构也不尽相同
用户调用接口
文件系统为用户提供与文件及目录有关的调用,如新建、打开、读写、关闭、删除文件,建立、删除目录等。此层由若干程序模块组成,每一模块对应一条系统调用,用户发出系统调用时,控制即转入相应的模块。
文件目录系统
文件目录系统的主要功能是管理文件目录,其任务有管理活跃文件目录表、管理读写状态信息表、管理用户进程的打开文件表、管理与组织在存储设备上的文件目录结构、调用下一级存取控制模块。
存取控制验证
实现文件保护主要由该级软件完成,它把用户的访问要求与FCB中指示的访问控制权限进行比较,以确认访问的合法性。
逻辑文件系统与文件信息缓冲区
逻辑文件系统与文件信息缓冲区的主要功能是根据文件的逻辑结构将用户要读写的逻辑记录转换成文件逻辑结构内的相应块号。
物理文件系统
物理文件系统的主要功能是把逻辑记录所在的相对块号转换成实际的物理地址。
分配模块
分配模块的主要功能是管理辅存空间,即负责分配辅存空闲空间和回收辅存空间。
设备管理程序模块
设 ...
Spark-源码学习-SparkSQL-架构设计-SQL 引擎-Optimizer 模块-Rule-V2ScanRelationPushDown
一、概述二、实现1234567891011121314def apply(plan: LogicalPlan): LogicalPlan = { val pushdownRules = Seq[LogicalPlan => LogicalPlan] ( createScanBuilder, pushDownSample, pushDownFilters, pushDownAggregates, pushDownLimitAndOffset, buildScanWithPushedAggregate, pruneColumns) pushdownRules.foldLeft(plan) { (newPlan, pushDownRule) => pushDownRule(newPlan) }}
2.1. createScanBuilder()$createScanBuilder()$ 方法对 DataSourceV2Relation 类型转换为 ScanBuilderHolder ...
Spark-源码学习-SparkSQL-架构设计-SQL 引擎-Optimizer 模块
一、概述经过 Analyzer 的处理,Unresolved LogicalPlan 解析为 Analyzed LogicalPlan,在实际应用中,很多低效的写法会带来执行效率的问题,需要进一步对 Analyzed LogicalPlan 进行优化处理,得到优化后的逻辑算子树。
二、实现2.1. RuleExecutorOptimizer 继承自 RuleExecutor 类,本身没有重载 RuleExecutor 中的 $execute()$ 方法,因此其执行过程仍然是调用其父类 RuleExecutor 中实现的 execute 方法。在 QueryExecution 中,Optimizer 会对传入的 Analyzed LogicalPlan 执行 $execute()$ 方法,启动优化过程。
引用本站文章
Spark-源码学习-SparkSQL-架构设计-SQL 引擎-Rule 体系
Joker
...
计算机基础-操作系统-文件共享
文件共享可以提高文件的利用率,避免存储空间的浪费,并能实现用户用自己的文件名去访问共享文件。实现文件共享通常有以下5种方法。
操作系统为用户提供文件共享功能,可以让多个用户共享地使用同一个文件
多个用户共享同一个文件,意味着系统中只有“一份〞文件数据。并且只要某个用户修改了该文件的数据,其他用户也可以看到文件数据的变化。如果是多个用户都“复制”了同一个文件,那么系统中会有“好几份”文件数据。其中一个用户修改了自己的那份文件数据,对其他用户的文件数据并没有影啊。
利用符号链实现文件共享当 User3 访问 “ccc” 时,操作系统判断文件 “ccc” 属于 Link 类型文件,于是会根据其中记录的路径层层查找目录,最终找到 User1 的目录表中的 “aaa” 表项,于是就找到了文件 1 的索引结点。
Windows 中快捷方式:
基于索引结点的共享方式索引结点是一种文件目录瘦身策路。由于检索文件时只需用到文件名,因此可以将除了文件名之外的其他信息放到索引结点中。这样目录项就只需要包含文件名、索引结点指针。
索引结点中设置一个链接计数变量 count,用于表示链接 ...
计算机基础-操作系统-文件存储空间管理
文件管理,由于系统的内存有限并且不能长期保存,故平时总是把它们以文件的形式存放在外存中,需要时再将它们调入内存。如何高效的对文件进行管理是操作系统实现的目标。
1. 存储空间的初始化与划分1.1. 存储空间的划分将物理磁盘划分为一个个文件卷(逻辑卷、逻辑盘),有的系统支持超大型文件,可支持由多个物理磁盘组成一个文件卷。
1.2. 存储空间的初始化将各个文件卷划分为目录区、文件区。目录区主要存放文件目录信息(FCB)、用于磁盘存储空间管理的信息。文件区用于存放文件数据。
2. 管理方法2.1. 空闲表法(适用于”连续分配方式”)空闲表由第一个空闲盘块号和空闲盘块数构成,适用于连续分配方式
2.1.1. 如何分配磁盘块?与内存管理中的动态分区分配很类似,为一个文件分配连续的存储空间。同样可采用首次适应、最佳适应、最坏适应等算法来决定要为文件分配哪个分区
2.1.2. 如何回收磁盘块?与内存管理中的动态分区分配很类似,当回收某个存储区是需要有四种情况:
回收区的前后都没有相邻空闲区。
回收区的前后都是空闲区。
回收区前面是空闲区。
回收区后面是空闲区。
假设此时删除 ...
计算机基础-操作系统-文件的逻辑结构
“逻辑结构”,是指在用户看来,文件内部的数据应该是如何组织起来的。而“物理结构”指的是在操作系统看来,文件的数据是如何存放在外存中的。
类似于数据结构的 “逻辑结构” 和 “物理结构”,如 “线性表” 就是一种逻辑结构,在用户角度看来,线性表就是一组有先后关系的元素序列,如: a,b,c,d,e
“线性表” 这种 “逻辑结构” 可以用不同的物理结构实现,如: 顺序表/链表。顺序表的各个元素在逻辑上相邻,在物理上也相邻,链表的各个元素在物理上可以是不相邻的。因此,顺序表可以实现“随机访问”,而“链表”无法实现随机访问。算法的具体实现与逻辑结构、物理结构都有关,文件也一样,文件操作的具体实现与文件的逻辑结构、物理结构都有关
按文件是否有结构分类,可以分为无结构文件、有结构文件两种。
1. 无结构文件文件内部的数据就是一系列二进制流或者字符流组成,又称为”流式文件”
Windows 中的 txt 文件
2. 有结构文件由一组相似的记录组成,又称 “记录式文件”。每条记录又若干个数据项组成。
如数据库表文件。
一般来说每条记录有一个数据项可作为关键字。
根据各条记录的长度( ...
计算机基础-操作系统-文件的物理结构
文件的物理结构是指文件在外存上的存储组织形式,与存储介质的存储性能有关。常用的物理结构有连续文件结构、串联文件结构、索引文件结构三种。
1. 文件块类似于内存分页,磁盘中的存储的单元也会被分为一个个的”块/磁盘块/物理块”很多操作系统中磁盘块的大小与内存块、页面的大小相同。
内存与磁盘间的数据交互(即读/写操作、磁盘IO) 都是以 “块” 为单位进行的。
在内存管理中,进程的逻辑地址空间被分为一个一个的页面,同样的,在外存管理中,为了方便对文件数据的管理文件的逻辑地址空间也被分为一个一个的文件块
于是文件的逻辑地址也可以表示为(逻辑块号,块内地址)的形式
2. 文件分配方式2.1. 连续分配连续分配方式要求每个文件在磁盘上占有一组连续的块。
用户通过逻辑地址来操作自己的文件,操作系统如何实现从逻辑地址到物理地址的映射?
(逻辑块号,块内地址)→(物理块号,块内地址)。只需转换块号,块内地址保持不变
文件目录中记录存放的起始块号和长度(总共占用几个块)
用户给出要访问的逻辑块号,操作系统找到该文件对应的目录项(FCB).
物理块号=起始块号 +逻辑块号
当然, ...
计算机基础-操作系统-文件目录
文件管理,由于系统的内存有限并且不能长期保存,故平时总是把它们以文件的形式存放在外存中,需要时再将它们调入内存。如何高效的对文件进行管理是操作系统实现的目标。
1. 文件控制块为了能对一个文件进行正确的存取,操作系统必须为文件设置用于描述和控制文件的数据结构,称之为”文件控制块(FCB)”。文件控制块是操作系统为管理文件而设置的一组具有固定格式的数据结构,存放了为管理文件所需的所有有属性信息(文件属性或元数据)
FCB 的有序集合称为”文件目录”,一个 FCB 就是一个文件目录项,FCB 中包含了文件的基本信息(文件名、物理地址,逻辑结构、物理结构等),存取控制信息(是否可读/可写、禁止访问的用户名单等),使用信息(如文件的建立时间、修改时间等),最重要,最基本的还是文件名、文件存放的物理地址。
FCB 实现了文件名和文件之间的映射。使用户(用户程序)可以实现“按名存取”
2. 目录结构2.1. 单级目录结构早期操作系统并不支持多级目录,整个系统中只建立一张目录表,每个文件占一个目录项。
单级目录实现了“按名存取”,但是不允许文件重名。
在创建一个文件时,需要先检查 ...

















































