当前课程知识点:操作系统 >  第二十一讲 文件系统 >  21.3 目录、文件别名和文件系统种类 >  21.3 目录、文件别名和文件系统种类

返回《操作系统》慕课在线视频课程列表

21.3 目录、文件别名和文件系统种类在线视频

21.3 目录、文件别名和文件系统种类

下一节:21.4 虚拟文件系统

返回《操作系统》慕课在线视频列表

21.3 目录、文件别名和文件系统种类课程教案、知识点、字幕

下面我们来讨论目录 文件别名

和具体的文件系统

文件多到一定数目之后

我们要想对它进行有效的管理

这时候我们就必须引入分层的结构

也就说把若干个文件

以目录的形式组织起来

比如说在这里头

给出的是文件系统里的

一种组织方式

圆圈表示我们基本的 普通的文件

在这里这些方块的 就是目录

它是一种特殊的文件

这个特殊的文件里存的内容呢

是用来表示其它文件的信息

所以它是特殊的

文件内容是文件的索引表

一条索引呢 就是文件名

和指向文件的指针

有了这个之后

我们就可以把所有的文件

组织成一个树状结构

这时候我们如何来标识

一个特定的文件呢

每一个文件呢 在我们这里呢

对应过来是一条

从根目录开始的一条路径

第一级 根目录

然后找着它的下一级目录的名字

这是我们第一级根目录里的目录项

到第二级目录的时候呢

它又有它的目录项

根据你这个文件的路径

一直找到最后文件的内容

有这种方式之后

我们就可以以路径的形式

来标识每一个文件

这样的话方便用户的访问

这里所谓的方便呢 是指

我方便用户的记忆和分类

我们再换一个 这个地方呢

实际上是从program/p/list

最后找着我的这个文件 名字叫list

用这种方式组织之后

我们在目录上的操作

就跟其它的文件有一些不一样的地方

在目录里典型的操作呢

是说我会有去检索

我找我需要那个文件

然后我创建一个新的文件的时候

因为我在文件系统里

存了一个新的文件

那么这时候我必须增加相应的目录项

这也会在目录里头呢 有相应的操作

然后我删除一个文件

也会需要你在相应的目录里呢

把对应的目录项删掉

然后我会去列目录

看看这个目录里

到底有哪些文件和子目录

我会对文件重命名

你改文件的名字

那这时候目录项里的

相应的文件属性 文件名

你也需要去进行相应的修改

再有一个是遍历路径

也就相当于我想找某一个文件

是从根目录一级一级找下去

最后找那个文件

这是在目录上的典型操作

这些操作呢 对于操作系统来说

它都是封装到内核里头的

只能由内核来对目录进行修改

这样的话 就可以保证

这种目录的映射的完整性

用户进行这个操作的时候他需要改

这个改动怎么来做呢

通过系统调用

用户来通过系统调用

来对目录进行相应的操作

这是目录

目录的实现呢 是描述我目录里的

这些文件的列表

我怎么来组织

最简单一种做法呢

是把它组织成一个线性的表

这时候的问题是说如果这个表很大

那这时候检索 或者说增删

它的时间会很长

但是它的好处是我编程比较简单

然后另一种做法呢

我是把目录里这些文件呢

组织成一个哈希表

先做哈希 然后再进行后续的操作

这种做法呢 由于哈希的缘故

它可以减少搜索的时间

也会有另外一个问题 就是两个文件名

它做哈希之后

可能哈希结果是一致的

这时候会产生冲突

那么冲突呢 我需要在哈希表里

有相应的解决

这样做之后呢

我目录表里的每一项呢

它的长度是固定的

接下来我们说文件别名

也就说我有一个文件

我想给它起两个或者多个名字的时候

我怎么办

首先我们在这儿看这个例子

在这里头呢我有一个文件

这有它的路径 count

这两个最后指到是同一个实体

我们这种做法的缘故呢

是为了方便共享 减少存储空间

文件系统中我怎么来表示它

在这里头呢 这是另外一个例子

这三个说的 实际上最后都是同一个

它的实现办法呢 我们这有两种

一种叫硬链接

也就说 多个文件的目录项

最后都指向同一个文件

比如说在这里头

我们知道这一个和这一个

另一种做法叫软链接

它的做法呢 是以快捷方式

来指向其它文件

它的文件描述出来

仍然是各自独立的

只是说链接文件里头呢

它存的是另一个文件的 完整的路径

它以这种方式来实现文件别名

