计算机硬件
为何在学习开发之前要学习计算机基础————明确开发的含义与对象,如何做一个开发,对于才入门的我来说,目前我认为的开发是为了在计算机上完成某一个事件,如完成一个应用程序的制作,它应该会对于计算机的各个部分有着指令和操作,而为了完成这些问题,明确如何对于计算机各个部分的连接,必须要熟知计算机的组成以及如何完成它们的配合后,才能够保证写出的代码指令合理!还有“据说”在未来的路上,做到构架师方面的时候,对于计算机基础这些基层语言与构造还会显得尤为重要。
编程语言的作用————开发应用软件,也是以编程语言的形势向计算机发布计算机能够识别的计算机语言,从而完成用户想要计算机完成的动作。
编程语言与操作系统、硬件的关系————首先操作系统就是由编程语言汇编的,而从计算机这个稍微大的整体来说,操作系统虽然与硬件是两个整体,但是可以看成硬件完全是由操作系统严严实实的包裹着一样,任何编程语言如应用程序,在对于硬件动作有所需求时,必须要先通过操作系统的认可,才能够完成这一指令,而同样的,硬件里的任何东西想要到达应用程序,也必须经过操作系统,这就是为何计算机为什么必须安装了操作系统后才能够运转起来
cpu、内存、磁盘的联系————磁盘与内存都是作为一个存储器,它们的区别在于内存是个瘦子,跑的快,而磁盘是个胖子,肉多。cpu则是计算机的运算和控制中心,就像大脑。它们的联系就是存储在磁盘的文件在需要运行的时候,读取的信息先经过内存,然后输送到cpu中,从而高效的完成。至于为何需要内存,因为如果把磁盘看成火车,那内存就是汽车,虽然汽车小,但是他更加方便快捷,能够更加高效的把信息输送到核心进行处理。
cpu与寄存器,内核态与用户态及如何切换————cpu与寄存器:寄存器就像是cpu的助手,如上所诉,当cpu从内存中提取指令时,会存在在众多指令中筛选当前所需要的,会有在cpu进行这个事件运算中途产生的数据需要记录或者存储,便于接下来使用等等,而如果让cpu一个进行这种筛选或者记录时势必会影响它的运行速度,因此寄存器就是协作cpu来完成这些对于简单而又必要的事件。寄存器分为四种:1.通用寄存器:用来保存变量和临时结果以便接下来使用。2.程序计数器:保存下一条指令的地址,以便直接获得正确指令。3.堆栈指针:它明确标出了已经输入到cpu的参数,局部变量和临时变,等等。4.PSW:它包含了非常重要的模式(用户态或内核态),cpu的优先级以及其他控制位,对于系统调用和I/O尤为重要。(PSW:Program Status Word)
所谓用户态是指用户访问下的一个状态,这时计算机的底层硬件处于一个被保护的状态,用户是不可能访问到或者作用到计算机硬件上的内存。 内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序。而他们的切换:首先在用户态执行到需要访问硬盘数据或者键盘键入时,会将在这之前执行的数据和结果储存在寄存器中,然后对操作系统发出请求,从而切换到内核态,执行需要访问具有内存保护的数据,在执行完毕后将结果存储,重置cpu再次切换到用户态。
存储器系列(访问时间,典型容量):寄存器(1ns,<1KB),高速缓存(2ns,4MB),内存(10ns,512~2048MB),磁盘(10ms,200~1000GB),磁带 (100s,400~800G)
L1缓存(寄存器):与cpu一样快,访问无延时
L2缓存(高速缓存): 主要用来存放频繁使用的内存字,高速缓存硬件先检查L2有无所需的存储字,若无后再访问内存
内存RAM(Random Access Memory):随机访问存储即为内存,也是存储器的主力,主存易失,断电数据就会全部消失
EEPROM(Electrically Erasable PROM)和闪存(Flash Memory):非易失性,不过可以擦除重写,闪存速度介于内存和磁盘中间,可用于固态硬盘、胶卷等
CMOS存储与BIOS电池:CMOS也是易失去的,不过它内部保存着时间与日期程序,还有计算机的一些基本参数,并且他拥有一小块电磁驱动保证其不断电。
磁盘结构:磁盘由一个或多个金属片组成,它连接着一个机械转轴,每一个磁面上都会拥有一个戈丁手臂,它的磁头在一个个同心圆的磁道上进行数据读取。而每一个磁道上小的圆弧被称为扇区,数据就存储在这一段一段的扇区中。
平均寻道时间: 机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻道时间,找到了磁道就以为找到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置。
平均延迟时间: 机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间称为延迟时间
虚拟内存与MMU: 虚拟内存就是在正在使用的程序放入内存取执行时,暂时不需要执行的程序放到磁盘的某块地方; 而cpu中负责快速地映射内存地址的部件就称为存储器管理单元( Memory Management Unit MMU)
磁带:便宜,大容量,速度低,可移动性强,常用来做备份
设备驱动与控制器 :控制器: 是查找主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。
设备驱动:即为设备驱动程序,它是由控制器提供接口,并安装在操作系统上。
总线与南桥和北桥:总线: 计算机各种功能部件之间传送信息的公共通信干线,它分为数据总线、地址总线、控制总线。北桥即PCI桥:连接高速设备;南桥即ISA桥:连接慢速设备
操作系统的启动流程:在接入电源后,首先运行的是BIOS程序(操作系统),先检测硬件,然后读取CMOS上关于计算机的参数,选择启动设备, 从启动设备上读取第一个扇区的内容(MBR (Main Boot Record)主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位),根据分区信息读入bootloader启动装载模块,启动操作系统。然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI(图形用户界面)。
应用程序的启动流程:先由输入设备(如鼠标)提出请求——>由控制器输入信号——>设备驱动程序运行——>操作系统接受——>从硬盘寻找该应用所在的位置——>cpu从内存中读取——>运行该应用程序。在这个过程中,操作系统无时无刻不在进行着监视,只要请求提出或者事件一发生,操作系统就会立马做出反应。