Fork me on GitHub

计算机硬件

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

  1. 编程语言的作用:程序员与计算机沟通的介质
  2. 软件(编程语言编写的程序)运行在操作系统上,操作系统也是一款特殊的软件,它调用硬件的接口(驱动)来控制硬件

  计算机硬件 

  1. cpu负责运算
  2. 内存负责临时存储
  3. 硬盘负责永久存储
  4. 输入设备接收外部信息传输给CPU
  5. 输出设备输出经过CPU处理后的结果

CPU与寄存器,内核态与用户态的切换

CPU从内存中取指令,解码,执行。

中央处理器 (英语:Central Processing Unit,缩写:CPU),是计算机的主要设备之一,功能主要是解释计算机指令以及处理计算机软件中的数据。计算机的可编程性主要是指对中央处理器的编程。中央处理器、内部存储器和输入/输出设备是现代电脑的三大核心部件。

寄存器Register)

  1. CPU中的寄存器是少量且速度快的电脑内存,借由提供快速共同地访问数值来加速计算机程序的运行
  2. 寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器。
  3. 寄存器是内存层次结构中的最顶端,也是系统操作数据的最快速途径。
  • 通用寄存器:用来保存变量和临时结果
  • 程序计数器:保存了将要去除的下一条指令的内存地址。指令去除后,程序计算器就被更新以便执行后期的指令
  • 堆栈指针:指向内存中当前栈的顶端。该栈包含已经进入但是还没有退出的每个过程中的框架。在一个过程的堆栈框架中保存了有关的输入参数,局部变量以及没有保存在寄存器中的临时变量
  • 程序状态字寄存器(program status word PSW):这个寄存器包含了条码位(由比较指令设置),CPU优先级,模式(用户态或内核态),以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入。在系统调用和I/O 中PSW 非常重要

操作系统必须知晓所有的寄存器,在时间多路复用的CPU中,操作系统会经常中止正在运行的某个程序并启动(或再次启动)另一个程序。每次停止一个运行着的程序时,操作系统必须保存所有的寄存器,这样稍后再次运行时,可以把这些寄存器重新装入