第一种方式呢 就会涉及到一个问题

如果说我一个删除操作

我到什么时候

实实在在把这个文件删除掉

它就会是 我只要删到最后一个

指向它的文件名的时候

我才会把这个文件实体删掉

而软链接呢 我删除的时候呢

删除别名和删除其它的文件是一样的

删除别名 实际上文件不受任何影响

删除文件之后呢 你原来的别名

它指向的文件就是不存在了

这是文件别名

还有一个问题呢

是文件目录中的循环

我可以指向下一级子目录

那我的子目录可不可以

指回到它的父目录呢

这时候 如果你这样指的话

就会构成循环

比如说在这里头 你要找某一个文件

它的子目录的子目录

我把它指向一个循环之后

这条路径就可以无限制的循环下去了

这种情况怎么处理呢

我们处理办法呢有这样几种

一种是 我加链接的时候

我只能是文件 不允许目录的链接

这是一种做法

还有一种做法呢是说

我在这里头增加链接的时候

我用检测算法来检测

这跟我们死锁检测差不太多

我可以用银行家算法

但这时候呢你的检测开销会比较大

所以在实际的做法里头呢

通常情况下 我是限制

你可以检索下去的长度

超过这个长度

我就不再给你往下检索了

这样的话也就减少了

这种由于循环所带来的问题

有了这个之后

那我们来看 接下来是

我如何找一个文件

这就是我们这里的名字解析

在很多地方呢有名字解析的问题

这里说名字解析是把一个逻辑的名字

转换成它的物理资源

比如说我们这里的文件

对于文件系统里的名字解析呢

就是我给你一个路径

然后你告诉我

这个路径所对应的文件存在哪

把它的内容读出来

它的实际做法呢就是遍历文件目录

从根目录开始

一直找到你要找那个文件为止

这是文件名的解析

在这儿给一个例子

说我这儿有一个路径

最后文件名是ls

我怎么来找呢

首先我找这个文件分区的根目录

根目录里头的位置

在文件系统当中是固定的

从这儿呢我读出根目录的数据块

里头每一个子目录

和它的根目录里的文件对应着一项

我在这里呢

找着我要找bin这一项

这一项会指向下一级目录的数据块

我再去找着下一个 bin

这个目录所对应的文件头

那在这里呢读取它的数据块

也就相当于这里头就是

bin这个目录里

所有文件和子目录的列表

在那里去找 是不是ls这一项

找到这一项之后

我再来看

就可以读取到

我这个ls这个文件的内容了

那为了方便这种查找呢

我们就提出一种概念

叫做当前工作目录

它指每一个进程

给它设定一个缺省的目录

它的名字解析

就从这个目录开始往下解析

这样做的好处是在于

如果说我这个进程

经常就在这一个目录里进行操作的话

它就没有必要每次都从根目录往下找

只有在你要找切换了

你的当前工作目录之后

你才会从根目录里找一遍

这样的话就会提高效率

这时候路径就有一种相对路径

也就说基于当前目录所进行的查找

这是当前工作目录 和相对路径

文件系统呢

在我们计算机系统起来之后

它有个根文件系统

通常我们访问这些数据呢

所在文件系统必须挂接到系统当中

才能够被访问

比如说我们在这里

这是一个未挂接的文件系统

系统起来的时候呢

它有一个根文件系统

未被挂接文件系统呢

需要挂接到这个根文件系统当中

才能进行访问

所谓挂接是指什么意思呢

就是我把这个文件系统

它根目录对应到

根文件系统里某一个目录

比如说我在这里user

这个地方就是它的挂接点

挂接上去之后

我再去找这个文件系统里的某一个文件

它的路径什么

从整个系统的根开始 沿着这找

找到你挂接点之下

找到你这个文件系统的根

从这个地方再往下找

就可以找到 当前这个

已挂接文件系统当中的

任何一个文件了

接下来我们说文件系统的种类

我们最常用一种文件系统

叫磁盘文件系统

它是用磁盘作为存储介质

在上面来存数据的

这上头我们定义了各种各样的文件系统

这时候会问

为啥我会定义这么多种文件系统

我有一种是不是就够用了

不是这样的

不同的文件系统由于存的数据不同

它会做不同优化

它使用场景的不同

它也会做各自不同的优化

比如说像我们的光盘

它的文件系统呢

它是一次性写入 多次读出

而正常磁盘文件系统呢

它是多次读入写出的 会有修改

这样的话 它的优化角度是会不一样的

不同的文件系统它的安全要求不同

