《码农翻身》读后感第一天

       今天第一天开始读刘欣的《码农翻身》,刚开始看就完全被吸引了.可能是这本书完全是用第一人称的方式来介绍程序技术,让自己刚开始看 就有很强的代入感的原因。一上午两个小时就看到了第一章第六篇第三节了<文件的存放>。

        前面六篇虽然讲的都是关于计算机本身运行方面的知识,没有说到具体的写代码知识。但是还是觉得很有趣味。因为我觉得作为一个程序猿,每天都都和计算机打交道,并且每天制作出来的程序都要在计算机上运作,然后在计算机上展示出来。所有我们对于计算机的运作程序的过程肯定也必须了解的。比如面试官经常会问的关于 进程,线程,tcp数据传输以及http协相关的知识,这本书都有提到,而且文字非常通俗易懂。说到这 就感觉这本书没有买错了,值了。

       其次就说说,观后自己学到的东西吧。首先 来说说 cpu,内存,硬盘。它们之间的相爱相杀吧。cpu和内存一直瞧不起硬盘它那比蜗牛还慢的速度。因为cpu,内存运行的速度是按纳秒来算的,而硬盘是秒。cpu的速度是当中最快的,它比内存快百倍,比硬盘快百万倍,所以cpu从来不喜欢和硬盘打交道。因为它完全跟不上自己的语速哈。只能和内存这个比自己慢百倍的家伙聊聊心事。但是内存这个家伙毕竟也比较慢,咋办呢。于是聪明的cpu就发现有一个局部性原理——1:时间局部性——如果程序中的某条指令开始执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问。2:空间局部性——指一旦程序访问了某个存储单元,则不久之后,其附近的存储单元也将被访问。根据这个原理,cpu想到了,把这些经常被访问的数据存储到一块,取名叫缓存。这样每次需要数据时,可以先去缓存中取,就不要去和慢自己百倍的内存中取了。非常节约时间。当然硬盘也总是嘲讽cpu和内存他们和鱼一样只有七秒的记忆力。一旦断电它两就啥都忘了。而自己却可以保留断电之前的记忆,并且自己还有超大的存储空间。说到这cpu和内存也很无奈。 

     进程和线程。相信大多数人都知道。线程是多个进程组成的,而程序是由线程组成的。进程就是程序的最小运行单位。

     硬盘存放文件:硬盘里面是分块的——磁盘块。每一个块都有一个编号。存取数据通过索引方式,在一个磁盘块中记录一个文件所使用的磁盘块编号——索引块;优点:访问数据速度快。缺点:索引块需要消耗内存。

     程序运行总结:代码先是存放在硬盘中,通过装载器先记录代码在硬盘中的位置,然后找到程序的入口点,然后由操作系统创建一个进程,分配虚拟地址等数据。。。然后调度进程运行从入口点开始。同时系统命令cpu去入口点取指令执行。cpu通过一个页表查询出虚拟地址对应的内存真实地址,若发现无法找到记录。则cpu反馈给系统程序还没有到达内存中,系统则调度缺页处理程序去把此程序的代码读到内存中来。同时cpu更新自己的页表记录,将此程序的相关信息记录进去(个人理解此页表和计算机里面的任务管理器很像),然后再读取入口的指令开始执行此程序。由于需要同时执行多个程序,cpu开始指挥多个进程来执行此程序,设置一个时间片,到点了就挂起此进程,让另外一个进程执行。

     

你可能感兴趣的:(读书感悟)