为什么每次开机第一次启动程序会很慢?

来源:互联网 发布:大数据是以hadoop 编辑:程序博客网 时间:2024/05/29 13:01

学过底层的朋友 或者看过我那一篇“深度理解指令集”文章都应该知道,CPU运行时要先通过南桥芯片把磁盘(硬盘)里的数据传输到内存中去,CPU才能通过内部前端总线对内存里的数据进行操作。
南桥芯片传输过程:
首先南桥芯片通过外部前端总线与磁盘交换数据,这个交换过程是磁盘的磁头和前端总线进行交互工作的而非磁盘,磁头会把磁盘里的磁信号转换成电信号在通过前端总线传输到内存中去。

加载到内存后实际上就是入栈/堆操作,从硬盘加载到内存是需要耗费一点时间的,要是每次都从硬盘上读取的话那么速率会降低,所以CPU不会那么傻每次都从硬盘上读取,当你第一次读取这个数据时内存芯片会对这个数据在内存中做记录,下一次在加载时CPU首先到内存中去找,找不到在到硬盘里面去找!
下面举一个列子:
当你从硬盘运行一个文件时这个文件里的数据会被加载到内存中去,加载到内存中的数据叫程序,当你关闭这个程序时它在内存中的数据也就随之被释放了,不过当你这个程序在加载到内存时内存芯片会对这个初始数据做记录,保存在内存里,下次在执行这个程序时直接把记录的数据拷贝过来用就可以了,所以比第一次运行要快许多!

当你内存里记录数据满了时,比如我打开a软件后打开了b软件那么内存里面已经记录了a、b软件的初始数据在打开c软件时内存已经满了无法记录了,那么内存就会删除a软件的初始数据来记录c软件的初始数据,相反如果在起初加载到内存中时内存就已经满了,那么内存芯片也会删除a软件的初始记录数据!

原创粉丝点击