当前课程知识点:操作系统 >  第八讲 虚拟存储概念 >  8.5 虚拟页式存储 >  8.5 虚拟页式存储

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

8.5 虚拟页式存储在线视频

8.5 虚拟页式存储

下一节:8.6 缺页异常

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

8.5 虚拟页式存储课程教案、知识点、字幕

接下来我们介绍虚拟页式存储

那么在前面呢我们已经说过了

虚拟存储它的基本概念是什么样的

它的基本思路是啥样的

那我们把它置换的

交换的这个单位设置为页之后

就变成我们这里的虚拟页式存储

那它的基本思路很简单

就是在页式存储管理的基础上

增加一个请求调页和页面置换算法

那这类的做法呢它具体做起来的时候呢

我们在怎么做呢 它思路是这样的

首先在程序加载的时候它只加载一部分页面

那这个和我们前面的

页式存储管理不一样地方

页式存储管理呢它加载的时候

是把所有的都加载到内存当中

只是它可以实现存储的不连续

你可以找到相应的页面 有空闲页面就足够了

那你这样一来的话

在执行的过程当中它就会出现缺页异常

那在原来的页式管理里头呢

它也会出现异常但不会出现

这里所说的这个缺页

因为我这个进程地址空间里头任何一个页面

都有对应的一个物理页面存在

好 这是跟原来不一样的

好 如果出现这种情况那怎么处理呢

操作系统里头要加一个缺页异常的处理

将相对应的在外存当中页面呢调到内存当中来

并且把相应的页表项进行修改

修改完毕之后以便于我可以重新执行这条指令

那这样的话这条指令就能继续下去了

那随着这个执行的过程呢 那我在内存里呢

只有一部分内存进程的地址空间内容

在内存 但是整个进程它是可以一直这样

良好的运行下去 那关键的问题

就在这个地方有个缺异常的处理服务例程

那这是我们在虚拟页式存储当中的地址转换

如果大家看这张表的话

这和我们前面页式存储的地址转换

是完全一样的 说 这是逻辑地址空间

这是物理地址空间

然后我在某一条指令访问的时候

有一个操作数是页号加页内偏移

然后页号加页内偏移呢通过这边转换之后

到页表 页表找到相应的页表项

如果说是页式存储管理

这里对应的页表项

一定会是有一个物理页号 页帧号

然后找了页帧号呢把它的页内偏移加过来

这就能找到相应的物理内存单元的内容了

好 如果说在前面加上虚拟怎么办呢

加上虚拟之后这个地方呢

你在这个地方就会在页表里加一个

多加标志位 这个标志位呢会表示

我对应的这一页是否在物理内存里头

如果不在这条路就走不下去了

好 这条路走不下去之后呢

执行到这儿呢它就会产生缺页异常

然后 这个缺页异常呢 就会由操作系统来接管

操作系统要做的事情呢是找页把它写好

然后把这个位变成有效

OK 这一件事情就算过去了

这是在虚拟页式存储管理当中的地址转换

我们看到变化呢 从整张图上看变化很小

但实际上这些小点的变化呢会导致很多的修改

好 那这时候一种修改呢是在页表项里头

原来的我们页表项是从以逻辑页号为序号

找到的呢就是物理页帧号

有了这个物理页帧号之后

我就能转换出相应的物理地址来了

但是在虚拟页式之后

虚拟呢我们就会加上一些标志位

这是在虚拟存储管理里头

需要用到的几个标志位

分别的含义是什么呢

首先第一个有一个叫驻留位

它是表示该页面是否在内存当中

那如果说是一 表示在内存当中这时候呢

对应过来一定可以找到它的页帧号

那可以转换成实实在在的物理内存单元的地址

好 如果它是零 表示这一页呢在外存里头

那这时候就会导致缺页

那导致缺页之后呢

就会来修改这些标志位

好 这是第一个标志

第二个标志是修改位

表示这一页在物理内存当中有的这一页

这必须是驻留位有效的情况下

好这一页如果被修改过

那这时候呢它会有什么变化呢

如果说我想把这一页淘汰放到外存里头去

那么这时候我必须把内存当中修改的内容

写回到外存当中

如果说这个地方没有修改过

那这时候呢对应在外存单元里头有相应的内容

那这时候我在替换的时候

置换的时候我只需要把这一页作废就行了

这是修改位 然后还有一个呢是访问位

表示这一页在过去一段时间里头

是否被访问过

因为我们在虚拟页式存储管理里头

它需要有一个置换算法把不常用的页面

置换到外存当中去

那么哪些常用哪些不常用呢

就是靠这个访问位来进行统计

访问位访问过它是一 没访问过它是零

那这样的话它就在一定程度上

近似统计出来这一页是否被经常访问

一表示经常访问 零表示不经常访问

还有一个呢保护位

这个保护位是用来表示这一页允许访问的方式

你比如说 只读 可读 可写 可执行等等

这样一些信息 好 那有了前面地址转换

和页表上的修改这件事情从道理上来说

我的虚拟页式存储管理就算说清楚了

那么下面我们先通过一个例子

来说明一下这个过程

假定我有一个16位的逻辑地址

然后这个时候呢它的逻辑地址空间呢是64K

然后物理内存我只有32K

