zoukankan      html  css  js  c++  java
  • 计算机硬件基础

    一、编程语言的作用以及与操作系统和硬件的关系

    二、计算机硬件介绍

      2.1中央处理器

      2.2存储器

      2.3磁盘

      2.4磁带

      2.5I/O设备

      2.6总仙

      2.7计算机及应用程序启动流程

    一、编程语言的作用以及与操作系统和硬件的关系

      编程语言本质就是用来沟通的介质,程序员通过编程语言与计算机沟通,从而让计算机完成某样工作。

      而一套完整的计算机系统分为:计算机硬件、操作系统、软件(程序员开发的及软件)。

      软件(编程语言开发的程序)将一系列指令传递给操作系统,操作系统经过识别,传递到硬件来完成软件里的一系列指令。

    现在应用软件与操作系统及硬件的关系已经有所了解了,那么接下来我们介绍计算机硬件的一些相关知识。

    二、计算机硬件介绍

      简单的来理解,一台简单的计算机可以理解为:CPU、内存以及I/O设备通过一条系统总线(BUS)并通过总线与其他的设备进行通信。

      随着科技的发展,现代的计算机更加复杂,包括多重总线。接下面我们会以下面的图例来介绍各个部件。

    一台简单的计算机图例

    简单得理解各部分功能:

    cpu:人的大脑,来负责运算。
    内存:人的记忆,负责临时存储数据。
    硬盘:人的笔记本,用来永久存储数据。
    I(输入设备):人的眼睛、耳朵,来接收外界信息传给大脑。
    O(输出设备):人的表情,负责经过处理后的结果。
    总线:人的神经。

    2.1中央处理器

      中央处理器即CPU,它是由计算机的运算器和控制器组成的。它的作用就是,从内存中:取指令→解码→执行,然后再取指令→解码→执行,周而复始直到整个程序完成。

      

      CPU要从内存中读取到数据花费的时间比较长,所以CPU内部有一些用来存储关键变量和临时数据的寄存器。

      寄存器的分类:  

      1.通用寄存器:保存变量和临时结果。
      2.程序计数器:保存了将要取出下一条指令的内存地址,方便CPU执行。指令被取出后,程序计数器被更新。
      3.堆栈指针:它指向了当前栈的顶端,该栈包含了已进入但是还没有退出的每个过程中的一个框架。
      4.程序状态字寄存器(PSW):存储了条位码,CPU优先级、模式(用户态或者内核态)及其他控制位。
     
      内核态与用户态
      大多数CPU都有两种模式。即内核态和用户态。通常PSW中有一个二进制位控制这2种模式。
      内核态:CPU在内核态状态下运行时,可以执行指令集中的所有指令。
      用户态:用户程序在用户态下运行,只能执行指令集中的子集,不包括操作硬件功能的部分。
     
      内核态与用户态之间的切换
      用户态状态下不能对硬件进行操作,这时候需要用户程序使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAR指令把用户态切换成内核态。
     
      处理器设计的演变 

      1.最开始取值、解码、执行这三个过程是同时进行的,这意味着任何一个过程完成都需要等待其余两个过程执行完毕,时间浪费

      2.后来被设计成了流水线式的设计,即执行指令n时,可以对指令n+1解码,并且可以读取指令n+2,完全是一套流水线。

      

      3.超变量cpu,比流水线更加先进,有多个执行单元,可以同时负责不同的事情,比如看片的同时,听歌,打游戏。

      两个或更多的指令被同时取出、解码并装入一个保持缓冲区中,直至它们都执行完毕。只有有一个执行单元空闲,就检查保持缓冲区是否还有可处理的指令

      

      这种设计存在一种缺陷,即程序的指令经常不按照顺序执行,在多数情况下,硬件负责保证这种运算结果与顺序执行的指令时的结果相同。

      多线程和多核芯片  
      进程是资源单位而线程才是cpu的执行单位。
      多线程:多线程运行cpu保持两个不同的线程状态,可以在很短的时间快速的来回切换,让你看都的结果是并行的,伪并行的,一个CPU一个时刻只能处理一个进程。
      多核芯片:除了有多线程,后续还出现了拥有2个或者4个完整处理器的CPU。
     

    2.2存储器

      人们总是想要容量大、速度快、价钱便宜的存储器,三者兼得是不可能的。所以才有了如下图所示的各类存储器。

      寄存器即L1缓存:

        制作材料与CPU相同,与CPU一样快,所以CPU访问它没有延迟。

      高速缓存即L2缓存:

        存在于主存和CPU之间的一级存储器,容量小速度比主存快,接近于CPU的速度。

      内存:

        存储系统的主力,即主存。主存又通常被称为随机访问存储RAM。主存是易失性存储,断电后数据全部消失。

      非易失性随机访问存储ROM:

        断电后,ROM中的数据也不会消失。ROM在工厂中被编程完后就不能再修改。

      ERRROM(电可擦除可编程ROM)和闪存:

        它们都是可擦除和重写的,不过重写的时间比RAM写入的时间长的多。便携式电子产品中,闪存作为存储媒介。数码相机中的胶卷、便携式音箱中的磁盘都是闪存,另外闪存还应用在固态硬盘。

        闪存的速度介于RAM和磁盘之间,与磁盘不同的是,擦写次数过多,会影响到寿命。

      CMOS:

        CMOS也是易失性的,它用来保持计算机当前的日期和时间,它由一块小电池来供电驱动。除此之外,它还存储了配置的一些参数,比如哪个是启动磁盘。

    2.3磁盘

      硬盘中,不同盘片相同半径的磁道所组成的圆柱称为柱面。  

      每个盘片有两面,都可记录信息。盘片被分成许多扇形的区 域,每个区域叫一个扇区。  

      盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道。

      传统的磁盘速度慢的原因是它是一种机械装置。

      磁盘信息挂载在一些同心圆的隧道上,是一连串的二进制,为了更好的统计容量大小,8个bit称为一个字节bytes,1024bytes=1k,1024k=1M,1024M=1G,

      所以我们平时所说的磁盘容量最终指的就是磁盘能写多少个2进制位。

      数据都存放于一段一段的扇区,从磁盘读取一段数据需要经历寻道时间和延迟时间。

      平均寻道时间:

        机械手臂从一个柱面随机移动到相邻的柱面的时间称为寻道时间,找到了磁道就以为找到了数据所在的那个扇区,但是还不知道数据具体扇区的具体位置。

      平均延迟时间:

        机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间。

      虚拟内存:

        从磁盘里拿出一块地方存放当前不需要执行的程序,这块地方称为虚拟内存。

        在LINUX中称为SWAP,这种机制在于快速的映射内存地址,由CPU中的一个部件构成,称之为存储器管理单元(Memory Management Unit MMU)。

    2.4磁带

      在价钱相同的情况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。

    2.5I/O设备

      I/O设备一般包括两个部分:设备控制器和设备本身。

      设备控制器:

        硬盘,网卡,声卡等都需要插到一个口上,这个口连接的便是控制器。其主要职责是控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。

      设备本身:

        有相对简单的接口且标准的设备,这样大家就可以为其编写驱动程序。必须把驱动程序安装在操作系统中,才能用设备控制器调用设备。

    2.6总线 

      北桥即PCI桥:连接高速设备

      南桥即ISA桥:连接慢速设备

    地址总线:用来选择存储器指定单元、指定接口

    控制总线:用来传送控制信号,时序信号,和状态信息等。其中有的是CPU向内存和外设发出的信息,有的则是内存和外设向CPU发出的信息。

    数据总线:用来传输CPU与存储器间、CPU与接口间指令和数据

    2.7计算机及应用程序启动流程

      计算机启动流程:

      1.计算机加电

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

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

      4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)

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

      6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。

      然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI

      应用程序启动流程:

      1.双击桌面应用程序的快捷方式。

      2.操作系统从硬盘里找到该应用程序的数据,并加载到内存中。

      3.CPU从内存中读取指令并执行。

      4.CPU执行的结果通过显示器显示出来,应用程序被启动。

  • 相关阅读:
    IOS开发之控件(Ⅰ)
    Windows 8 Metro App开发[7]视图模型与数据绑定
    WP7/8退出程序
    Windows 8 Metro App开发[8]处理Fullscreen, Snapped和Filled状态
    【原创】WP7.8 ROM更新图文并茂
    Windows 8 Metro App开发[5]导航栏(AppBar)的使用
    Iphone开发准备工作
    20191302第十二章学习笔记
    实验四Web服务器2
    2.5 OpenEuler 中C与汇编的混合编程
  • 原文地址:https://www.cnblogs.com/applelife/p/10522061.html
Copyright © 2011-2022 走看看