安全要求级别越高

它的访问效率也会相对下降

对于我要求安全级别不高的文件系统

我可能就把安全机制减弱 甚至于取消

这样我们就构成了很多种不同文件系统

这是一类

再有一类是数据库文件系统

它可以基于文件特征

来被寻址或者是被检索

一个例子呢就是winFS

再有一个呢是日志文件系统

也就说我们对文件系统的修改

这些我必须以原子的形式来进行

因为我的数据很关键

比如说我银行里的这些记录的修改

这时候我们构成日志文件系统

它是指文件系统上 所有修改

它都会做相应的记录

以避免我这个操作执行到半截

所导致文件系统损坏

由此导致数据丢失

网络分布式文件系统

这时候实际上相当于

我们看到的是把文件存到远端的机器上

这时候呢不同的网络访问方式

构成了我们这里不同的文件系统

再有一个呢是特殊文件系统

比如说像我们前面讲到的

进程间通讯当中用到的管道

就是一类特殊的文件系统

对于分布式文件系统

我们还想多说两句

也就说我们在这里为了进行共享

前面的文件共享呢

是在一个系统里多个进程之间

分布式文件系统呢

它是想通过网络来进行文件共享

文件被存到远端的服务器上

对于这种情况

我们用户在访问远端文件系统的时候呢

要通过挂接远端服务器上的文件

这时候就会导致其中有网络通讯

我们正常的标准的文件操作

就会转换成网络上远程访问

在这种情况下 我们在这里呢

存在多种分布式文件系统的共享协议

NFS CIFS

这是Unix和windows常用的

两种网络文件系统

对于分布式文件系统

我们会面临比原来更大一些麻烦

你比如说对于安全

在本地呢我只需要标识这个用户是谁

我能标识清楚

这个安全的管理就可以实施了

而在网络环境上你想识别一个用户

这时候它会变得更复杂

所以在这种情况下

我们用到的NFS

实际上它是存在某些安全隐患的

再有一个问题呢 是一致性问题

加了网络之后 我读写的时候

这个一致性就更难把握了

出了错误之后

我的错误处理呢也会比原来更复杂

这都是广域网上的 或者网络上的

分布式文件系统所面临的挑战

到这儿呢 我们就对

文件系统的基本概念呢

有了一个大致的介绍

操作系统课程列表:

第零讲 在线教学环境准备

-0.1 Piazza讨论区

--piazza访问和使用

--html

-0.2 在线实验平台

--实验平台使用帮助

--平台使用帮助

--Gitlab使用帮助

--IBM内部账号初始化

-0.2在线实验平台

--Raw HTML

第一讲 操作系统概述

-1.1 课程概述

--视频

-第一讲 操作系统概述--练习

-1.2 教学安排

--视频

-1.3 什么是操作系统

--Video

-1.4 为什么学习操作系统,如何学习操作系统

--Video

-1.5 操作系统实例

--视频

-1.6 操作系统的演变

--视频

-1.7 操作系统结构

--视频

第二讲 实验零 操作系统实验环境准备

-2.1 前言和国内外现状

--2.1 前言和国内外现状

-2.2 OS实验目标

--2.2 OS实验目标

-2.3 8个OS实验概述

--2.3 8个OS实验概述

-2.4 实验环境搭建

--2.4 实验环境搭建

-2.5 x86-32硬件介绍

--2.5 x86-32硬件介绍

-2.6 ucore部分编程技巧

--2.6 ucore部分编程技巧

-2.7 演示实验操作过程

--2.7 演示实验操作过程

--Q6

--Q7

--Q10

第三讲 启动、中断、异常和系统调用

-3.1 BIOS

--3.1 BIOS

-3.2 系统启动流程

--3.2 系统启动流程

-3.3 中断、异常和系统调用比较

--3.3 中断、异常和系统调用比较

-第三讲 启动、中断、异常和系统调用--3.3 中断、异常和系统调用比较

-3.4 系统调用

--3.4 系统调用

-第三讲 启动、中断、异常和系统调用--3.4 系统调用

-3.5 系统调用示例

--3.5 系统调用示例

-3.6 ucore+系统调用代码

--3.6 ucore+系统调用代码

第四讲 实验一 bootloader启动ucore os

-4.1 启动顺序

--4.1 启动顺序

-4.2 C函数调用的实现

--4.2 C函数调用的实现

-4.3 GCC内联汇编

--4.3 GCC内联汇编

-4.4 x86中断处理过程

