计算机基础之:计算机硬件
一、计算机介绍
计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。
二、编程语言与计算机协调关系
首先我们以Python为例,众所周知,Python是一门编程语言,语言是用来沟通的介质。
程序员编程的本质就是让计算机去工作,而作为编程语言就是程序员和计算机沟通的介质
从而我们需要了解计算机是如何在进行数据解码执行等
当我们用程序开发出软件,需要在运行操作系统环境下运行,在之前是是没有操作系统的,程序员只能在硬盘上进行编程。此时你必须掌握如何操作硬件的所有具体细节,比如如何具体操作硬盘,了解硬盘所需要的一切只是,这就严重影响了开发的效率,操作系统的出现就是运行于硬件之上,来控制硬件的,操作系统的出现大大节省了开发时间,只需要调用操作系统为我们提供的简单而优雅的接口就可以了
从而我们可以看出完整的计算机系统可以分为:计算机硬件,操作系统,软件,三者的关系,如下图,那今天我们就开始从计算机硬件基础开始学习
三、计算机硬件
计算机硬件组成的系统是由各种元器件、各种部件组成的计算机系统的有形实体。包括CPU、主板、内存和硬盘、输出设备和输入设备等。而把所以元器件组合再一起的由一条系统总线连接起来并通过总线与其他设备通信
我们可以简单理解下
计算机的“大脑”——CPU
计算机的“骨架”——主板
计算机的“仓库”——内存和硬盘
计算机的输出设备——显示器和打印机
计算机的输入设备——键盘、鼠标和扫描仪
计算机的“嘴巴”和“耳朵”——音箱和麦克风
CPU,内存,硬盘关系;首先我们需要了解硬件、内存、cpu三者之间的关系,当我们发出指令,首先从硬盘中读取数据,转化到内存,之后转化成CPU自身指令集进行数据的运作,如图
四、CPU介绍
CPU做为计算机大脑,首先要明确CPU是需要从内存中取指令--解码--执行,然后在进行取指--解码--执行下一条命令,周而复始的进行,直到整个程序完成。
需要提出,CpU控制着各个部件见的协调,它是有自己本身执行的专门指令集,任何软件的执行都需要转化成CPU本身的指令集去执行
由于CPU时钟频率远远大于内存的时钟频率。导致CPU发出信号后。往往需要等待内存很久才能得到响应结果。所以CPU中有临时存储设备,它的速度远远快于内存。CPU中一种重要的临时存储设备--寄存器。寄存器的时钟频率和CPU几乎是一摸一样。寄存器就大大提升啦CPU从内存提取数据的速度。
寄存器的分类:
1.除了用来保存变量和临时结果的通用寄存器外
2.多数计算机还有一些对程序员课件的专门寄存器,其中之一便是程序计数器,它保存了将要取出的下一条指令的内存地址。在指令取出后,程序计算器就被更新以便执行后期的指令
3.另外一个寄存器便是堆栈指针,它指向内存中当前栈的顶端。该栈包含已经进入但是还没有退出的每个过程中的一个框架。在一个过程的堆栈框架中保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量
4.最后 一个非常重要的寄存器就是程序状态字寄存器(Program Status Word,PSW),这个寄存器包含了条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入。
CPU两种模式:即内核态与用户态。
通常,PSW中有一个二进制位控制这两种模式。
内核态:当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能,(操作系统在内核态下运行,从而可以访问整个硬件)
用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,也就是说用户态是不能控制硬盘的。
关于二进制,系统上只有两种表现形式0和1,也就是逢二进一,例如0101010,运算可以是1*25+1*23+1*21
2. 用户态和内核态的转换
1)用户态切换到内核态的3种方式
a. 系统调用
这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现。
b. 异常
当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。
c. 外围设备的中断
当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。
五、存储器
计算机中第二重要的就是存储了,所有人都意淫着存储:速度快(这样cpu的等待存储器的延迟就降低了)+容量大+价钱便宜。然后同时兼备三者是不可能的,所以有了如下的不同的处理方式,
L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。内置的L1高速缓存的容量和结构对CPU的性能影响较大,不过高速缓冲存储器均由静态RAM组成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。一般服务器CPU的L1缓存的容量通常在32—256K
L2 Cache(二级缓存)是CPU的第二层高速缓存,分内部和外部两种芯片。内部的芯片二级缓存运行速度与主频相同,而外部的二级缓存则只有主频的一半。L2高速缓存容量也会影响CPU的性能,原则是越大越好。
缓存是一个好方法,在现代cpu中设计了两个缓存,再看两种cpu设计图。第一级缓存称为L1总是在CPU中,通常用来将已经解码的指令调入cpu的执行引擎,对那些频繁使用的数据自,多少芯片还会按照第二L1缓存 。。。另外往往设计有二级缓存L2,用来存放近来经常使用的内存字。L1与L2的差别在于对cpu对L1的访问无时间延迟,而对L2的访问则有1-2个时钟周期(即1-2ns)的延迟。
内存:RAM储存器我们俗称的内存,易挥发性随机存储器,高速存取,读写时间相等,且与地址无关等。RAM表示的是读写存储器,可其中的任一存储单元进行读或写操作,计算机关闭电源后其内的信息将不在保存,通常用来存放操作系统,各种正在运行的软件、输入和输出数据、中间结果及与外存交换信息等,我们常说的内存主要是指RAM。
ROM储存器断电后信息不丢失,如计算机启动用的BIOS芯片。存取速度很低,(较RAM而言)且不能改写。由于不能改写信息,不能升级,现已很少使用。ROM表示的是只读存储器,即:它只能读出信息,不能写入信息,计算机关闭电源后其内的信息仍旧保存,一般用它存储固定的系统软件和字库等。
CMOS储存器,它是易失性的,许多计算机利用CMOS存储器来保持当前时间和日期。CMOS存储器和递增时间的电路由一小块电池驱动,所以,即使计算机没有加电,时间也仍然可以正确地更新,除此之外CMOS还可以保存配置的参数,比如,哪一个是启动磁盘等,之所以采用CMOS是因为它耗电非常少,一块工厂原装电池往往能使用若干年,但是当电池失效时,相关的配置和时间等都将丢失
BIOS电池。bios电池的作用是在电脑关闭以后,继续为主板上的BIOS模块供电以保存BIOS设置信息。由于BIOS的供电都是由CMOS电池供应的,如果把CMOS电池从主板上取下来,BIOS中的数据被恢复为出厂设置了,所有设置信息将全部丢失,这个效果和用跳线放电一样。不用电池也能正常启动电脑,不过有些主板也会有特殊设置,检测不到COMS电池的存在就无法开机。
拆卸的具体按以下步骤进行:
1、给电脑断电,并打开机箱。
2、在机箱里找到主板上的BIOS电池位置。
3、按住BIOS电池的金属卡子,取下旧电池。
六、磁盘
简简单介绍了磁盘结构后,下面我们将对磁盘的参数进行讲解。磁盘的常见参数如下:
磁头(head)
磁道(track):每个磁头可以读取一段换新区域
柱面(cylinder)
扇区(sector):每个磁道划成若干扇区,扇区典型的值是512字节
圆盘(platter)
上图中磁盘是一个 3个圆盘6个磁头,7个柱面(每个盘片7个磁道) 的磁盘,图2中每条磁道有12个扇区,所以此磁盘的容量为6*7*12*512字节。
数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间
平均寻道时间
机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间,找到了磁道就以为着招到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置
平均延迟时间
机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间
虚拟内存:
许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在linux中成为swap,这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,成为存储器管理单元(Memory Management Unit MMU)
PS:从一个程序切换到另外一个程序,成为上下文切换(context switch),缓存和MMU的出现提升了系统的性能,尤其是上下文切换
七、磁带
在价钱相同的情况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。(常见于大型数据库系统中)
I/O设备:管理和控制计算机的所有输入/输出(I/O)设备是操作系统的主要功能之一,主要分为字符设备和块设备。一般由机械和电子两个部分组成。
cpu和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环。
I/O设备一般包括两个部分:设备控制器和设备本身。
控制器:是查找主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。
控制器的功能:通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口
设备本身:有相对简单的接口且标准的,这样大家都可以为其编写驱动程序了。要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统。必须把设备驱动程序安装到操作系统中。
不难看出IO设备,由两部分组成。控制器(controller)和硬件本身(device)。事实上CPU无法直接操作硬件本身。而是通过与控制器沟通.控制器又与硬件沟通,最后操控硬件。
控制器就像精通两个国家的语言的人,在其中扮演着翻译角色。所以控制器作为一个接口连接着CPU和硬件设备。控制器和硬件之间如何交互?控制器和CPU直接如何交互?
通过不同的语言。而不同的语言体现到具体的硬件之间就是协议的差异。协议依赖于特定的介质。不同协议依赖于不同介质进行传递信号.
八、设备驱动
驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。
因此,驱动程序被比作“ 硬件的灵魂”、“硬件的主宰”、和“硬件和系统之间的桥梁”等。
硬件如果缺少了驱动程序的“驱动”,那么本来性能非常强大的硬件就无法根据软件发出的指令进行工作,硬件就是空有一身本领都无从发挥,毫无用武之地。这时候,电脑就正如古人所说的“万事具备,只欠东风”,这“东风”的角色就落在了驱动程序身上。如此看来,驱动程序在电脑使用上还真起着举足轻重的作用。
九、总线
北桥即PCI桥:连接高速设备:负责链接速度较快的CPU、主存储器(RAM)与显示适配器(VGA)等组件
南桥即ISA桥:负责连接速度较慢的周边接口,包括硬盘、USB、网络卡等
北桥总线:北桥总线一般称为系统总线,因为是内存传输的主要信道,所以速度较快。
南桥总线:南桥就是所谓的输入输出I/O总线
十、操作系统启动流程
1.计算机加电
2.BIOS开始运行,检测硬件:cpu、内存、硬盘等
3.BIOS读取CMOS存储器中的参数,选择启动设备
4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)
5.根据分区信息读入bootloader启动装载模块,启动操作系统
6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI
十一、应用程序的启动流程
1、双击应用软件启动程序
2、进入硬盘提取指令
3、上传到内存,由CPU进行取值--解密-执行