鸟哥-概论/计算机基础
/*CPU
CPU主要分两个单元:算术逻辑单元和控制单元,数据的流入与流出内存都是由内存控制的。
CPU处理的数据都是从内存来的,而CPU处理的数据也是要写回内存的,所以有时候增大系统内存就可以提高系统性能;
精简指令集(Reduced Instruction Set Computer,RISC):
指令较为精简,每条执行时间也短,如ARM架构的
复杂指令集(Complex Instruction Set Computer,CISC):
每条小指令可以执行一些较低级的硬件操作,指令数目多且复杂,每条指令的长度也不相同,虽然执行的时间长,但是我处理的工作丰富啊,常见的有AMD,Intel,VIA的x86架构
**CPU的频率
*每秒钟可以执行的工作次数
但是每块CPU的指令集,架构,二级缓存,运算机制等可能都不一样,所以不能单纯的通过频率断言CPU性能的高低
*外频和内频
外频是CPU与外部组件进行数据传输时的速度,倍频是CPU内部用来加速工作性能的一个倍数,两者相乘才是CPU的频率速度。?哪两者,CPU和外部的频率相比,外部受限更多频率较慢,为了将就外部,所以有了外频这个概念
/*主板
早期的芯片组通过两个网桥来进行通信:南桥(主要连接速度较慢的设备接口包括硬盘、USB、网卡等),北桥(连接速度较快的CPU、内存和显卡等),目前北桥控制器已经整合到CPU内部中
新的CPU设计中,已经将北桥整合到芯片当中,(1)CPU和内存,显卡通信的总线称为系统总线;(2)南桥就是所谓的输入输出I/O总线,主要连接硬盘,USB,网卡等设备。
/*CPU
很多程序都对CPU进行优化,但是一般芯片都有向下兼容的能力,也就是说适用于新一代的程序一般也适用于旧一代。
**超线程
Hyper-Threading,HT
说简单一点就是将重要寄存器分成两组,这两组分别运行它自己的程序,这样两组程序就可以竞争CPU运算内核,使得能够同时运行两个程序,就好像有两个核一样。
虽然大部分i7只有四个物理内核但是操作系统可以检测到八个内核,如果让每个内核逻辑分离就可以同时运行八组程序,超线程。但是受困于原理毕竟不是真正的内核,所以有些特殊情况,比如程序很多情况下都存在共用的冲突,就会降低效能,可能不会起到好的结果。
/*内存
**个人电脑的内存的主要组件为动态随机存取内存(Dynamic Random Access Memory,DRAM)
**现在主流的是,SDRAM和DDR SDRAM ,DDR(Double Date Rate),意思就是所谓双倍速,也就是同一个周期可以进行两次数据的传输。DDR3L后面那个L就是低功耗的意思
**多通道设计:
一个内存是64位,那么两个两个内存并到一起不就是128位,这就是双通道的设计理念,因为读写的同时性,所以内存的型号规格最好是一致的
除了DRAM还有SRAM(静态随机存取内存),常见的就是二级缓存,因为CPU的数据都是从内存来的,但是CPU和DRAM还有内存控制器这个槛,做不到同步,也就是DRAM的速度会慢得多,因此,我们在CPU内部集成了内存,也就是二级缓存,常用的数据和程序就存到缓存里,这样读取就会快的多。
**只读存储器:
电脑上的BIOS(basic input output system),是一个程序用来读取CMOS上与电脑参数有关的数据和程序的。CMOS芯片,每次开机,电脑都会读取这部分,这个芯片需要借助额外的电源来使用记录功能,所以主板上有一个纽扣电池,
ROM:一种非易失性存储,一种在断电的情况下也能保存数据。BIOS就是保存在rom中的(real only memory)
固件:1,很多固件也是写在rom上的,2什么是固件,固件是一段程序,一段与启动有关的程序,比如BIOS,控制着开机时各项参数的获取,现在的BIOS通常写到类似flash或者EEPROM中。
/*显卡
显卡又称为VGA(video graphics array),图形图像的显示重点在于分辨率和颜色深度。
因为CPU本身就已经很繁忙了,所以设计了GPU(3d加速的芯片),显卡主要通过GPU和CPU和内存进行通信。
**显卡的规格:
PCI->AGP->PCI Express(PCIe)
主要差异在于数据传输的带宽
**显卡是通过什么格式与电脑屏幕或者电视相连的?
-*D-Sub (VGA接口):较早的接口,15针接口,为模拟信号的传输所使用,针对传统的CRT屏幕
-*DVI:一共有 四种接口,常见的是针对数字信号的DVI-D接口,以及整合数字与模拟的DVI-I两种,DVI常见于液晶屏幕的连接
-*HDMI:相对于d-sub和DVI只能传输影像,HDMI支持影像和声音的同时传输,在电视屏幕和电脑屏幕中比较常见
-*DisplayPort:与HDMI类似,但是并不如HDMI应用广泛,接口嘛,HDMI下面的角是斜角,display的上下的角都是斜角,不过上面的角不如下面的角大。
/*硬盘与存储设备
**扇区(512B->4K)
**磁道,一个同心圆,由扇区组成,很明显外侧的同心圆比较大,如果数据写在外圈,很明显能够读到更多的信息,所以一般读写都是从外侧向内写,这是默认方式
**柱面,所有碟片上的同心圆组成的就叫柱面,同心圆也就是磁道
**传输接口
-*SATA:优点连接线比较窄小,便于通风,主流使用的SATA 3.0,理论速度可达600MB/s
因为数据算法的关系,每一组为10bit,其中两个bit用于校验,所以,它说的传输速度,1B=10bits而不是传统的8bits
-*SAS:早期工作站或大型电脑使用,优点稳定,读写速度快
-*USB:比较慢就是,用于外接式的硬盘
**固态硬盘:(SSD,solid state disk)机械硬盘因为需要马达去驱动碟片,所以存在延迟,固态硬盘最大的好处就是没有数据延迟且快,还省电。
-*读写硬盘的时候并不是连续的读写而是读写很多的小文件
-*机械硬盘的机械手臂在关机的时候要回回归原味才是顺利关机,对硬盘比较友好。
/*扩展卡与接口
卡槽使用的规格包括:PCI,AGP,PCI-X,PCIe,因为PCIe已经足够快了,几乎所有的卡都是以PCIe来设计
**举例,外扩网卡的时候,(千兆,Giga),PCIe高达500MB/s,实际限于设备等因素,大概110MB/s左右,PCI,133MB/s左右,实际大概在60MB/s左右
*PCIe也有不同的通道数,常见的有*1,*4,*8,*16等,个人电脑的一般是*16,中级服务器一般是*8,*16的比较少见,这些接口的分辨主要看插槽的长度,
最新的PCIe 3.0,单通道速度可达1GB/s
**CPU最多支持16个PCIe的通道数,也就是我们可以使用1*16的,或者2*8,或者2*4+1*8.有的高级的主板提供3*16和卡槽,实际上,有的卡槽里是没有金手指的,只支持8或者4,不过把16通道的插在8通道的卡槽上是没有问题的,能用但是,发挥不出完全的实力,比如16对8,性能减半。也就是说PCIe接口是向下兼容的。
**那些3*16的卡槽,只有一个是直接连到CPU的因为CPU只支持16个通道,后面两个是连接到南桥的,不过面临和南桥卡克的情况,PCIe2.0 *8理论速度是4GB/s,而DMI总线传输率是4GB/s但是,换算成文件传输量的时候大概只有,2GB/s,所以就卡脖子了。
/*主板
*PCI的卡槽当然是插到和CPU直连的卡槽上效率最高,如果卡槽是通过南桥和CPU相连的,扩展卡就要先进入南桥和大家抢带宽,之后传向CPU的时候还要通过南桥和CPU直接相连的总线,DMI 2.0,上面也提到过。
**设备I/O地址和IRQ中断请求
I/O地址,就像门牌号,不能有两个设备共用I/O地址
IRQ中断,就是中断,通过中断来告诉CPU这个设备的一些想说的话,还有sharing IRQ技术。
**CMOS和BIOS
CMOS无法断电,记录主板上的重要参数
BIOS是写到eeprom或者flash的一段程序,在开机的时候用来加载CMOS里的信息,常见的是在开机时使用del键来进入BIOS设置界面
**接口
USB接口:鼠标键盘等的输入,通常只有USB2.0和USB3.0,为了方便区分,一般USB3.0插槽使用蓝色
PS/2接口:早期的键盘或者鼠标使用的接口
声音输入接口:圆的
RJ-45网络头:很方
HDMI:用于和屏幕连接的主流接口
/*主机电源
最好选用400W以上的主机电源,和转化效率高的,也就是,输出占比输入高的。
/*数据表示方式
**字符编码系统:
ASCII码,常用的英文编码表
big5:台湾地区的汉字编码表
GB2312或GBK中国大陆常用汉字编码表
Unicode:国际组织 ISO/IEC制定的编码系统,常称其为UFT-8(现今主流编码),打破了所有国家的不同编码
**操作系统:
(1)内核kernel
操作系统operating system,本质是一组程序,重点在于这组程序用来管理电脑的所有活动以及驱动系统中的所有硬件,这就是系统内核干的
因为内核主要在于管理硬件与提供相关的功能,所以非常重要,不能被用户轻易破坏,所以,把内核放置到内存当中的区块是受到保护的,并且启动后就一直常驻在内存中
*内核功能:
-*系统调用接口system call interface:为了方便程序员编写应用程序时和内核沟通。
-*进程管理process control :进程就是正在运行的程序。在多任务环境下,一台电脑可能会有很多任务跑道CPU等待运算,内核就有必要能够调度这些任务,让CPU的资源能够合理的分配。
-*内存管理memory management :内存控制非常重要,因为所有的数据和程序代码都必须要先存放在内存。通常内存会提供虚拟内存的功能,当内存不足的时候可以提供交换swap分区的功能。
-*文件系统的管理filesystem management :诸如数据的输入与输出I/O,不同文件格式的支持等都是文件系统的管理。
-*设备驱动device drivers:目前有所谓的可加载模块功能,可以将驱动程序编译成模块,就不需要重新的编译内核了。
(2)系统调用system call
系统会提供应用程序编程接口(application programming interface,API)
硬件->内核->系统调用->应用程序(壳程序shell),
所以内核是直接参考硬件规格写的,不同的硬件自然也不适配。
-*为什么会有这个接口:
因为,我要开发程序,必然要知道内核的相关功能,如果没有这样的一个接口,那我就得去看内核功能,也许相比于查看硬件参考手册可能更简单,但是还是挺麻烦,所以API应运而生。有这个接口我就不用去翻看内核功能了,省时省力。
(3)操作系统和驱动程序:
-*操作系统想要驱动设备就需要有该设备的驱动程序
-*操作系统会提供API,开发厂商就可以编写他们的驱动程序
(4)应用程序
应用程序是根据API编写的软件,这些软件可以直接让用户操作。