--4.4 x86中断处理过程

-4.5 练习一

--4.5 练习一

-4.6 练习二

--4.6 练习二

-4.7 练习三

--4.7 练习三

-4.8 练习四 练习五

--4.8 练习四练习五

-4.9 练习六

--4.9 练习六

第五讲 物理内存管理: 连续内存分配

-5.1 计算机体系结构和内存层次

--5.1 计算机体系结构和内存层次

-5.2 地址空间和地址生成

--5.2 地址空间和地址生成

-5.3 连续内存分配

--5.3 连续内存分配

-5.4 碎片整理

--5.4 碎片整理

-5.5 伙伴系统

--5.5 伙伴系统

-第五讲 物理内存管理: 连续内存分配--5.6 练习

第六讲 物理内存管理: 非连续内存分配

-6.1 非连续内存分配的需求背景

--6.1 非连续内存分配的需求背景

-6.2 段式存储管理

-- 6.2 段式存储管理

-6.3 页式存储管理

--6.3 页式存储管理

-6.4 页表概述

--6.4 页表概述

-6.5 快表和多级页表

--6.5 快表和多级页表

-6.6 反置页表

--6.6 反置页表

-6.7 段页式存储管理

--6.7 段页式存储管理

-第六讲 物理内存管理: 非连续内存分配--6.8 练习

第七讲 实验二 物理内存管理

-7.1 了解x86保护模式中的特权级

--7.1 了解x86保护模式中的特权级

-第七讲 实验二 物理内存管理--7.1 了解x86保护模式中的特权级

-7.2 了解特权级切换过程

--7.2 了解特权级切换过程

-第七讲 实验二 物理内存管理--7.2 了解特权级切换过程

-7.3 了解段/页表

--7.3 了解段/页表

-第七讲 实验二 物理内存管理--7.3 了解段/页表

-7.4 了解UCORE建立段/页表

--7.4 了解ucore建立段/页表

-第七讲 实验二 物理内存管理--7.4 了解UCORE建立段/页表

-7.5 演示lab2实验环节

--7.5 演示lab2实验环节

第八讲 虚拟存储概念

-8.1 虚拟存储的需求背景

--8.1 虚拟存储的需求背景

-8.2 覆盖和交换

--8.2 覆盖和交换

-8.3 局部性原理

--8.3 局部性原理

-8.4 虚拟存储概念

--8.4 虚拟存储概念

-8.5 虚拟页式存储

--8.5 虚拟页式存储

-8.6 缺页异常

--8.6 缺页异常

第九讲 页面置换算法

-9.1 页面置换算法的概念

--9.1 页面置换算法的概念

-9.2 最优算法、先进先出算法和最近最久未使用算法

--9.2 最优算法、先进先出算法和最近最久未使用算法

-第九讲 页面置换算法--9.2 最优算法、先进先出算法和最近最久未使用算法

-9.3 时钟置换算法和最不常用算法

--9.3 时钟置换算法和最不常用算法

-第九讲 页面置换算法--9.3 时钟置换算法和最不常用算法

-9.4 Belady现象和局部置换算法比较

--9.4 Belady现象和局部置换算法比较

-第九讲 页面置换算法--9.4 Belady现象和局部置换算法比较

-9.5 工作集置换算法

--9.5 工作集置换算法

-第九讲 页面置换算法--9.5 工作集置换算法

-9.6 缺页率置换算法

--9.6 缺页率置换算法

-第九讲 页面置换算法--9.6 缺页率置换算法

-9.7 抖动和负载控制

--9.7 抖动和负载控制

第十讲 实验三 虚拟内存管理

-10.1 实验目标:虚存管理

--10.1 实验目标:虚存管理

-第十讲 实验三 虚拟内存管理--10.1 实验目标:虚存管理

-10.2 回顾历史和了解当下

-- 10.2 回顾历史和了解当下

-第十讲 实验三 虚拟内存管理--10.2 回顾历史和了解当下

-10.3 处理流程、关键数据结构和功能

--10.3 处理流程、关键数据结构和功能

-第十讲 实验三 虚拟内存管理--10.3 处理流程、关键数据结构和功能

-10.4 页访问异常

--10.4 页访问异常

-第十讲 实验三 虚拟内存管理--10.4 页访问异常

-10.5 页换入换出机制

--10.5 页换入换出机制

-第十讲 实验三 虚拟内存管理--10.5 页换入换出机制

第十一讲 进程和线程

-11.1 进程的概念