CPU有两种工作状态:内核态,用户态 PSW 中有一个二进制位控制这两种模式内核态:当CPU在内核态运行时,CPU可以执行指令集中所有的指令,所有的指令中包含了使用硬件的所有功能(操作系统在内核态运行,可以访问整个硬件

用户态:用户程序在用户态下运行,仅仅只能执行CPU整个指令集的一个子集,该子集不包含操作硬件功能的部分

 

内核态与用户态切换

用户程序必须使用系统调用(system call),系统调用陷入内核并调用指令,该指令具有从用户态切换到内核态的特别能力

异常处理:计算机使用TRAP来执行系统调用,多数的TRAP是由硬件引起的,用于警告有异常情况发生。在所有的情况下,操作系统都得到控制权并决定如何处理异常情况,有时,由于出错的原因,程序不得不停止。在其他的情况下可以忽略出错,如果程序已经提前宣布它希望处理某类异常时,那么控制权还必须返回给程序,让其处理相关问题

存储器系列

 L1 缓存(寄存器):在CPU芯片中加入更大的缓存,材质和CPU相同,CPU访问它没有延迟 典型容量 32位CPU中位32*32 64位CPU中为64*64 在两种情况下容量均<1KB 

 L2 缓存(高速缓存):主要由硬件控制高速缓存的存取,内存中有高速缓存行按照0~64字节为行0,64~127为行1 最常用的高速缓存行放置在CPU内部或者非常接近CPU的高速缓存中。当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中。如果是,则称为高速缓存命中。缓存满足了请求,就不需要通过总线把访问请求送往主存(内存),这毕竟是慢的。高速缓存的命中通常需要两个时钟周期。高速缓存为命中,就必须访问内存,这需要付出大量的时间代价。由于高速缓存价格昂贵,所以其大小有限,有些机器具有两级甚至三级高速缓存,每一级高速缓存比前一级慢但是容易大。缓存在计算机科学的许多领域中起着重要的作用,并不仅仅只是RAM(随机存取存储器)的缓存行。只要存在大量的资源可以划分为小的部分,那么这些资源中的某些部分肯定会比其他部分更频发地得到使用,此时用缓存可以带来性能上的提升。一个典型的例子就是操作系统一直在使用缓存,比如,多数操作系统在内存中保留频繁使用的文件(的一部分),以避免从磁盘中重复地调用这些文件,类似的/root/a/b/c/d/e/f/a.txt的长路径名转换成该文件所在的磁盘地址的结果然后放入缓存,可以避免重复寻找地址,还有一个web页面的url地址转换为网络地址(IP)地址后,这个转换结果也可以缓存起来供将来使用。   缓存是一个好方法,在现代cpu中设计了两个缓存,再看4.1中的两种cpu设计图。第一级缓存称为L1总是在CPU中,通常用来将已经解码的指令调入cpu的执行引擎,对那些频繁使用的数据自,多少芯片还会按照第二L1缓存 。。。另外往往设计有二级缓存L2,用来存放近来经常使用的内存字。L1与L2的差别在于对cpu对L1的访问无时间延迟,而对L2的访问则有1-2个时钟周期(即1-2ns)的延迟。

内存

RAM 存储器系统的主力 主存通常称为随机访问存储  特点:易失性存储,断电后数据全部消失

ROM(read only memory)在切换电源后 非易失性存储的内容不会丢失。ROM只读存储器在工厂中就被编程完毕,然后再也不能修改。ROM 快且便宜 用户计算机的引导加载模块就存放在ROM中,另外一些I/O也采用ROM处理底层设备的控制

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

CMOS,它是易失性的,许多计算机利用CMOS存储器来保持当前时间和日期。

BIOS电池

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

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

磁盘结构

  • 磁头(head)
  • 磁道(track)
  • 柱面(cylinder)
  • 扇区(sector)512bytes 是磁盘级别最小的读写单位    1block (8*512 bytes)是操作系统级别的最小单位

平均寻道时间

机械手臂从一个柱面随机移动到相邻的柱面的时间称为寻道时间

英文拼写是Average Seek Time,它是了解硬盘性能至关重要的参数之一。它是指硬盘在接收到系统指令后,磁头从开始移动到移动至数据所在的磁道所花费时间的平均值,它一定程度上体现硬盘读取数据的能力,是影响硬盘内部数据传输率的重要参数,单位为毫秒(ms)

平均延迟时间

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

虚拟内存

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

磁带

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

 

设备驱动与控制器

设备驱动

驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。

控制器

控制器:是查找主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。 控制器的功能:通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口

 

总线与南桥和北桥

 

北桥即PCI桥:连接高速设备 (CPU,主存储器,二级高速缓存)

南桥即ISA桥:连接慢速设备  (磁盘,输入输出设备)

总线Bus)是指计算机组件间规范化的交换数据(data)的方式,即以一种通用的方式为各组件提供数据传送和控制逻辑

 

操作系统的启动流程

  1. 计算机加电
  2. BIOS运行 检测硬件(CPU,内存,硬盘)
  3. BIOS读取CMOS 存储器中的参数 选择启动设备
  4. 从启动设备上读取第一个扇区内容(MBR主引导记录512字节,前446为引导信息 后64为分区信息,最后2个为标志位)
  5. 根据分区信息读入bootloader启动装载模块,启动系统
  6. 然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI

 

应用程序的启动流程

  • 图标即应用程序的快捷方式,双击图标,计算机会读取程序存储在硬盘的数据,数据被加载在内存里面,即可执行命令

 

posted on 2017-05-18 18:23  vmaze  阅读(213)  评论(0编辑  收藏  举报

导航