【计算机组成原理】三、存储系统: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

相关文章

SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法

《SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法》在SQLyog中执行存储过程时出现的前置缩进问题,实际上反映了SQLyog对SQL语句解析的一个特殊行为,本文给大家介绍了详... 目录问题根源正确写法示例永久解决方案为什么命令行不受影响?最佳实践建议问题根源SQLyog的语句分

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

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文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、