--11.1 进程的概念

-第十一讲 进程和线程--11.1 进程的概念

-11.2 进程控制块

--11.2 进程控制块

-第十一讲 进程和线程--11.2 进程控制块

-11.3 进程状态

--11.3 进程状态

-第十一讲 进程和线程--11.3 进程状态

-11.4 三状态进程模型

--11.4 三状态进程模型

-11.5 挂起进程模型

--11.5 挂起进程模型

-第十一讲 进程和线程--11.5 挂起进程模型

-11.6 线程的概念

--11.6 线程的概念

-第十一讲 进程和线程--11.6 线程的概念

-11.7 用户线程

--11.7 用户线程

-第十一讲 进程和线程--11.7 用户线程

-11.8 内核线程

--11.8 内核线程

-第十一讲 进程和线程--11.8 内核线程

第十二讲 进程控制

-12.1 进程切换

--12.1 进程切换

-第十二讲 进程控制--12.1 进程切换

-12.2 进程创建

--12.2 进程创建

-第十二讲 进程控制--12.2 进程创建

-12.3 进程加载

--12.3 进程加载

-第十二讲 进程控制--12.3 进程加载

-12.4 进程等待与退出

--12.4 进程等待与退出

-第十二讲 进程控制--12.4 进程等待与退出

第十三讲 实验四 内核线程管理

-13.1 总体介绍

--13.1 总体介绍

-13.2 关键数据结构

--13.2 关键数据结构

-13.3 执行流程

--13.3 执行流程

-13.4 实际操作

--13.4 实际操作

第十四讲 实验五 用户进程管理

-14.1 总体介绍

--14.1 总体介绍

-14.2 进程的内存布局

--14.2 进程的内存布局

-14.3 执行ELF格式的二进制代码-do_execve的实现

--14.3 执行ELF格式的二进制代码-do_execve的实现

-14.4 执行ELF格式的二进制代码-load_icode的实现

--14.4 执行ELF格式的二进制代码-load_icode的实现

-14.5 进程复制

--14.5 进程复制

-14.6 内存管理的copy-on-write机制

--14.6 内存管理的copy-on-write机制

第十五讲 处理机调度

-15.1 处理机调度概念

--15.1 处理机调度概念

-第十五讲 处理机调度--15.1 处理机调度概念

-15.2 调度准则

--15.2 调度准则

-15.3 先来先服务、短进程优先和最高响应比优先调度算法

--15.3 先来先服务、短进程优先和最高响应比优先调度算法

-第十五讲 处理机调度--15.3 先来先服务、短进程优先和最高响应比优先调度算法

-15.4 时间片轮转、多级反馈队列、公平共享调度算法和ucore调度框架

--15.4 时间片轮转、多级反馈队列、公平共享调度算法和ucore调度框架

-第十五讲 处理机调度--15.4 时间片轮转、多级反馈队列、公平共享调度算法和uc

-15.5 实时调度和多处理器调度

--15.5 实时调度和多处理器调度

-第十五讲 处理机调度--15.5 实时调度和多处理器调度

-15.6 优先级反置

--15.6 优先级反置

-第十五讲 处理机调度--15.6 优先级反置

第十六讲 实验六 调度器

-16.1 总体介绍和调度过程

--16.1 总体介绍和调度过程

-16.2 调度算法支撑框架

--16.2 调度算法支撑框架

-16.3 时间片轮转调度算法

--16.3 时间片轮转调度算法

-16.4 Stride调度算法

--16.4 Stride调度算法

第十七讲 同步互斥

-17.1 背景

--17.1 背景

-17.2 现实生活中的同步问题

--17.2 现实生活中的同步问题

-第十七讲 同步互斥--17.2 现实生活中的同步问题

-17.3 临界区和禁用硬件中断同步方法

--17.3 临界区和禁用硬件中断同步方法

-第十七讲 同步互斥--17.3 临界区和禁用硬件中断同步方法

-17.4 基于软件的同步方法

--17.4 基于软件的同步方法

-第十七讲 同步互斥--17.4 基于软件的同步方法

-17.5 高级抽象的同步方法

--17.5 高级抽象的同步方法

-第十七讲 同步互斥--17.5 高级抽象的同步方法

第十八讲 信号量与管程

-18.1 信号量

--18.1 信号量

-第十八讲 信号量与管程--18.1 信号量

-18.2 信号量使用

--18.2 信号量使用

-第十八讲 信号量与管程--18.2 信号量使用

-18.3 管程

