机械盘基本概念 : 
    组成部分 :
        磁头 : 在不同的磁道上移动以读写数据;
        盘片(类似光盘) : 双面均可存储数据,盘片表面有一圈又一圈的磁道,而在不同盘面,磁道编号相同的磁道被称之为柱面.分区是按照由外到内,按照柱道进行划分;
            注 : 假定盘面按照某一固定的速度进行转动,在相同时间内,越靠近边缘的磁道,磁头吞吐的数据量越大,越靠近中心,相同时间内,吞吐的数据量越小;
固态盘与机械盘的区别 : 固态盘在所有位置读取数据的速度都几乎一样;
轮巡(poll) : 指的是CPU每间隔一段时间(当然这段时间非常的短,人类几乎无法察觉)就会查看一下键盘或鼠标是否有事件发生,如敲击键盘或者点击鼠标等,其缺点在于 : 
             一旦CPU去查看键盘,鼠标等是否有事件发生,就不得不中止当前进程,导致程序的执行效率低下;
中断(interrupt) : 每当键盘或鼠标发生事件时,都会发送一个电信号,通知CPU查看;
可编程中断控制器 : 为克服轮巡导致的程序执行效率低下的问题,可编程中断控制器直接与CPU相连,其上有多根线,每一根线上均与不同的外部设备相连,当有事件发生时,
                   CPU会通过该线路迅速确定事件发生源;但当中断过多时,也会导致CPU性能下降,因为每一次中断,CPU都会中止当前进程,进行查看;
编程的局部性原理 :
    1,时间局部性原理 : 刚刚访问过的数据还有可能在近期内再次访问,因此将此类数据缓存,以备可能再次被访问;
    2,空间局部性原理 : 在一个数据周围的数据最有可能在近期内访问,因此将此类数据提前读入缓存,以备访问;
寄存器 : 缓存数据
    CPU,内存等都有自己的工作频率,但工作频率各不相同,CPU的工作频率远远大于内存的工作频率.假定有两个工作频率不同的电子设备相连,则它们最终的工作频率取决于工作频率较低的
    那个电子设备,也即所谓的木桶原理.是假定两个电子设备之间通过开关的搬动进行数据的传输,开关闭合或断开的时长来完成多位数据的传输,如开关闭合0.1s表示传输一个数字,断开0.1s
    传输一个0.但由于两个设备的工作频率不同,如设备1的工作频率为0.1s,设备2的工作频率为0.01s,结果导致设备1明明只传输了一位数字,却被设备2误判为传输了十位数字,导致数据无法
    正确传输,因此为保证数据的正确传输,必须将设备2的工作频率调整为0.1s,才能够保证数据的正确传输,但却由此导致了设备2的性能的浪费,因此便产生了寄存器.
    寄存器的分类 : 
        寄存器可分为一级寄存器,二级寄存器,三级寄存器等,级数越小,寄存器工作频率越接近运算器,当然价格也就越昂贵;
        系统会根据时间和空间局部性原理将数据提前载入寄存器,依次提高计算速度;
API : 应用编程接口,就是利用软件的方式模拟出底层也即CPU的工作过程,因此可以保证程序的可移植性,可以将其理解为一个翻译,底层的东西可能有很大的差异,但API接口之上的东西确实
      完全一样的;
硬件结构 : ARM,x86,x64,安腾,alpha,UltraSparc,Power,M68000,PowerPC
OS : windows,Linux,Unix(HP-Unix,Solaris,AIX,SCO UNIX,Unixware)
job : 计算机上进行的一次完整的计算;
OS : Operating System,通用目的软件,它并不实现某一具体功能,它是将计算机底层的计算资源以软件的抽象为统一接口的程序,如无论底层的内存实际大小是多少,32位的系统都统一为4G
     分配给程序,64位系统统一为4G个4G,因此对于上层而言,底层就变得一样,大大方便了程序的开发.OS目的在于能够应对计算机底层的各种不同,以确保上层的同一;
    通用目的 :
        硬件驱动
        进程管理(时间的片的切割和分配)
        内存管理
        网络管理
        安全管理
语言层次 :
    机器语言->汇编语言->高级语言
在CPU上存在许多针脚,而每一个针脚都可以完成一种非常基础的运算,CPU正是从Memory中读取指令,进而只会CPU调用这些针脚中的某一个提供的功能;
指令 :
    普通指令 : 应用程序可以自由调用;
    特权指令 : 拥有管理功能,需要和直接和硬件打交道的指令,只能有操作系统调用.因此当某一个应用程序需要调用特权指令时,必须向操作系统提交申请,由操作系统验证其是否拥有执行权限后,
               拒绝或代为调用;
System Call : 系统调用,简单来说,就是将指令封装,以实现更为复杂的功能,但系统调用仍然非常接近底层,因此其实现的功能仍然非常的基础,不利于开发,但其可拓展其性极强,几乎可实现用户的
              所有需求;
Library Call : 库调用,即对系统调用的进一步封装,以实现更为复杂的功能,它本身并不能够执行,只能够被其他程序调用;
解释器或虚拟机 : 面向库调用变成的确大大方便了程序员的开发,但仍然存在着一些不便,如内存分配和释放问题,如当我们在面向对库调用编程时,需要手动分配和释放内存,如果我们在编程过程中
                 忘记释放内存,则可能会导致内存的溢出,如果释放错了内存,则有可能导致程序的崩溃,这一切问题不可避免,因此有了解释器,由解释器为我们创建的变量分配
                 内存,释放内存,大大方便了程序的开发;
Linux的基本原则 :
    1,由目的单一的小程序组成,需要组合这些小程序以完成更为复杂的功能;
    2,一切皆文件,把几乎所有资源包括硬件设备都组织为文件格式;
    3,尽量避免捕捉用户接口,即一旦程序启动起来,一般而言,就不再需要用户输入任何信息;
    4,配置文件保存为文本格式,目的在于一款合用的文本编辑工作即可完成系统的配置工作.配置文件中保存的均为某一程序执行所需要的各种变量或者默认参数,决定了程序的执行特性,如环境变量等;