snowFlakeXue

Work hard for what you desire.


  • 首页

  • 关于

  • 分类

  • 归档

  • 搜索

磁盘的管理

发表于 2019-11-27 | 更新于 2019-11-28 | 分类于 操作系统

磁盘初始化

引导块

计算机开机时需要进行一系列初始化的工作,这些初始化工作是通过执行初始化程序(自举程序)完成的

但把自举程序放在了ROM中,如果有需要去更新初始化程序的时候,因为放在ROM中不能被修改了怎么办?–可以用下图的解决方式,也就引入了引导块的概念

坏块

坏块就是无法正常使用的扇区,这属于硬件故障,操作系统是无法修复的,只能把他们标记出来,以免以后错误地引用他们

减少延迟时间的方法

发表于 2019-11-27 | 更新于 2019-11-28 | 分类于 操作系统

阅读全文 »

磁盘调度算法

发表于 2019-11-27 | 更新于 2019-11-28 | 分类于 操作系统

一次磁盘读/写操作需要的时间

其中延迟时间公式中的1/2意思是平均要1/2个磁道

延迟时间和运输时间都与转速成线性相关,但转速是硬件的固有属性,因此操作系统无法优化延迟时间和运输时间

但寻道时间是操作系统可以优化的,具体看如下算法

先来先服务算法(FCFS)

最短寻找时间优先(SSTF)

扫描算法

LOOK算法

C-SCAN算法

C-LOOK算法

磁盘的结构

发表于 2019-11-27 | 更新于 2019-11-28 | 分类于 操作系统

磁盘,磁道,扇区

如何在磁盘中读/写数据

磁头臂带动磁头,方向只有红线上的两个方向磁盘在马达下转动

阅读全文 »

文件系统的层次结构

发表于 2019-11-27 | 分类于 操作系统

文件保护

发表于 2019-11-24 | 更新于 2019-11-27 | 分类于 操作系统

口令保护

加密保护

访问控制

文件的基本操作

发表于 2019-11-23 | 分类于 操作系统

阅读全文 »

文件存储空间管理

发表于 2019-11-21 | 更新于 2019-11-23

之前的文件物理结构实际上是对磁盘非空闲块的管理,下面来看看操作系统对磁盘空闲块的管理

下面将涉及以下内容

存储空间的划分与初始化

现在我们肯定要对电脑做的一件事就是给我们的电脑分盘(C,D,E,F····盘)

空闲表法

如何分配磁盘块:与内存管理中的动态分区分配很类似,为一个文件分配连续的存储空间。同样可采用首次适应、最佳适应、最坏适应等算法来决定要为文件分配哪个区间。

如何回收磁盘块:与内存管理中的动态分区分配很类似,当回收某个存储区时需要有四种情况①回收区的前后都没有相邻空闲区;②回收区的前后都是空闲区;③回收区前面是空闲区;④回收区后面是空闲区。总之,回收时需要注意表项的合并问题。

空闲链表法

  • 空闲盘块链:以盘块为单位组成一条空闲链

操作系统会保存链头,链尾指针(上图中链头是20,链尾是0)

如何分配:当某文件申请k个盘块,则从链头开始一次摘下K个盘块分配,并修改空闲链的链头指针

如何回收:回收的盘块一次挂到链尾,并修改空闲链的链尾指针

适用于离散分配的文件结构,而且当为一个文件分配多个磁盘块时需要多次操作,需要一个个摘

  • 空闲盘区链:以盘区为单位组成一条空闲链(比如下面0一组,6,7一组,12,13,14一组···每一组就是一个区),每个空闲盘区的第一块惠济路盘区的长度,下一盘区的指针

解释一下最后那句,比方说现在要回收17,18这两块,因为前后没有相邻的空闲盘区,就把他俩作为一个空闲盘区挂在链尾

既适用于离散分配又适用于连续分配,为一个文件分配多个盘块时效率更高

位示图法

上图中字长就是16,n就是16,比方{1,10},那盘块号就是1*16+10=26

比方说盘块号是17,那字号就是17/16=1,位号,就是17%16=1

既适用于连续分配又适用于离散分配

成组链接法

因为空闲表和空闲链表可能过大,因此不适用于大型文件系统,unix系统采用了成组链接发对磁盘空闲块进行管理

