计算机基础之计算机硬件基础

软件设计 2017-05-18

一、了解编程语言

语言是人与人之间交流的介质,我们平时每时每刻用来交流都用的语言。编程语言也是一种语言,也是用来交流的介质,不同的是编程语言是程序员和计算机之间交流的介质,程序员编程的目的就是让计算机去工作。知己知彼才能百战不殆,所以我们要想成为一名合格的程序员,首先就要了解我们的“工人”-计算机的特性,计算机能做什么,怎么做,所以我们要学习计算机基础。

二、操作系统和硬件的关系

我们都能说出我们的电脑有显示器,CPU,硬盘,内存,显卡。。。这些属于计算机的硬件系统,我们平时经常使用的qq,360,word。。。这些属于计算机的软件系统。这些软件就是程序员通过没日没夜的操劳开发出来的最终产品,这些产品无法直接控制计算机硬件,还必须要有操作系统,当然如果是学习汇编语言的话,就不用这样了。操作系统就是运行在硬件之上来控制硬件的,当我们编程时,只需要调用操作系统为我们提供的便利的接口就可以了。

所以软件、硬件和操作系统的关系可以这样表述,软件通过操作系统来控制硬件。

一套完整的计算机系统包括硬件系统,操作系统和软件。下面让我们先来学习计算机硬件系统。

三、计算机硬件介绍

一台简单的个人计算机可以抽象为下图的模型,CPU、内存和I/O设备都由一条系统总线(bus)连接起来并通过总线与其他设备通信。

1.处理器

计算机的大脑叫中央处理器(CPU),它从内存中取指令->解码->执行,然后再取指令->解码->执行下一条命令,直到整个程序被执行完。每个CPU都有一套专门的可执行的指令集,任何软件的执行最终都要转化成CPU的指令去执行。 因为从内存读取数据比CPU执行指令花费的时间长的多,所以CPU内部有一些用来保存关键变量和临时数据的寄存器,通常在CPU的指令集中专门提供一些指令,用来将数据从内存调入寄存器,或者将数据从寄存器存入内存。CPU的其他指令则可以把来自寄存器和内存的数据组合或者用两者运算产生一个结果,并把结果存在寄存器或者内存中。

计算机基础之计算机硬件基础

1.1寄存器的分类

  通用寄存器,用来保存变量和临时结果;

  程序计数器,早期计算机只有一个cpu,执行程序只能按顺序进行,切换到下个程序时要断掉前一个程序,但是要保留程序的运行状态,即保存将要取出的下一条指令的内存地  址,以便再次运行该程序时能接着上次的状态,这就是程序计数器;

  堆栈指针,当我们需要寻找一个数据时,遍历整个硬盘会花费很长时间,因为硬盘的读写速度比较慢,我们可以把数据的地址存储在寄存器里面,这就是堆栈指针;

  程序状态字寄存器(Program Status Word,PSW),这个寄存器包含了条码位、CPU优先级、模式(用户态或内核态),以及各种其他控制位。在系统调用和I/O中,PSW  非常重要。

1.2内核态和用户态及如何切换

除了在嵌入式系统中的非常简单的CPU之外,多数CPU都有两种模式,即内核态和用户态。通常在PSW中有一个二进制位控制这两种模式。

  内核态:当CPU在内核态运行时,CPU可以执行指令集中的所有指令,即操作系统在内核态下运行,可以访问整个硬件。

  用户态:用户程序在用户态下运行,仅仅只能执行CPU整个指令集的一个子集,该子集不包括操作系统的硬件功能部分。即在用户态下,无法访问硬件系统。

用户态下工作的软件不能操作硬件,但是我们使用的软件很多都有硬件操作的需求,比如读取一个文件,保存一个文件等等,就必须经历从用户态切换到内核态的过程。因此,用       户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务。

2.存储器系列

2.1高速缓存

我们知道CPU的速度很快,比内存的速度快的多,这样当CPU需要从内存读取数据时,由于存在速度差,CPU就要等待内存,这样会大大降低效率。因而高速缓存就出现了,高速缓存是速度介于CPU和内存之间的存储介质,当cpu需要读取数据时,会先在高速缓存中寻找,如果找到所需数据,就称为命中,这样就不用去内存中寻找了,大大节省了时间。其中L1缓存采用与cpu相同的介质制成,速度和cpu一样,因而访问无延迟。L2缓存速度比CPU慢些,cpu访问时有1~2时钟周期(即1~2ns)的延迟。有些cpu还存在L3缓存,也是为了提升命中率存在。由于高速缓存价格昂贵,所以容量很小。

2.2随机存储器(RAM)

随机存储器(RAM)就是我们平时所说的内存,既可以从中读取数据,也可以写入数据,所有在高速缓存中找不到的数据,就会到RAM中寻找。但是当电源切断时,存储在其中的数据就会丢失。

