计算机内存和磁盘的关系

article/2025/9/17 4:38:21

计算机内存和磁盘的关系

前言

上篇文章详细讲了计算机内存的物理结构,逻辑结构以及在内存的基础上理解几种常见的数据结构。但是,计算机系统出了内存之外,还有一个非常重要的硬件,那就是磁盘。他们都是用于计算机存储,但是内存是利用电流来实现存储,而磁盘是利用磁效应来实现存储,并且,从存储容量来看, 内存是高速高价,而磁盘则是低速廉价。在计算机这个系统中,高速小容量的内存低速高容量的磁盘进行协同作业。本文详解内存与磁盘之间的那些事儿。

一、首先要明确一个前提

我们知道计算机是利用CPU进行数据的运算的,但CPU只能对内存中的数据进行运算,而对于磁盘中的数据是不能运算的。如果要运算磁盘中的数据,必须先把磁盘中的数据读入内存,CPU才能进行运算。
在这里插入图片描述

二、如何提高磁盘数据的访问速度?

磁盘缓存可以用来提高磁盘访问速度。什么是磁盘缓存呢?其实很简单,既然CPU只能运算内存中的数据,磁盘中的数据必须读入内存才能处理,那么提高磁盘访问速度的最直接的方法,就是把磁盘中的数据事先读入内存中去,存储磁盘数据的内存空间称为磁盘缓存,当接下来需要读取同一数据时,就不用通过实际的磁盘,而是从磁盘缓存中把内容读出。
在这里插入图片描述

三、内存因高价,一般容量很小,那么如何通过低价大容量的磁盘来扩大内存的容量呢?

  • 虚拟内存是指把磁盘的一部分作为假想的内存来使用。这与磁盘缓存是假想的磁盘(实际上是内存)相对,虚拟内存是假想的内存(实际上是磁盘)。
  • 那么,如何把磁盘当做内存来使用呢?CPU只能对内存中的数据进行处理,这点是不变的,如果想要把磁盘当做内存来用,那么也必须把磁盘中的数据读入内存才能使用。因此,虚拟内存虽说是把磁盘作为内存的一部分来使用,但实际上正在运行的程序部分,在这个时间点上是必须存在在内存中的。也就是说,为了实现 虚拟内存,就必须把实际内存(也可称为物理内存)的内容,和磁盘上的虚拟内存的内容进行部分置换(swap),并同时运行程序。也就是说在某一时刻,将内存中不用的数据放到磁盘中,空出内存空间,然后把磁盘中需要计算的数据读入内存中来完成置换。
  • 那么,又如何实现磁盘内存的内容和虚拟内存的内容进行置换呢?虚拟内存的方法有分页式和分段式两种。分页式和分段式都是磁盘和内存进行内容一次置换的基本单位
  • 分段式虚拟内存是指,把要运行的程序分割成以处理集合为单位的段落,然后再以分割后的段落为单位在内存和磁盘之间进行数据置换。
  • 分页式虚拟内存是指, 在不考虑程序构造的情况下,把运行的程序按照一定大小的页(page) 进行分割,并以页为单位在内存和磁盘间进行置换。Windows 计算机的页的大小是 4KB。也就是 说,把大程序用4KB的页来进行切分,并以页为单位放入磁盘(虚拟 内存)或内存中
    在这里插入图片描述

四、真正节约内存的编程方法

  • 使用虚拟内存时发生的Page In和Page Out往往伴随着低速的磁盘访问,因此在这个过程中应用的运行会变得迟钝起来。也就是 说,虚拟内存无法彻底解决内存不足的问题。那么为了从根本上解决内存不足的问题,需要增加内存的容量,或者尽量把运行的应用文件变小
  • 而增加内存的代价昂贵,因此一般是想方设法把应用文件变小。那么如何将应用文件变小呢?有两种方法
  • (1)通过 DLL 文件实现函数共有。DLL(Dynamic Link Library)文件 ,顾名思义,是在程序运行时可以动态加载Library(函数和数据的集合)的文件。此外,还有一个需要大家注意的地方,那就是多个应用可以共有同一个DLL文件,而通过共有同一个DLL文件则可以达到节约内存的效果。与动态链接库相对应的是静态链接库,动态链接库可以实现文件共享,而静态链接库则不能实现。如下对比图
    在这里插入图片描述在这里插入图片描述
  • (2)通过调用 _stdcall 来减小程序文件的大小 。C 语言中,在调用函数后,需要执行栈清理处理指令(把不需要的数据从内存上的栈区域中清理出去)。编译器默认将该处理附加在函数调用方,这会导致每次调用函数,都会重复执行同样的栈清理操作,就会造成内存的浪费。那么如果栈清理操作在被调用方执行,这样相同的栈清理工作就会只执行一次就可以了,起到节约内存的功能。通过调用_stdcall就可以实现栈清理操作在被调用方执行。
    在这里插入图片描述

