04.磁盘



电脑中可以存储数据的设备有什么特点?

寄存器:(cpu内部):读写速度最快,容量最小,价钱最贵

内存:​读写一般快,容量介于寄存器与磁盘之间,价格中等

磁盘:读写最慢,​容量最大,价格最便宜

因为寄存器和内存虽然速度快但因为容量与价格的限制平时执行程序时,程序的数据是储存在磁盘中的,用的时候先加载到内存中由内存和寄存器之间产生交互这样比寄存器直接与磁盘交互速度会快很多。

​什么是磁盘缓存?

因为对于磁盘的I/O操作速度很低,所以如果将所有的数据都存储在磁盘中,当用的时候再从磁盘加载到内存中,效率无疑会很低,尤其是在操作需要经常访问的数据时;为了优化这个问题就出现了磁盘缓存,它分为读缓存和写缓存,具体如下:

读缓存:​操作系统把已经读取过的数据存储在专门划分出的一块内存中,当下次再用到它时直接从内存中读取,不用再从磁盘上取数据。

写缓存:系统将要写入磁盘的数据先保存在系统为写缓存所分配的内存中,当​这块内存的数据量达到一定程度时,再将数据从内存写入到磁盘,每次将数据写入硬盘时先检查缓存区,如果找到就由缓存区写入磁盘这样可以避免写入重复数据导致的磁盘重复读写。

什么是虚拟内存?

​因为程序的执行均需要在内存中,如果某个程序占用的内存很大就容易耗光内存,导致内存不够用,这个时候就会将磁盘划出一部分作为内存使用。也就是将程序分成两部分一部分在内存中,另一部分寄存在磁盘中。​在用到磁盘上存储的那部分数据时再和内存进行数据交换。

cpu只能执行物理内存中的程序,而虚拟内存技术会将程序的一部分放到磁盘中,那么当需要执行存储在磁盘中的程序的另一半时该怎么办呢,这就用到了分页,分段或段页式的调度技术了​。以下以windows下的分页式为例:​


假设一个程序有7m,而目前物理内存中能用的空间只有4m,那么就会将这整个程序分成一页一页(页是一个大小单位x86里面是4k),一部分加载到物理内存另一部分则放在虚拟内存(磁盘划分出的一部分空间)中,当需要虚拟内存中的数据时再以页为单位与物理内存中的数据进行置换,这样程序既可以顺利执行又可以节省内存空间。​​

分页式:​页是信息的物理单位,为了提高内存利用率减少内存零头,页的大小由系统确定且是固定的

分段式:段是信息的逻辑单位,分段的目的是为了更好满足用户需求,每段的大小取决于用户编写的程序,是不固定的。

虚拟内存在硬盘上的存在形式就是 PAGEFILE.SYS这个页面文件。​


节省内存的编程方式​:​

1.函数共用:windows下有很多dll文件,这些文件就是windows的动态链接库,里面是已经封装好的库函数,当某个程序用到这些库里面的函数时,只需要运行的时候动态加载就行了,不需要每个需要它的程序都在程序内部自己实现一遍,从而节约了内存空间。

2.被调用方清理栈:当一个函数调用完成后会将栈中放的临时文件清理​


                                                             


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值