CPU、内存、硬盘、指令之间的关系
博客专区 > zoakerc 的博客 > 博客详情
CPU、内存、硬盘、指令之间的关系
zoakerc 发表于9个月前
CPU、内存、硬盘、指令之间的关系
  • 发表于 9个月前
  • 阅读 92
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 以文件复制为例,简单描述四者之间的协同工作

  日常生活中,我们经常会在电脑磁盘之间的复制粘粘文件,是怎么实现的呢?粗读《程序是怎么跑起来的》,这里简单描述下这个过程,仅自己思考之言,错误之处欢迎指正。

  当我们按下 Ctrl + C 时,CPU 执行 “复制指令” 将硬盘文件的起止地址临时放到内存中,这时内存并没有读取磁盘的所有文件数据。

  当我们按下 Ctrl + V 时,CPU 执行 “粘粘指令” 才会真正去拷贝文件,将文件起止地址取出,读取硬盘起止地址的数据到内存中,将内存中的数据,写入到硬盘新的起止地址里。

  这个过程看似简单,但是却有几个地方需要仔细去思考的,下面是我自己的几个自问自答。

如果文件有 100GB,而内存只有 8GB,内存会不会爆掉?

  不会,CPU “复制指令”执行时,总是会先将磁盘的文件读取到内存的缓存区,再从缓存区写入到硬盘中。因为内存的读写速度,是硬盘的好几十万倍(内存读写速率毫微秒级别,硬盘读写速率毫秒级别)所以不会出现硬盘等待内存读取数据再写入硬盘的情况,看到的进度条,也只是反映硬盘的写入速率。

既然内存读写速率这么快,那硬盘是不是可以被内存替代?

  不会,硬盘读写速率慢,但数据写入到硬盘后,是持久化存在的,不会因为关机而导致数据丢失,再次开机时硬盘数据还在。 但是,内存是带电存储的,虽然读写速率快,但是一旦关机失去电荷,内存中所有的数据将会丢失,内存也不会被硬盘所替代。 同时,内存容量的造价,也比硬盘要昂贵的多。单个硬盘容量超过 1TB 的很常见,但是单个内存容量超过 64GB 的,生活中是很少见的。

“复制指令” 和 “拷贝指令” 在 CPU 内部是真实存在的吗?

  显然不是,这里描述的这两个 “指令”,其实是 CPU 内部多种指令集协同工作完成的,并不存在这样的单独指令,指令一般对应着一条或几条汇编语言。

  • 点赞
  • 收藏
  • 分享
粉丝 21
博文 1
码字总数 8273