五、磁盘存储数据的形式(磁盘的物理结构)

  • 磁盘是通过把其物理表面划分成多个空间来使用的。划分的方式有扇区方式和可变长方式两种,前者是指将磁盘划分为固定长度的空间,后者则是指把磁盘划分为长度可变的空间。一般的Windows计算 机所使用的硬盘和软盘,采用的都是扇区方式。
  • 扇区方式中,把磁盘 表面分成若干个同心圆的空间就是 磁道,把磁道按照固定大小(能存储 的数据长度相同)划分而成的空间就是扇区。
    在这里插入图片描述
  • 扇区是对磁盘进行物理读写的最小单位。Windows中使用的磁盘, 一般1个扇区是512字节。不过Windows在逻辑方面对磁盘进行读写的单位是扇区的整数倍(),这个很好理解,存入磁盘中的数据必须保证其完整性,如果数据小于512k,则一扇区就够了,但如果数据大于512k,这是再用一扇区的区域去存储数据,就会导致数据在磁盘内存上的“分离”而导致不完整性。因此,不管多么小的文件都要占用一簇,不管多么大的文件也都要占用一簇,这时候一簇是多少个扇区,就要更加数据大小来确定了。

http://chatgpt.dhexx.cn/article/5IXQVqjO.shtml

相关文章

电脑硬件——内存

内存是一台电脑CPU与硬盘间进行数据传输的中转站,内存会影响着电脑的稳定性,不稳定的内存可能会导致蓝屏、黑屏、死机甚至电脑无法亮机等故障。 内存的作用: 在我们的电脑工作时,CPU和硬盘之间会无时不刻地进行大量的数据交换&am…

计算机(二):计算机存储系统(内存、外存)。

前言:我总结了汇编语言课本和通信书上的知识点给大家呈现。 一、计算机存储系统(文解): 存储分为:内存(内部存储器)、外存(外部存储器)。 内存分为:CPU上的寄…

计算机内存介绍

我们这里说的内存啊,其实就是说的我们电脑里面的内存条,所以嘞,内存就是内存条,数据要放在这上面才能被cpu读取从而做运算,还有硬盘,就是电脑中的C盘啥的,一个程序需要运行的话需要向内存申请一…

计算机的内存

1.内存的物理机制 内存和CPU一样,都是由大量引脚构成的集成电路,内存大致分为这几类:1.ROM:只能进行读取;2.DRAM:需要经常刷新就能进行保存数据的可被读取和写入的内存;3.SRAM:不需要经常刷新就…

【操作系统】计算机内存管理

文章目录 1.内存管理目标rom-ram2.计算机内存的惰性分配3.内存管理-分而治之思想4.内存不够的情况处理5.内存扩容swap配置实战6.Linux的free命令详解7.Linux的top命令详解 1.内存管理目标rom-ram (1)为啥要做内存管理 计算机不可能所以用户进程和系统所…

计算机|内存知多少

