【计算机组成原理】三、存储系统:5.页式存储、虚拟存储

2024-08-25 11:04

本文主要是介绍【计算机组成原理】三、存储系统:5.页式存储、虚拟存储,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

9.页式存储器

文章目录

    • 9.页式存储器
      • 9.1页表
      • 9.2地址变换过程
      • 9.3快表TLB
    • 10.虚拟存储器
      • 10.1页式虚拟存储器
      • 10.2段式虚拟存储器
      • 10.3段页式虚拟存储器

详见 操作系统 3.内存管理 存储器管理 分页存储管理

因为实际连续存放一段程序是不现实的,那样会使得利用率极低。所以,比如某程序4KB,就把4KB的程序分为4个“页”每个页面的大小和“物理块”的大小相同。

页式存储系统:一个程序(进程)在逻辑上被分为若干个大小相等的“页面”,“页面”大小与“块”的大小相同。每个页面可以离散地放入不同的主存块中。


  • 逻辑地址(地址):程序员视看到的地址。

逻辑地址=逻辑页号+页内地址

(虚地址=虚页号+页内地址)

  • 物理地址(地址):实际在主存中的地址。

物理地址=主存块号+页内地址

(实地址=实页号+页内地址)


也就是程序给出逻辑地址,然后操作系统会将其转换为物理地址。这个转换的过程,是通过页表

9.1页表

CPU执行的机器指令中,使用的是“逻辑地址”,因此需要通“页表”将逻辑地址转为物理地址。

页表的作用:记录了每个逻辑页面存放在哪个主存块中。

在这里插入图片描述

9.2地址变换过程

在这里插入图片描述

  • 优化:

但是,因为程序的局部性原理,很有可以频繁访问这一个页表项,那么就可以把近期访问的页表项放入更高速的存储器,可加快地址变换的速度。

所以添加快表。

9.3快表TLB

快表是一种“相联存储器”可以按内容寻访。设计成本高,复杂。

在这里插入图片描述

10.虚拟存储器

详见 操作系统 3.内存管理 虚拟内存管理

10.1页式虚拟存储器

虚拟存储系统,是内存和辅存之间的关系,有点类似cache和主存之间的关系,同样基于局部性原理、替换算法、页式存储。

在这里插入图片描述

逻辑页号有效位脏位引用位(访问位)主存块号(或外存块号)
#0逻辑地址bool(1或0)bool引用次数
  • 有效位:这个页面是否已调入主存(物理存储器)。
  • 脏位:这个页面是否被修改过。
  • 引用位(访问位):用于“页面置换算法”,比如,可以用来统计这个页面被访问过多少次。
  • 物理页:即主存块号
  • 磁盘地址:即外存块号。这个页面的数据在磁盘中的存放位置。

10.2段式虚拟存储器

在这里插入图片描述

10.3段页式虚拟存储器

把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页。

程序对主存的调入、调出仍以页为基本传送单位。

每个程序对应一个段表,每段对应一个页表。

虚拟地址 = 段号+段内页号+页内地址。

在这里插入图片描述

这篇关于【计算机组成原理】三、存储系统:5.页式存储、虚拟存储的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1105377

相关文章

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现