文件目录区专门用一个磁盘块作为超级块,当系统启动时将超级块读入内存,并保证内存与外存中的超级块数据一致

如下图就是成组链接的一个实现,超级块要保存下一组空闲块号,比如图中100,还有下一组的空闲块号。同样的下一组也可像超级块这样保存下一组的,但是注意,最后一组比前面的是要少的,因为有上一组有1个-1来表示终止了;注意图中虽然是按顺序来的,什么300-201呀啥的,只不过是为了表明数量关系,实际上不需要时连续的

如何分配:比方说需要一个空闲块,拿去与超级块存的那个100比,发现可以,是小于100的,那就将第一分组的一个空闲块分给他,并修改超级块中数据,但是注意像,300这块不能乱动,因为会牵连到后面的组

如果需要100块,发现100=100,是足够的,可以把第一个分组的100块分给他,但是因为300号块内存储了下一组的数据,因此需要将300号内的数据复制到超级块中

怎么回收空闲块:比方说每个分组最多有100块

如果此时第一个分组没满,只有99块,那就把这个空闲块加到第一组

如果此时第一个分组已经满了,就把超级快的内容复制到新的空闲块中,并让他作为第一个分组

文件的物理结构

发表于 2019-11-18 | 更新于 2019-11-23 | 分类于 操作系统

文件块:

磁盘块:

因为要研究文件的物理结构,实际上就是研究文件的分配方式,文件要存在磁盘上,所以必然要以磁盘为载体来研究

阅读全文 »

文件目录

发表于 2019-11-18 | 更新于 2019-11-23 | 分类于 操作系统

文件控制块

FCB的有限集合称为文件目录,一个FCB就是一个文件目录项

如上图所示,2015-08啊啥的是目录文件,就是文件夹,微信不拉不拉的就是个文件,所有的这些个FCB组成文件目录,每条FCB包含了文件的基本信息(文件名,物理地址,逻辑结构,物理结构等),存取控制信息(是否可读/可写,禁止访问的用户名单等),使用信息(文件建立,修改时间)

最重要的是文件名和物理地址,因为FCB就是要实现可以让用户通过文件名与文件间的映射实现“按名存取”

目录结构

单级目录文件

早期计算机系统不支持多级目录,整个系统只有一张目录表,每个文件占一个目录项

因此在单级目录下肯定是不允许有重名文件的,不然你想要是按文件名查找,有重名的操作系统哪知道你要找的到底是哪个啊

那在创建新文件时,要先检查文件目录里有没有重名的,没有重名的才能建立文件再将对应的目录项插入到目录表里

综上所述,如果有多个用户同时使用计算机,很有可能产生同名文件,因此不适用于多用户操作系统,为了解决这个问题,提出了两级目录文件的概念

两级目录文件

早期的多用户操作系统中,采用两级目录结构,分为主文件目录和用户目录

注意这里是根据不同用户划分的,user1想访问user2的FCB就不行,但是这样的话不同用户的文件可以同名;然而这样的两级目录还是有缺点,那就是用户不能将自己的文件进行分类,为了解决这个问题就引出了多级目录的概念

多级目录文件(树形目录结构)

上面说到自拍.jpg,那操作系统是怎么找到他的呢?

操作系统是根据绝对地址一层一层找到下一级目录的,首先从外存读入根目录的目录表,找到照片目录存放位置,从外存读出相应目录表,在找到2015-08目录的存放位置,再从外存取出对应目录表,最后找到自拍.jpg的存放位置,全程需要3次读磁盘I/O操作

但很多时候,用户会连续访问同一目录下多个文件,比如连续查看2015-08的两个文件,如果都按绝对地址从根目录开始找太低效了,这个时候就可以设置一个“当前目录”

虽说多级目录结构可以很方便的对文件分类,层次结构清晰,也能有效对文件管理并保护,但不便于实现文件的共享,因此就提出了无环图目录结构

无环图目录结构

索引节点(FCB的改进)

注意索引节点不是在目录表里的,他在外存,目录项只有文件名和索引节点指针

123…12
Liu Xue

Liu Xue

119 日志
11 分类
RSS
GitHub E-Mail
© 2020 Liu Xue
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Pisces v7.1.1
本站总访问量 次 | 有人看过我的博客啦