--18.3 管程

-第十八讲 信号量与管程--18.3 管程

-18.4 哲学家就餐问题

--18.4 哲学家就餐问题

-18.5 读者-写者问题

--18.5 读者-写者问题

第十九讲 实验七 同步互斥

-19.1 总体介绍

--19.1 总体介绍

-19.2 底层支撑

--19.2 底层支撑

-第十九讲 实验七 同步互斥--19.2 底层支撑

-19.3 信号量设计实现

--19.3 信号量设计实现

-第十九讲 实验七 同步互斥--19.3 信号量设计实现

-19.4 管程和条件变量设计实现

--19.4 管程和条件变量设计实现

-第十九讲 实验七 同步互斥--19.4 管程和条件变量设计实现

-19.5 哲学家就餐问题

--19.5 哲学家就餐问题

第二十讲 死锁和进程通信

-20.1 死锁概念

--20.1 死锁概念

-第二十讲 死锁和进程通信--20.1 死锁概念

-20.2 死锁处理方法

--20.2 死锁处理方法

-第二十讲 死锁和进程通信--20.2 死锁处理方法

-20.3 银行家算法

--20.3 银行家算法

-第二十讲 死锁和进程通信--20.3 银行家算法

-20.4 死锁检测

--20.4 死锁检测

-第二十讲 死锁和进程通信--20.4 死锁检测

-20.5 进程通信概念

--20.5 进程通信概念

-第二十讲 死锁和进程通信--20.5 进程通信概念

-20.6 信号和管道

--20.6 信号和管道

-第二十讲 死锁和进程通信--20.6 信号和管道

-20.7 消息队列和共享内存

--20.7 消息队列和共享内存

-第二十讲 死锁和进程通信--20.7 消息队列和共享内存

第二十一讲 文件系统

-21.1 文件系统和文件

--21.1 文件系统和文件

-第二十一讲 文件系统--21.1 文件系统和文件

-21.2 文件描述符

--21.2 文件描述符

-第二十一讲 文件系统--21.2 文件描述符

-21.3 目录、文件别名和文件系统种类

--21.3 目录、文件别名和文件系统种类

-第二十一讲 文件系统--21.3 目录、文件别名和文件系统种类

-21.4 虚拟文件系统

--21.4 虚拟文件系统

-第二十一讲 文件系统--21.4 虚拟文件系统

-21.5 文件缓存和打开文件

--21.5 文件缓存和打开文件

-第二十一讲 文件系统--21.5 文件缓存和打开文件

-21.6 文件分配

--21.6 文件分配

-第二十一讲 文件系统--21.6 文件分配

-21.7 空闲空间管理和冗余磁盘阵列RAID

--21.7 空闲空间管理和冗余磁盘阵列RAID

-第二十一讲 文件系统--21.7 空闲空间管理和冗余磁盘阵列RAID

第二十二讲 实验八 文件系统

-22.1 总体介绍

--22.1 总体介绍

-第二十二讲 实验八 文件系统--22.1 总体介绍

-22.2 ucore 文件系统架构

--22.2 ucore 文件系统架构

-第二十二讲 实验八 文件系统--22.2 ucore 文件系统架构

-22.3 Simple File System分析

--22.3 Simple File System分析

-第二十二讲 实验八 文件系统--22.3 Simple File System分析

-22.4 Virtual File System分析

--22.4 Virtual File System分析

-第二十二讲 实验八 文件系统--22.4 Virtual File System分

-22.5 I/O设备接口分析

--22.5 I/O设备接口分析

-第二十二讲 实验八 文件系统--22.5 I/O设备接口分析

-22.6 执行流程分析

--22.6 执行流程分析

第二十三讲 I/O子系统

-23.1 I/O特点

--视频

-第二十三讲 I/O子系统--23.1 I/O特点

-23.2 I/O结构

--816C80A0F5E3B8809C33DC5901307461

-第二十三讲 I/O子系统--23.2 I/O结构

-23.3 I/O数据传输

--C58221E14388B9DB9C33DC5901307461

-第二十三讲 I/O子系统--23.3 I/O数据传输

-23.4 磁盘调度

--567A3F1FCBFB3F4C9C33DC5901307461

-第二十三讲 I/O子系统--23.4 磁盘调度

-23.5 磁盘缓存

--C327536B80D25CE79C33DC5901307461

-第二十三讲 I/O子系统--23.5 磁盘缓存

html

-html

--html

21.3 目录、文件别名和文件系统种类笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。