磁盘和内存(一)

磁盘和内存

共同点:磁盘和内存都具有存储功能

区别:
存储方式:
内存,通过电流来实现存储
磁盘,通过磁记录技术来实现存储

造价和读取速度:
内存:高速而且昂贵
磁盘:低速而且低廉

断电:
内存:数据会丢失内部存储设备
磁盘:可以长久保留外部存储设备

一般我们说的内存,就是指主存,存储cpu处理的程序和数据。

程序不读入内存就无法运行

存储程序方式:我们程序是保存存储设备中,通过使用cpu读入实现的程序指令

计算机最重要的存储设备:磁盘内存

磁盘:磁盘中程序必须加载到内存中才能运行,主要是因为负责解析和运行程序的cpu的程序计数器来指定内存地址从而读出程序指令。

磁盘构建

缓存

做软件的过程中会遇到很多的缓存技术,磁盘也有其缓存技术,磁盘缓存

磁盘缓存:将程序和数据从磁盘读取到内存的方式,接下来再读取这部分数据,就不用重新从磁盘中去拿,直接从缓存中去读取。所以这时候就需要这种缓存技术来完善磁盘的读取速度。

从低速设备读取到高速设备,比较常见的应用就是web҅浏览器通过远程服务器来获取数据并且显示出来,其中一些比较大的图片会缓存在本地的磁盘中,根据显示图片的时候直接进行读取。

虚拟内存

虚拟内存:本质是是磁盘的一部分,假想磁盘

磁盘缓存:本质上是内存的一部分,假想内存

虚拟内存是磁盘和内存交互的第二个媒介,是一种计算机的内存管理技术,它使得应用程序认为它拥有一段连续可用的内存(完整的地址空间),实际上通常被分割成多个物理碎片,还有一部分是存储在外部存储器上,必要时进行数据交换

这种数据交换体现在,比如内存不足了,只剩10mb的空间确可以运行50mb的程序。因为cpu只能执行加载到内存中的程序,所以虚拟内存空间就需要和内存空间进行置换,相当于内存满了,和磁盘中的一部分数据进行置换。

虚拟内存和内存的交换方式

交换方式:分页式分段式

Window一般采用的是分页式,该方式就是不分析程序的结构,将程序按一定大小的进行分割,然后以页为单位进行置换。在分页式中,我们把磁盘内容读到内存中叫“Page In”,同样把内存中数据写入到磁盘就叫"Page Out"。windows计算机的页的大小是4KB,所以切割的时候是4KB为单位进行切割的。

那么问题来了为啥是4KB,而不是别的8,16KB?

4KB 的内存页其实是一个历史遗留问题,在上个世纪 80 年代确定的 4KB 一直保留到了今天

两个影响存页大小的因素:

1.过小的页面过小会带来较大的页表项增加寻址时 TLB(Translation lookaside buffer)的查找速度和额外开销;

2.过大的页面过大会浪费内存空间,造成内存碎片,降低内存的利用率。

如果你设置为8KB,当一个程序申请1KB的内存的时候,还是会分配一个8KB的内存页,会导致大量的资源浪费。

Linux中除了内存的利用率之外,较大的内存页也会增加内存拷贝时的额外开销,因为 Linux 上的写时拷贝机制,在多个进程共享同一块内存时,当其中的一个进程修改了共享的虚拟内存会触发内存页的拷贝,这时操作系统的内存页越小,写时拷贝带来的额外开销也就越小。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值