计算机基础之计算机硬件基础

2.3只读存储器(ROM)

ROM是只读存储器,在ROM制造的时候,数据就被存入其中,并永久保存,即使断电数据也不会丢失,数据一般不能更改。

2.4EEPROM(Electrically Erasable PROM,电擦除可编程ROM)和闪存(flash memory)

这种存储介质断电后数据也不会删除,但不同的是,它们可以重复擦出和重写。固态硬盘,胶卷都属于这种。

2.5CMOS

CMOS是计算机主板上一块可读写的RAM芯片,用来保存时间日期和BIOS设置,它虽然是RAM芯片,但是它靠一块电池独立供电,所以即使计算机断电,日期时间和BIOS设置信息也不会丢失。

计算机基础之计算机硬件基础

2.6磁盘

现在仍广泛使用的大容量存储介质仍是机械硬盘,机械硬盘通过磁存储数据。主要由盘片、磁头、盘片转轴、控制电机、磁头控制器以及接口,缓存等部分组成。机械硬盘的内部结构如下图所示

与通过电存储的固态硬盘不同,机械硬盘的机械手臂开始在一个固定的槽里,通电后会移动到盘片上,如果突然断电,则机械手臂会停在盘片上,很容易对盘片造成损伤。同样的道理,如果在工作中受到碰撞,机械硬盘也很容易损坏。

当磁盘旋转时,若磁头保持在一个位置不动,每个磁头都会在磁盘表面划出一个圆形轨迹,称为磁道。

磁盘上每个磁道被等分成若干个弧段,称为扇区。默认一个扇区为512Bytes,在向磁盘读写数据时,一扇区为单位。

计算机基础之计算机硬件基础

硬盘通常由一组重叠的盘片组成,每个盘面都被划分成数量相等的磁道,并从外缘开始编号,具有相同编号的磁道形成一个圆柱,称为磁盘的柱面。我们平时说的“分区”,就是指的柱面。

平均寻道时间

当硬盘接收到系统指令后,磁头从开始移动到移动到数据所在的磁道所花费时间的平均值,就叫平均寻道时间,它一定程度上体现了硬盘读取数据的能力,时间越短,产品性能越好。

平均延迟时间

磁头寻找数据时,磁头到达正确的磁道之后还需要等待磁盘旋转到数据所在的扇区下,这段时间称为延迟时间。

虚拟内存与MMU

有时计算机可以运行大于自身物理内存的程序,原因是因为许多计算机都支持虚拟内存机制,即将硬盘的某一部分区域作为虚拟内存,将暂时不需要执行的程序放到这块区域。这块区域在Linux中称为swap,这种机制由cpu中的一个部件负责,称为存储器管理单元(Memory Management Unit ,MMU)

2.7磁带

这里指计算机带,是一种存储容量大,价格低的信息存储介质,主要用于计算机的外存储器。虽然速度比磁盘低,但是可移动性强,常用来备份信息,以便在发生紧急情况时能快速移动。

计算机基础之计算机硬件基础

3.设备驱动与控制器

我们使用的硬件设备,如硬盘、网卡、声卡、鼠标等都需要插到主板上的一个接口上,这个接口就是控制器,它是主板上的一块或一组芯片,负责控制连接的设备。它从操作系统接收命令,然后对硬件设备发出控制请求。

然而要调用设备,还必须根据该接口编写复杂而具体的程序,这就是驱动程序,必须把驱动程序安装到操作系统中才能正常调用设备。

总线与南桥和北桥

总线是计算机各功能部件之间传送信息的公共通信干线,由导线组成传输线束。

主板芯片组是主板的核心组成部分,分为南桥芯片和北桥芯片。南桥芯片提供键盘控制器,RTC(实时时钟控制器),USB(通用串行总线)等的支持,北桥芯片则提供对CPU的类型和主频、内存的类型和存储容量、ISA/PCI/AGP插槽等的支持。简单来说,南桥即ISA桥,连接慢速设备;北桥即PCI桥,连接高速设备。

四、操作系统的启动流程

1.计算机加电

2.BIOS开始运行,通过读取COMS中存储的配置信息识别硬件

3.BIOS读取CMOS中的参数,选择启动设备

4.从启动设备上读取包含MBR引导代码的主引导扇区(这一扇区共占512字节,其中主引导程序占446字节,分区信息占64字节,最后两个字节为标志位)

5.根据分区信息读入BootLoader启动装载模块,启动操作系统

6.操作系统询问BIOS,获取配置信息,并且查看是否所有设备的驱动程序都存在,如果存在,操作系统就将它们调入内核,然后初始化有关表格,并在终端启动登录程序或者显示用户图形界面。

五、应用程序的启动流程

双击应用程序图标,计算机就会到相应的地址读取该程序存储在硬盘里的数据,然后将数据加载在内存里,CPU根据指令读取内存里的数据,程序运行。

相关推荐