编程语言介绍

语言是人与人之间沟通的介质,简单的来说,编程语言也是语言,是我们程序员与计算机沟通的介质。常见的编程语言有我们熟知的做网页开发的php,写安卓应用的java,应用广泛的c、c#及c++,以及目前火热的python、r、go等高级语言,另外还有最接地气的低级语言汇编语言,但是无论何种语言,我们的计算机所能识别的只有机器语言(由0和1组成的二进制机器码)。

应用、操作系统与硬件

由于计算机硬件只能够识别机器语言,因此我们所有编程语言按照相应的语法写出来的脚本文件、执行程序等应用软件无法直接与硬件交互,必须要跑在存在于硬件之上的操作系统平台,通过操作系统驱动硬件工作,所以一个完整的计算机系统需要由应用程序、操作系统、计算机硬件三大部分构成。

 

          

 

计算机硬件系统

一台完整的计算机由处理器、内存、硬盘、主板、输入输出设备等组成,计算机是人类仿生学的产物

处理器可以看成人类的大脑,负责思考

内存可以看成人类的记忆,负责短时间的存储信息

硬盘可以看成人类的用来永久记录信息的介质,比如古代的石板兽骨龟甲、现代的纸张

输入输出设备可以看成人类的五官四肢,负责接收信息以及传递信息

主板可以看成人类的身体,用来连接脑袋和四肢,主板上的总线可以理解成人体的神经,负责传递人体各个部件的信号

 

计算机硬件之中央处理器

中央处理器(CPU)是计算机的运算与判断组件,CPU内部含有微指令集,CPU所支持的功能由内部的微指令集决定,CPU所处理的数据来源于于内存,而内存的数据来源于硬盘,当硬盘内的一个程序执行时候,首先会将程序写入内存中,然后CPU从内存中相应的取一段指令进行运算,但是CPU无法对内存提供的指令数据直接处理,CPU会将从内存调用的数据转换成自己能够识别的指令,最后执行反馈结果。

CPU的运行速度要远远高于内存,为了解决CPU和内存的速度差,所以CPU内都有一些用来保存变量和临时数据的寄存器

寄存器:解决cpu和内存间的速度差,cpu从寄存器取数据

  通用寄存器:用来保存关键变量和临时数据或结果

  程序计数器:一个cpu同时只能处理一条指令,但是计算机通常都是多任务执行,当进行任务切换时,被暂停的任务指令处理断点结果将存如程序计数器

  堆栈指针:内存内数据位置的索引

  程序状态寄存器:状态由0和1表示

    用户态:非特权状态,程序代码执行时候只能获取CPU内负责计算的指令集

    内核态:特权状态,程序代码执行时候能够获取CPU内所有的指令集,包括控制硬件的指令集,如写入磁盘的指令集

    程序代码执行的时候所处与用户态,当程序代码需要调用到操作系统访问硬件或调用操作系统访问外设的时候,将从用户态切换到内核态,程序的执行过程中会频繁的在用户态和内核态之间切换

计算机硬件之存储器

计算机系统中,除了内存和硬盘存储外,还存在多种存储器,比如为解决内存和CPU之间的速度差问题,在CPU层面加入的L1/L2缓存,用来存储BIOS设置的CMOS等

存储器类型主要有:

L1缓存:即寄存器,采用和CPU相同材质制作,速度和CPU相同,容量小于1KB

L2缓存:CPU的高速缓存,存在与CPU L1缓存上,负责和主内存交互,当程序执行需要读一个数据时,首先会检查高速缓存内是否存在,如果存在则不需要继续想主内存发起请求,该过程叫做高速缓存命中。相较于L1缓存的无时间延迟,访问L2缓存一般需要1-2ns的时间延迟,现在部分CPU在L2外层加入了L3缓存负责与内存交互。

RAM:易失性随机访问存储,断电后数据丢失,是计算机的主内存

ROM:非易失性只读存储,出场即编程完毕,只可读取无法被修改,主要用来存放BIOS程序。

EEPROM:电可擦除可编程ROM,和ROM不同,可以擦除数据重新编程,但是写入所需时间比ROM高很多

闪存:主要用于固态硬盘,速度比RAM慢,比机械硬盘快

CMOS:易失性存储,但是可以用电池驱动放置丢失数据,一块电池可以用若干年,主要用来存放系统时间和BIOS配置

机械硬盘:计算机主要存储设备,非易失性存储设备

        

  盘片:数据存放的载体

  磁头:读写盘片上的数据

  主轴驱动:驱动盘片转动

  传动轴:控制磁头摆动寻址

        

  磁道:盘片上人为定义的若干个同心圆的轨道,从外向内由0开始编号

  柱面:所有盘片上同一磁道构成柱面,从外向内由0开始编号

  扇区:磁道按相同大小划分成若干的弧段,由1开始编号,每个扇区可存储512或4K字节。第一个扇区存放该硬盘的MBR信息

    MBR由3部分组成:主引导程序(446字节)负责用于硬盘启动时将系统控制转给用户指定的并在分区表中登记了的某个操作系统

             分区信息(64字节)由4个分区表构成

             结束位(2字节)

磁盘访问时间

平均寻道时间:指硬盘的磁头从初始位置移动到盘面指定磁道所需的时间,这个时间越小越好

平均延迟时间:指访问磁道内数据所在扇区所需时间,通常为盘片旋转一周所需时间的一般

虚拟内存与MMU

程序运行时需要占用内存,当程序特别大超过内存大小时候,可以将暂时没用到的程序段放到虚拟内存中,能够允许计算机执行大于内存的程序,而负责管理虚拟内存与物理磁盘之间映射的是内存管理单元(MMU)

 

磁带

计算机磁带主要大量用于计算机的外存储器,一般用来做数据备份

 

设备驱动与控制器

设备驱动:是操作系统和硬件间的接口。驱动负责将操作系统的请求传输,转化为特定物理设备控制器能够理解的命令。

控制器:使操作系统能够简单的操作物理设备,摒除复杂的操作过程,为操作系统提供一个简单的管理接口

 

总线与南桥和北桥

总线:计算机的一种内部结构,是cpu、内存、输入输出设备间传递信息的通道,计算机的各个部件通过总线相连接,而外部设备通过相应的接口电路再与总线相连接

南桥(ISA桥):主要是负责I/O接口等一些外设接口的控制

北桥(PCI桥):主要负责CPU、内存、主存储器等高速设备的控制

 

操作系统的启动流程

1.计算机加电

2.BIOS开始运行,进行硬件检测,包括cpu、内存、硬盘等

3.BIOS通过读取CMOS存储器中的参数,选择启动设备

4.从启动设备上读取第一个扇区的主引导记录

5.根据主引导记录的分区信息读入bootloader启动装载模块,启动操作系统

6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户安装设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),创建需要的进程,并在每个终端上启动登录程序或GUI

 

应用程序的启动流程

1.用户双击应用程序向操作系统发出指令

2.操作系统接收到指令,执行用户操作,读取程序数据

3.程序数据读取完毕调入内存

4.CPU开始处理数据,把程序数据从内存调入缓存

5.CPU从缓存中读取程序数据开始进行处理

6.程序数据处理完毕后返回处理结果给操作系统

7.操作系统收到结果后通过输出设备返回给用户

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!