zoukankan      html  css  js  c++  java
  • 计算机基础系列之一:计算机硬件概述

    1、编程语言的作用及与操作系统和硬件的关系
     
    1.1 什么是编程及编程语言的作用。
     
    编程是编写程序的中文简称,就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程。为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。
     

     1.2 应用程序、操作系统、硬件三者之间的关系概念如下:

    1、操作系统对计算机硬件设备进行操作,如控制声卡发出声音,控制显卡绘制图形等。

     2、操作系统可以感受到用户对输入设备的操作,如鼠标的移动,键盘的按键被按下等,并且可以知道鼠标移动的位置,被按下键盘的字符,Windows将这些

    信息包装成一个消息,来由操作系统会将这个消息发送到消息队列当中,应用程序会调用消息响应函数进行相应的处理           

     3、表示应用程序可以通知操作系统执行某个具体的动作,以便使应用程序间接的通过OS对硬件操作,其实程序员只需要关注应用程序与操作系统的交互即

    可,对于操作系统是怎样控制硬件设备的只需大致了解即可,此过程即为应用程序对Windows api调用的过程,这一过程称为系统调用,通过系统提供的接口

    函数就可以指挥操作系统来干活了。

    4、表示操作系统能够将输入设备的变化上传给应用程序,widows并不对产生的某一事件进行相应,而是将这一消息传递给消息队列或者直接传递给某一对象

    进行处理。

     1.2.1  cpu、内存、硬盘的概念及关系

    CPU是大脑,计算数据用的,电脑运行总指挥,负责发指令和调控。  

    内存负责连接CPU和硬盘,存储临时使用的数据。相当于草稿纸,开着电脑一直都在用里边的数据,如果断电,数据就丢了。  

    硬盘是数据保存者,相当于记事本,东西都放在里边。


      

    2、cpu与寄存器,内核态与用户态及如何切换
     

    cpu:相当于计算机的大脑负责运算和发送命令;

    寄存器:寄存器是cpu当中的一个有限存储部件,cpu从内存调用数据时,寄存器会将从内存调用的数据进行更新在寄存器中以一个字或变量进行存储。

            寄存器总共分为四种:

                    1.通用寄存器:用来保存变量与临时结果

                    2.程序寄存器:保存了将要取下的一条指令的内存地址

                    3.堆栈指针:它指向内存当前栈的顶端。该栈包含已经进入但是还没有退出的每个过程中的一个框架。在一个过程的堆栈框架中保存了有关输入参数,局部变量以及那写没有及时保存在寄存器中的临时变量。

                    4.程序状态寄存器:这个寄存器包含了条码位(由比较指令设置),cpu优先级,模式(用户态或内核态),以及各种其他控制位。用户通常读入整个psw,但是只对其少量的字段写入。在系统调用和I/O中,psw非常重要。

    内核态与用户态的切换:

            内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序

            用户态: 只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取

     为什么要有用户态和内核态

    由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 -- 用户态 和内核态

    所有用户程序都是运行在用户态的, 但是有时候程序确实需要做一些内核态的事情, 例如从硬盘读取数据(比如从硬盘读取游戏进度), 或者从键盘获取输入等. 而唯一可以做这些事情的就是操作系统, 所以此时程序就需要先操作系统请求以程序的名义来执行这些操作.这时需要一个这样的机制: 用户态程序切换到内核态, 但是不能控制在内核态中执行的指令这种机制叫系统调用, 在CPU中的实现称之为陷阱指令(Trap Instruction)

    他们的工作流程如下:

    1. 用户态程序将一些数据值放在寄存器中, 或者使用参数创建一个堆栈(stack frame), 以此表明需要操作系统提供的服务.
    2. 用户态程序执行陷阱指令
    3. CPU切换到内核态, 并跳到位于内存指定位置的指令, 这些指令是操作系统的一部分, 他们具有内存保护, 不可被用户态程序访问
    4. 这些指令称之为陷阱(trap)或者系统调用处理器(system call handler). 他们会读取程序放入内存的数据参数, 并执行程序请求的服务
    5. 系统调用完成后, 操作系统会重置CPU为用户态并返回系统调用的结果。

     
    3、 存储器系列,L1缓存,L2缓存,内存(RAM),EEPROM和闪存,CMOS与BIOS电池

    因为各级存储硬件的参数和性能不同所以在计算机硬件当中分为以下几种:

    由此可见顶级空间小但处理速度最快,下层容量大但处理速度时间较长。

    存储器系统采用分层结构,顶层的存储器速度较高,容量较小,与底层的存储器相比每位的成本较高,其差别往往是十亿数量级的。

    寄存器:即L1缓存,与cpu同材质构成,所以数据读写无延迟。典型容量是:在32位cpu中为32*32,在64位cpu中为64*64,在两种情况下容量均<1KB。

    高速缓存:即L2缓存,二级缓存就是一级缓存的缓冲器:一级缓存制造成本很高因此它的容量有限,二级缓存的作用就是存储那些CPU处理时需要用到、一级缓存又无法存储的数据。同样道理,三级缓存和内存可以看作是二级缓存的缓冲器,它们的容量递增,但单位制造成本却递减。需要注意的是,无论是二级缓存、三级缓存还是内存都不能存储处理器操作的原始指令,这些指令只能存储在CPU的一级指令缓存中,而余下的二级缓存、三级缓存和内存仅用于存储CPU所需数据。

    内存:是系统存储主力,通常都是临时存储以备cpu调用,但是断电后数据将不会保存。

    EEPROM(Electrically Erasable PROM,电可擦除可编程ROM)和闪存(flash memory)也是非易失性的,但是与ROM相反,他们可以擦除和重写。不过重写时花费的时间比写入RAM要多。在便携式电子设备中中,闪存通常作为存储媒介。闪存是数码相机中的胶卷,是便携式音译播放器的磁盘,还应用于固态硬盘。闪存在速度上介于RAM和磁盘之间,但与磁盘不同的是,闪存擦除的次数过多,就被磨损了。

    CMOS与BIOS电池:还有一类存储器就是CMOS,它是易失性的,许多计算机利用CMOS存储器来保持当前时间和日期。CMOS存储器和递增时间的电路由一小块电池驱动,所以,即使计算机没有加电,时间也仍然可以正确地更新,除此之外CMOS还可以保存配置的参数,比如,哪一个是启动磁盘等,之所以采用CMOS是因为它耗电非常少,一块工厂原装电池往往能使用若干年,但是当电池失效时,相关的配置和时间等都将丢失。

    4 、磁盘结构,平均寻道时间,平均延迟时间,虚拟内存与MMU

     首先了解一下磁盘:磁盘低速的原因是因为它一种机械装置,在磁盘中有一个或多个金属盘片,它们以5400,7200或10800rpm(RPM =revolutions per minute 每分钟多少转 )的速度旋转。从边缘开始有一个机械臂悬在盘面上,这类似于老式黑胶唱片机上的拾音臂。信息卸载磁盘上的一些列的同心圆上,是一连串的2进制位(称为bit位),为了统计方法,8个bit称为一个字节bytes,1024bytes=1k,1024k=1M,1024M=1G,所以我们平时所说的磁盘容量最终指的就是磁盘能写多少个2进制位。

            

    每个磁头可以读取一段换新区域,称为磁道

    把一个戈丁手臂位置上所以的磁道合起来,组成一个柱面

    每个磁道划成若干扇区,扇区典型的值是512字节

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

    平均寻道时间:平均寻道时间是指MO磁光盘机在接收到系统指令后,磁头从开始移动到移动到数据所在磁道所需要的平均时间,它是指计算机在发出一个寻址命令,到相应目标数据被找到所需时间,单位为毫秒。

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

    虚拟内存许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在linux中成为swap,这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,成为存储器管理单元(Memory Management Unit MMU)

    5、 磁带

    磁带按用途可大致分成录音带、录像带、计算机带和仪表磁带四种。计算机带作为数字信息的存贮具有容量大、价格低的优点。主要大量用于计算机的外存贮器。如今仅在专业设备上使用(比如计算机磁带存储器、车床控制机)。

    6、设备驱动与控制器

    设备驱动是操作系统和输入输出设备间的粘合剂。驱动负责将操作系统的请求传输,转化为特定物理设备控制器能够理解的命令。

    控制器(英文名称:controller)是指按照预定顺序改变主电路或控制电路的接线和改变电路中电阻值来控制电动机的启动、调速、制动和反向的主令装置。由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。

    7、总线与南桥和北桥

    总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。

    南桥 主要是负责IO

    北桥 用于CPU和内存、显卡、PCI交换数据
    北桥的学名是“图形与内存控制器”,南桥的学名是“输入/输出控制器”,现在PCIE总线都收归南桥控制了,内存控制器则集成在CPU内部了,所以北桥已经灭亡了。
    Intel芯片组只有南桥了,北桥的功能已经被CPU集成了,AMD的主板两个都还健在!

    8、操作系统的启动流程

    1.计算机加电

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

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

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

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

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

    序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI

    9、应用软件启动流程

    图标即应用程序的快捷方式,双击图标,计算机会读取程序存储在硬盘的数据,数据被加载在内存里面,即可执行命令,好比知道了一种生物的DNA数据,就可以复制出一个活体来一样,类比的话,DNA数据存储在硬盘里,加载到内存里,即是一个复活的过程,关闭程序,好比把它终结了。

     

  • 相关阅读:
    《精通Ext JS 》
    《OpenStack部署实践》
    《方寸指间——移动设计实战手册》
    《产品经理那些事儿》
    C# 基于Aspose.Cells的数据导出到Excel
    mongodb中直接根据某个字段更新另外一个字段值
    C# mongodb中内嵌文档数组条件查询
    c# 在mongo中查询经纬度范围
    (转)MySql 获取所有级联父级或所有级联子级
    mongodb对数组元素及内嵌文档进行增删改查操作(转)
  • 原文地址:https://www.cnblogs.com/caoxing2017/p/7150121.html
Copyright © 2011-2022 走看看