|
| 1 | +============================================================================== |
| 2 | + |
| 3 | + |
| 4 | +程序=数据结构+算法 |
| 5 | +------------------ |
| 6 | + |
| 7 | + |
| 8 | +这句经典的话,大家应该很熟悉。 |
| 9 | + |
| 10 | +数据结构是什么? |
| 11 | +“数据”从字面上应该不难理解,就是我们计算的“数”。“结构”从字面上理解应该是数据的 |
| 12 | +存在形态,也就是我们计算的“数”的“形态”。 |
| 13 | +“数据结构”为我们提供了操作“数”的基础,就拿C语言来说,其中的基本数据结构有整型, |
| 14 | +短整型,长整型,浮点型,单精度型,双精度型,字符类型等,整型也就是我们通常所说 |
| 15 | +的整数,这样就让我们能够清楚明白了,但是对于计算机是如何计算整数的呢?是用只能 |
| 16 | +识别0和1的二进制进行计算的,浮点型和我们说的小数是类似,也是通过一个电路的设计 |
| 17 | +用二进制的方式计算出来的。这个字符类型怎么办呢?通过整数与字符之间的映射来建立 |
| 18 | +联系的,也就是说字符类型是站在整型的肩膀上的。更高的数据类型则站在他们的肩膀上 |
| 19 | +来构建的。 |
| 20 | +用一句话就是用二进制抽象出了数,用数抽象出了更多。 |
| 21 | + |
| 22 | +算法是什么?顾名思义,计算方法。上面提到“数据结构”从本质上是为我们提供了“数”, |
| 23 | +而算法则为我们提供了如何将“数”计算出结果的方法。 |
| 24 | + |
| 25 | +程序是什么?算数即算术。 |
| 26 | + |
| 27 | + |
| 28 | +内核的(程序=数据结构+算法) |
| 29 | +---------------------------- |
| 30 | + |
| 31 | + |
| 32 | +内核的本质就是我们为管理计算机上所有的硬件而抽象出的工具,当然内核也是程序。 |
| 33 | + |
| 34 | +在计算机总线上的硬件,比如中央处理器(CPU),内存,硬盘,键盘,鼠标,这些东西 |
| 35 | +都是由内核控制和管理的,本质上这些组件在内核中是由“数”来表示的(即“数据结构”), |
| 36 | +而对这些组件的调度与使用本质上就是“算法”。 |
| 37 | + |
| 38 | +当然,这些只是从内核的宏观角度来考虑的,随着内核的发展和成长,其本身有其自身的 |
| 39 | +特性。例如:内核的加密的多种方法就是算法,内核对于文件系统中的目录管理方法就是 |
| 40 | +算法,内核对计算机内存的管理和使用方法就是算法。 |
| 41 | + |
| 42 | +当然,当我们从分布式计算集群的角度去考虑如何管理和使用集群中的每一台计算机的计 |
| 43 | +算资源时,这个管理集群的方法也是算法。因此,算法会因你所站的角度和高度不同而有 |
| 44 | +不同,可大可小。 |
| 45 | + |
| 46 | + |
| 47 | +如何深入了解内核 |
| 48 | +---------------- |
| 49 | + |
| 50 | + |
| 51 | +上面解释了什么是数据结构和算法,当我们想要了解内核是如何具体工作的时候,我们需 |
| 52 | +要看内核的代码,如何有侧重点的观看这些大量的内核代码呢?当然就是,数据结构如何 |
| 53 | +设计的,算法如何实现的。 |
| 54 | + |
| 55 | +由于内核是用C代码和少量的汇编代码写成的,当然C语言的数据类型就是我们应该重点观 |
| 56 | +察的数据结构了,数据结构了然于胸之后,就是观察这些数据是如何的被操作和传递的。 |
| 57 | + |
| 58 | +指针作为避免在内存空间浪费使用上是不可忽视的。 |
| 59 | + |
| 60 | +============================================================================== |
| 61 | +============================================================================== |
0 commit comments