zoukankan      html  css  js  c++  java
  • 计算机硬件知识整理

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

          语言是用用来沟通的介质,比如汉语是人与人沟通的介质。编程语言是程序员与机器沟通的介质,他的作用就是实现人与计算机的交流。例如Python,C,C++,Java,PHP等

          硬件是指是指计算机系统中由电子,机械和光电原件等组成的各种物理装置的总称。这些物理装置按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。硬件的功能是输入并存储程序和数据,以及执行程序把数据加工成可以利用的形式。硬件可抽象为类似下图的模型。CPU、内存以及I/O设备都由一条系统总线(bus)连接起来并通过总线与其他设备通信

          操作系统(windows,linux,mac系统等)(上图中的各种控制器也属于操作系统)是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。操作系统使得计算及使用者和他软件将计算机当做一个整体而不需要顾及底层每个硬件是如何工作的。而操作系统是安装在硬盘上的(这也就是为什么买的8G内存的手机里显示不够8G,一开机就被系统占用了)

    二 应用程序——操作系统——硬件

       应用程序就相当于应用软件,是为了某种特定的用而被开发的软件,就比如QQ,我们要实现从一个客户端发送一条消息到另一个客户端,就需要经过以下环节:应用程序发送一条指令到操作系统上,操作系统接着将该指令以机器能听懂的方式通知到硬件,硬件通过网线将指令发送到另一个客户端的硬件上,这个东西我们看不懂,硬件需要将这个指令发送到操作系统再由操作系统发送到此客户端的QQ页面我们才能看懂

        

    三 cpu——内存——磁盘

       简单理解: CPU是人的大脑,负责运算,速度快空间最小,断电结束;内存是人的记忆,负责临时存储,空间较大,断电结束;硬盘是人的笔记本,负责永久存储,空间最大,断电也不会结束

       计算机的大脑就是CPU,它从内存中取指令→解码→执行,然后再取指令→解码→执行,周而复始直到整个程序被执行完成。访问内存得到指令的速度比cpu执行指令话费时间要长的多。

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

        每个cpu都有一套可执行的专门指令集,任何软件的执行最终都要转化成cpu的指令去执行,因访问内存得到指令或数据的时间比cpu执行指令花费的时间长的多,所以所有cpu内部都有一些用来保存关键变量和临时数据的寄存器,这样通常在CPU的指令中专门提供一些指令,用来将数据从内存调入寄存器或从寄存器调入内存。存储器一般整合在CPU内,其读写速度可以和CPU运行速度相匹配,使用寄存器可以缩短至零长度、节省存储空间,提高指令的执行度。不同的存储器有不同的作用。CPU其他的指令集可以把来自寄存器、内存的操作数据组合,或者用两者产生一个结果。

        寄存器的分类:

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

           2.程序计数器,保存将要取出的下一条指令的内存地址,指令取出后,程序计算器就被更新以便执行后期的指令

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

           4.程序状态字寄存器,是计算机系统的核心部件—运算器的一部分,psw用来存放两类信息:一类是体现当前指令执行结果的各种状态信息;一类是存放控制信息。这个寄存器包含了条码位(有比较指令设置)、cpu优先级、模式(用户或状态),以及各种其他控制位。用户通常读入整个psw,但是只对其中少量的字段写入。在系统调用和I/O中,psw非常重要

          除了嵌入式系统中的非常简单的CPU之外,多数CPU都有两种模式,即内核态与用户态

          通常,psw中有一个二进制位控制这两种模式

          内核态:当CPU在内核态运行时,CPU可以执行指令集中所有的指令,很明显,所有的指令中包含了是用硬件的所有功能,(操作系统在内核下运行,从而访问整个硬件)

          用户态:用户程序在用户状态下运行,仅仅只能执行CPU整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然在用户态下,将psw中的模式设置成内核态也是禁止的

          内核态与用户态的切换

          用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户切换到内核的过程,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务。

    五 存储器系列,L1缓存,L2缓存,L3缓存,内存(RAM),EEPROM和闪存,CMOSS与BIOS电池

        L1缓存即寄存器:与CPU相同材质制造,与CPU一样快,因而CPU访问它无延时,典型容量是:在32位CPU中位32*32,在64位CPU中为64*64,在两种情况下容量均<1KB。

        L2缓存即寄存器即高速缓存:主要由硬件控制高速缓存的存取,内存中有高速缓存行按照0~64字节为行0,64~127为行1。。。最长用的高速缓存行防止在CPU内部或者非常接近CPU的高速缓存中。当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中。如果是,则称为高速缓存命中,缓存满足了请求,就不需要通过总线把访问请求送往主存(内存),这毕竟是慢的。高速缓存的命中通常需要两个时钟周期。高速缓存未命中,就必须访问内存,这需要付出大量的时间代价。由于高速缓存价格昂贵,所以其大小有限,有些机器具有两级升值三级高速缓存,每一级缓存比前一级慢但是容易大。

        L3缓存的应用可以进一步降低内存延迟,同时提升大数据量计算时处理器的性能。降低内存延迟和提升大数据量计算能力对游戏都很有帮助。而在服务器领域增加L3缓存在性能方面仍然有显著的提升。比方具有较大L3缓存的配置利用物理内存会更有效,故它比较慢的磁盘I/O子系统可以处理更多的数据请求。具有较大L3缓存的处理器提供更有效的文件系统缓存行为及较短消息和处理器队列长度。

        内存:

        再往下一层是主存,存储器中的主力,主力通常称为随机访问存储RAM,就是我们通常所说的内存,容量一直在不断攀升,所有不能再高速缓存中找到的,都会在主存中找,主存是易失性存储,断电后数据全部消失

        除了主存RAM之外,许多计算机已经在使用少量的非易失性随机访问存储如ROM(Read Only Memory,ROM)在切断电源之后,非易失性存储的内容并不会丢失,ROM只读存储器在工厂中就被编程完毕,然后再也不能修改。ROM速度快且便宜,在有些计算机中,用于启动计算机的引导加载模块就存放在ROM中,另外一些I/O卡也采用ROM处理底层设备的控制。

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

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

        BIOS电池,主板电池用于记录计算机系统的时间,也就是维持系统时钟的准确性,电量不够时,时间会回到出厂日期,还有记录启动时要用的硬件信息,也就是维持CMOS的BIOS信息。

     

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

     

    从边缘开始有一个机械臂悬在盘面上,信息写在磁盘上的一系列的同心圆上,是一连串的2进制位(称为bit位),为了统计方法,8个bit称为一个字节bytes,1024K=1M,1024M=1G,所以我们平时所说的磁盘容量最终指的就是磁盘能写多少个二进制位。

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

    把一个机械手臂位置上锁有的磁道合起来,组成一个柱面

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

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

    平均寻道时间

    机械手臂从一个柱面随机移动相邻的柱面的时间成为寻到时间,找到了磁道就意味着找到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置

    平均延迟时间

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

    虚拟内存与MMU

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

    从一个程序到另一个程序,称为上下文切换(context switch),缓存和MMU的出现提升可系统的性能,尤其是上下文切换

    七 磁带

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

    八 设备驱动与控制器

    控制器:是查找主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。

    控制器的功能:通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口。

    驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。

    九 总线与南桥和北桥

    总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。

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

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

    十 操作系统的启动流程    

    1.计算机加电

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

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

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

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

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

    十一 应用程序的启动流程

    首先由到操作系统发送命令到硬盘,硬盘在把应用程序存储到内存上,然后由cpu读取内存上的数据并处理→软件成功运行

  • 相关阅读:
    一文搞懂Raft算法
    设计数据密集型应用第三部分:派生数据
    对一次架构设计的总结和反思
    One take,可望而不可即
    设计数据密集型应用第二部分:分布式系统的机遇与挑战
    [代码重构]简化函数调用
    [代码重构]简化函数调用
    [Vue专题] 对比vue-cli2.x和vue-cli3.x的搭建
    npm ERR! code ENOLOCAL
    Jenkins配置基于角色的项目权限管理
  • 原文地址:https://www.cnblogs.com/wuyongqiang/p/6532979.html
Copyright © 2011-2022 走看看