页面大小是4K 好 这时候我划分出来的情况呢

这是逻辑地址空间 这是物理地址空间

好 那么这时候说我在这里做映射怎么做呢

我哪些映射到物理内存里头来的

我在这里有相应的编号 没有映射过来的

我的简化表是这里写的是X

好 然后这样以来的话

它们就建立一张表 对应过来这里写的是几7

对应到物理单元的帧号是7

好 那这样的话我这里的8个物理页面

和16个逻辑页面之间

有一半有对应关系 这是在页表项里有的

好 那么这时候呢这里的X

隐含着你的页表项里头的驻留位是零

然后这个7呢隐含着你的驻留位是1

那这个对应过来是驻留位的表示

好 那么在这种情况下我们看我执行一条指令

MOV把指定存储单元内容移到寄存器里头去

好 那这时候说我在这边看对应的这一页

在这个地方对应过来到这个地方 好 它是有的

那这一条它是正常能访问过来

好 我们再来一条指令

我这个MOV 32到这个地方就是x

不存在 好 这时候会产生什么情况

这地方就是缺页

缺页之后我就需要把现在在内存里某一页去掉

然后把它对应内容写到内存里头

并且改这一项

OK我后面事情就可以做了

以我们现在最常用的X86 32的

CPU的页表结构来作为实例

那么在32位的X86系统当中呢

它有12位的页内偏移

然后有2个10位的二级页表项

这样的话是32位地址

然后物理地址呢也是32位的

那20位呢是物理页帧号

好 然后这时候呢 它使用一个二级页表

那这是它页表结构

然后页表项的起始地址呢是CR3

CPU里一个寄存器指出来

然后从这儿呢

我一个页表项占4字节 那一页由于是32位的

好 那占4个字节呢 那么这4K为一页

那这时候呢这12位是4K 4K为一页

一页里头有1024项 1024个页表项

那么正好对应着我这里的10位

好 那这是第一级 然后第二级 这是它的页表

那我们的地址转换怎么过来呢

先是一级页表项里头的页号到这儿

作为它的偏移找到相应的页表项

一级页表项 好 这个页表项里头它有一个

第二级页表项的物理页号

好 然后这个时候呢

再加上你第二级的页号 好 那从这儿呢

第二级页表项里头呢

以它页号作为偏移找到相应的页表项

那这时候就是你实实在在要访问的

物理页面的物理帧号

好 那这个帧号呢 和你的偏移搁在一起

把页内偏移加在一起这得到你的物理地址

那么这是在这个结构当中它的页表的结构

这和我们前面讲到的页式存储呢

是完全一样的 那它变化地方在哪呢

变化地方是页表项里头的东西

那这地方是X86 32在以4K为页面大小的时候

它的页表项的定义格式 那我们在这里关心的

这是20位的物理页帧号

这个没有什么变化

我们需要关心后面这一段的标志

那我们刚才在逻辑示意当中呢

已经看到有几个标志

在这儿呢实际上看到的标志更多

那需要这几个是能对上的驻留位 可写位

这是相当于权限 好 在这里头

我们可能在前面没注意到就是用户态标志U

实际上这表示我这个页表项

是否可以在用户态访问

那在内核地址空间呢

只能有内核的状态的时候才能访问

那这是一个权限的控制

好 然后访问位 修改位

然后跟我们前面不一样的地方有几个

一个是保留位 那在这里头呢这标志位没用完

它总会留有一些保留

原因在于我们如果在32位的X86系统当中

这个页表项是好用的

但实际上呢我们在实际的系统当中

它的物理地址空间呢 它是在不断变化的

好 你比如说我32位的系统

它最大的物理内存地址空间呢是4个G

实际上我们现在用到的一些32位的系统

它已经不是这个4个G了

大于4个G怎么办 好 那这个时候

相应的页表项就得跟着这个在变

那这些呢都是为了后续的这些改动

留有空间的 如果说你去看

实际的因特尔的手册

那么这里页表项结构呢有很多种

那么它们很多是兼容的

但是这些变化都从这儿出来的

然后还有两个是这个地方

就是缓存是否有效 是否写通

实际上这里说的呢是在内存和CPU之间

有一个高速缓存

这个缓存呢我在读写数据的时候

会把写出的数据先写到缓存里头

然后高速缓存再慢慢地把它写到内存里头

那如果说我要有一些时效性的操作

比如说对I/O端口的操作

那这种缓存是会影响我的语意的

好 那这儿是有这个标志来做控制

然后再有一些呢我在读的时候

是否高速缓存有效

如果说你前面读了一次 那这时候呢

我后面再读的时候我可以直接

从高速缓存里得到这个数据

但实际上呢如果说这个数据它是时时在变的

好 你第一次I/O端口里读到的数据

第二次再读的时候你必须要从I/O端口里

实实在在去读 那么这时候呢

这些标志位都会影响到它的行为

所以从这儿来看呢

我们看到这个基本的原理里的虚拟页式存储

和我们实际系统当中的还是会有一些差别

这些差别转换到我们实际的

实验系统代码里头代码里头

这些差别就会导致我们代码会有很大的变化

操作系统课程列表:

第零讲 在线教学环境准备

-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

8.5 虚拟页式存储笔记与讨论

也许你还感兴趣的课程:

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