​1、硬件层面 内存就是名为内存IC的电子元件。(IC,集成电路,内存也是一种集成电路) 内存IC的引脚配置 那这个内存IC能存多少数据? 数据信号引脚有D0~D7一共8个,表示一次输入输出8位数据(一个字…

计算机底层知识之内存

❝ 渔夫出海前,并不知道鱼在哪里,可是他们还是选择出发, 因为他们相信,一定会满载而归。人生很多时候,是「选择了才有机会,是相信了才有可能」。 -- 「稻盛和夫」 ❞ 大家好,我是「柒八九」。 …

计算机基础之内存

目录 1.什么是内存2.内存的物理结构3.内存的使用4.数据在内存中为什么用二进制表示5.二进制的补码 1.什么是内存 内存是与cpu沟通的桥梁,计算机中所有程序的运行都要依靠内存,内存对计算机的影响非常大,内存又被称为主存,作用就是…

计算机基础- -认识内存

计算机基础- -认识内存 文章目录 计算机基础- -认识内存一、什么是内存二、内存的物理结构1.内存的读写过程2.内存的现实模型 三、内存的使用1.指针2.数组是内存的实现3.栈和队列4.链表5.二叉树 一、什么是内存 内存(Memory) 是计算机中最重要的部件之一,它是程序与…

电脑内存介绍(精心整理)

内存是电脑的主要硬件之一,主要用于存储和交换正在运行的程序和数据。简单的说就是,断电之后,内存存储的数据就会消失。所以我们常用的软件需要安装在硬盘等外存设备里,打开游戏或者软件时,就需要把他们调出到内存中运…

四大CPU架构的区别

我们目前使用比较多的架构有:ARM、RISC-V、MIPS,X86等等。其实还有一些指令的,但是其他的指令都是比较小众,只在专业的领域使用。 我们目前使用比较多的架构有:ARM、RISC-V、MIPS,X86等等。其实还有一些指…

四大CPU架构区别

我们目前使用比较多的架构有:ARM、RISC-V、MIPS,X86等等。其实还有一些指令的,但是其他的指令都是比较小众,只在专业的领域使用。 ARM架构是一个32位精简指令集处理器架构,其广泛地使用在许多嵌入式系统设计。它主要从…

Linux 查看CPU架构及内核版本

涉及arch命令和/proc/version文件 1 查看CPU架构 有些软件的安装需要和CPU架构相匹配,如JDK等等,所以需要确定主机的CPU架构类型。可使用命令arch查看Linux系统的CPU架构,如下: arch2 查看内核版本 文件/proc/version中包含系统…

如何查看手机的CPU架构

几款专门获取手机设备信息的App: 通过这些App,你能看到你的安卓手机很多核心底层的信息,对于开发者而言,这些信息对于开发App时的写代码或者debug何其重要! 这些App都能查看像CPU架构、GPU、传感器、温度、存储、电池…

Android CPU架构

Android CPU架构有:arm64-v8a、armeabi-v7a、armeabi、x86 CPU架构 1)arm64-v8a 第8代、64位、ARM处理器 包含AArch32、AArch64两个执行状态对应32、64bit 支持arm64-v8a、armeabi-v7a、armeabi 2)armeabi-v7a 第7代、ARM处理器 …

cpu架构知识

微信公众号:运维开发故事,作者:夏老师 Part1架构概述 从系统架构来看,目前的商用服务器大体可以分为三类 对称多处理器结构(SMP:Symmetric Multi-Processor) 非一致存储访问结构(NUMA:Non-Uniform Memory…

CPU架构名称

Coffee Lake-Refresh 第九代酷睿 2018-2019年 14nm Coffee Lake 第八代酷睿 2017-2018年 14nm Kaby Lake 第七代酷睿 2016年 14nm Skylake 第六代酷睿 2015年 14nm Broadwell 第五代酷睿 2014-2015年 14nm Haswell 第四代酷睿 2013年 22nm Ivy Bridge 第三代酷睿 2012年 22nm S…

指令集与CPU架构概念与联系

指令集 指令集,顾名思义,指令的集合,CPU用来计算和控制计算机系统的,本质上是二进制机器码。 CPU依靠指令来计算和控制系统,故而需要规定一些列与硬件电路相互配合的指令系统来完成CPU的设计。以此来看,指…

Linux内核架构:CPU架构详细介绍(图例解析)

一. 概述 CPU架构是CPU商给CPU产品定的一个规范,主要目的是为了区分不同类型的CPU。目前市场上的CPU分类主要分有两大阵营,一个是intel、AMD为首的复杂指令集CPU,另一个是以IBM、ARM为首的精简指令集CPU。不同品牌的CPU,其产品的…

cpu架构之体系架构

cpu架构之体系架构 1 现代CPU体系结构简介 现代的CPU基本上归为冯诺依曼结构(也称普林斯顿结构)和哈佛结构。 1.1 冯诺依曼结构 冯诺依曼结构(von Neumann architecture),也称普林斯顿结构,是一种将程序…