• 第六次读书笔记


    《程序员的自我修养》

    刚刚打开这本书,翻到第一章的第一面,我就投降了。一页满满的问题,把我问住了。好吧我确实不知道。而这些问题,都曾经给我带来过困扰,有时候不是为了这个问题本身才困住的,但这个问题确实解决方法背后的原因和机制。只会百度和谷歌,但有时候却不明所以。
    先是硬件结构框架大体来说没有变化,从程序开发的角度看待硬件时可以简单地把它堪称最初的硬件模型。也就是CPU、内存、以及I/O的基本结构。
    CPU在频率上已经到达了极限,所以人们希望用多个CPU来提高计算机的性能。那么多核和多处理器的不同之处在于多核是SMP的简化版,各处理器之间共享了缓存部件。

    文章里提到了一句话“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决”。
    书上说这句话概括了计算机系统软件体系结构的设计要点。但我想就算是程序设计本身,层的概念也是要点。

    层与层之间需要通信,就和子模块和子模块之间需要通信一样。这里提到了一个词——协议。
    通信要有通信的协议,称其为接口。这让我对API有了更进一步的认识,API还相当于一种约定,那么肯定是要被事先商量好的==才不会出现这次结对作业对接时各显神通地景象。

    在层次体系当中,接口要尽量保持不变。接口的下面那层是接口的提供者,由它定义接口;接口的上面是接口的使用者,它使用该接口来实现所需要的功能。理论上层次之间只要遵循这个接口,任何一层都可以被修改。
    在计算机软件体系结构中,除了硬件和应用程序,其他的都是中间层,每个中间层都是对它下面那层的包装和扩展。,正是这些中间层,使得应用程序和硬件之间保持相对的
    独立。所以这就大概解释了为什么32位机的软件可以被64位机运行,也就是随着硬件一代一代日新月异地发展,很多软件还是能够兼容使用。虚拟机则是在硬件和
    操作系统之间增加了一层虚拟层。

    这一方面归功于硬件和操作系统本身保持了向后的兼容性,另一方面则归功于这总层析结构的设计方式。
    所以一个东西的设计是否有向后性也是很重要的,对于一个可能有所发展的事物,我们在面向其未来时都要在设计上有所保留。

    从整个层次结构上来看,开发工具和应用程序的是属于同一个层次的,它们都使用同一个接口,那就是操作系统应用程序编程接口。
    应用程序的接口是运行库,不同的运行库提供不同的API。
    运行库使用操作系统提供的系统调用接口。操作系统内核层对于硬件层来说是硬件接口的使用者,而硬件是接口的定义者,硬件的接口定义了操作系统内核。

    去了解各个层之间做什么,可能对写程序本身没有很本质的帮助,但这大概是计算机从业者的基本功把。

  • 相关阅读:
    三个问题
    2014-7
    2014-5
    2014-2
    2014-1
    2013-11
    mysql中对表操作----为所有列插入数据
    Redis做消息队列
    收集Nginx-access,Nginx-error日志
    .Nginx安装filebeat收集日志:
  • 原文地址:https://www.cnblogs.com/HelenL/p/8853460.html
Copyright © 2020-2023  润新知