计算机硬件

计算机硬件

 计算机的基本结构

 

 

 

底层硬件、操作系统、用户程序(软件)

  • 操作系统Operating System(OS)是管理和控制计算机硬件和软件资源的计算机程序,是直接运行在裸机上最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
  • 软件必须运行在操作系统之上
  1. 如果没有操作系统,那么程序员就必须掌握如何操作硬件的所有具体细节,严重影响了开发效率。
  2. 操作系统运行于硬件之上,用来控制硬件。
  3. 在开发的时候,只需要调用操作系统为应用程序提供的方便的抽象接口即可。

一套完整的计算机系统

  • 应用软件
  1. 控制操作系统(最终还是控制了底层的硬件)
  2. 必须遵循操作系统提供的标准
  3. 最终都是交由底层硬件来执行
  • 操作系统(windows、linux)
  1. 控制所有硬件
  2. 操作系统本身也是一种软件
  3. 如果没有操作系统,在编写应用软件的时候就需要同时把那些能够控制对应硬件的程序,这样导致非常麻烦和低效
  • 底层硬件(CPU、内存、硬盘)

计算机硬件 

  • CPU、内存以及IO设备都有一条总线连接起来并通过与其他设备通信
  1. CPU是人的大脑,负责运算
  2. 内存是人的记忆
  3. 硬盘是人的笔记本,负责永久存储
  4. 输入设备是耳朵和眼睛,负责接受外部信息来传递给CPU
  5. 输出设备是表情,负责输出经过处理后的结果
  6. 以上设备都是通过总线连接,总线相当于人的神经

CPU

  • 每一个CPU都有一套可执行的专门指令集,任何软件的执行最终都要转化成CPU能识别的指令去执行,其中包含操作其他硬件的命令
  • 应用被CPU执行的过程
  1. 从存储介质中取出指令 ——> 解码 ——> 执行(周而复始,直到整个程序被执行完成)
  • 寄存器(最快的一种存储设备)
  1. 用来保存关键变量和临时数据
  2. 存取速度和CPU几乎相同(与CPU相同材质制造,CPU访问它无时延),访问内存并获取指令或数据所需要花费的时间远长与CPU执行命令花费的时间
  3. 程序状态字寄存器PSW
    • 包含CPU的优先级、模式(内核态、用户态)、条码位(由比较指令设置)以及其他控制位
    • 在系统调用中,程序状态字寄存器非常重要。
  • CPU指令集中的命令可以成两个部分
  1. 算术运算和逻辑运算指令
  2. 操作其他计算机硬件的指令

对于操作系统而言,其指令被CPU转换成操作其他硬件的指令;但对于用户的应用软件而言,其指令被CPU转换成算术运算和逻辑运算这类计算指令

 

  • 内核态与用户态(CPU运行的两种状态)
  1. 内核态:操作系统被CPU执行的状态
  2. 用户态:应用程序被CPU执行的状态
  3. 两者区别?
    • 处于内核态的CPU执行的是操作系统,可以控制硬件,此状态下可以获取CPU的所有指令集(包括控制其他硬件的指令集)
    • 处于用户态的CPU执行的是玉壶软件,不可以操作硬件,而且只能获取CPU指令集的一个子集,该子集中不包括操作硬件的指令集
  • 内核态与用户态的互换
  1. 应用程序想要控制底层硬件,就需要将CPU所处的用户态转换成内核态,当应用程序操作完硬件之后,再切换回内核态来继续运行应用程序
  2. 用户态下工作的软件不能操作硬件,但是有些软件比如暴风影音,一定会由操作硬件的需求,比如从磁盘上读取一个电影文件,那就必须经历从用户态切换到内核态的过程。因此,用户程序必须使用系统调用(system call ),系统调用会先入内核并调用操作系统,CPU的状态从用户态切换到内核态,并启用操作系统而会的服务。
  • 多线程与多核芯片
  1. 一个CPU中的处理逻辑增多,称为多线程。对于用户来说每一个拥有两线程的CPU就相当于两个CPU。(进程是资源单位,而线程才是CPU的执行单位)
  2. 一个物理CPU中可以模拟出多个虚拟的CPU来工作
  3. 一个计算机上可以同时有多个物理级别的CPU

存储器

  • 高速缓存L2 
  1. 内存中有高速缓存行按照064字节为行0,64127为行1。。。最常用的高速缓存行放置在cpu内部或者非常接近cpu的高速缓存中
  2. 缓存在计算机科学的许多领域中起着重要的作用,并不仅仅只是RAM(随机存取存储器)的缓存行。只要存在大量的资源可以划分为小的部分,那么这些资源中的某些部分肯定会比其他部分更频发地得到使用,此时用缓存可以带来性能上的提升

一个典型的例子就是操作系统一直在使用缓存,比如,多数操作系统在内存中保留频繁使用的文件(的一部分),以避免从磁盘中重复地调用这些文件,类似的/root/a/b/c/d/e/f/a.txt的长路径名转换成该文件所在的磁盘地址的结果然后放入缓存,可以避免重复寻找地址,还有一个web页面的url地址转换为网络地址(IP)地址后,这个转换结果也可以缓存起来供将来使用。

          图5.3  计算机的存储器类型分类

 

  •  内存 
  1. 主存(随机访问存储RAM,存储器系统主力)
  2. 易失性存储,断电后,保存的数据就消失了
  3. 所有不能再高速缓存中找到的,都会到主存中找
  • ROM(read only memory,非易失性随机访问存储)
  1. 在电源切断之后,非易失性存储的内容并不会丢失
  2. ROM只读存储器在工厂中就被编程完毕,然后再也不能修改
  3. 在有些计算机中,用于启动计算机的引导加载模块就存放在ROM中,另外一些I/O卡也采用ROM处理底层设备的控制
  • EEPROM(electrically erasable PROM ,电可擦除可编程ROM)和闪存(flash memory)
  1. 非易失性
  2. 可以擦除和重写(重写花费时间比写入RAM时间久)
  3. 在便携式电子设备中中,闪存通常作为存储媒介(固态硬盘)
  4. 闪存在速度上介于RAM和磁盘之间,但与磁盘不同的是,闪存擦除的次数2过多,就被磨损了
  • CMOS存储器 
  1. 易失性存储
  2. CMOS可以用来保存配置的参数,比如计算机启动时其中就保存了启动磁盘的配置信息

磁盘

  • 磁头:通过磁性原理读取磁性介质上数据的部件(利用特殊材料的电阻值随着磁场变化的原理来读写盘片上的数据)
  • 磁道:磁盘旋转时,磁头在磁盘表面画出的一个圆形轨迹
  • 扇区:磁盘上的每一个磁道被分为若干个弧段,这些弧段就是磁盘的山区。磁盘的读写以扇区为基本单位(512字节)
  • 柱面:上下一串盘片中,相同半径的刺刀所组成的一个圆柱形环壁。
  • 数据都存放于一段段的扇区,从磁盘读取一段数据需要经历寻道时间和延迟时间
  • 平均寻道时间:机械手臂从一个柱面随机移动到相邻柱面的时间就是寻道时间,找到了磁道就意味着磁头找到了数据所在的磁道,但是此时还无法确认数据具体在磁道上的扇区
  • 磁盘调度算法
    1. FCFS  先来先服务
    2. SSTF  最短寻道时间优先
    3. SCAN  不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向。
    4. CSCAN 磁头单向移动,循环扫描
    5. NSepSCAN和FSCAN调度算法
  • 平均延迟时间:机械手臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间就是延迟时间

计算机的启动

  • 硬盘中,电脑启动时,最终操作系统的代码要给CPU去运行。也就是说,硬盘中操作系统的代码首先会加载到内存,CPU读取内存中操作系统的指令之后再执行。但是必须有一种机制明确的告诉计算机哪一个硬盘是启动盘,而这个机制就是BIOS程序(基本输出输出程序)。
  • BIOS就相当于一个系统操作系统,它有底层的I/O软件,包括读键盘,写屏幕,进行磁盘I/O。BIOS回到它对应的存储设备CMOS存储器中去读取上次认为配置的启动盘位置,因此BIOS可以确定启动盘是那一块硬盘。
  1. 计算机加电
  2. BIOS开始运行,检测硬件:CPU、内存、硬盘
  3. BIOS读取CMOS存储器中的参数,选择启动设备(BIOS告诉启动硬盘在哪儿)
  4. 从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)
  5. 根据MBR读入grub(一种bootloader)之后找到内核,将内核代码读入内存,之后CPU加载代码并运行,进而启动操作系统
  6. 操作系统询问BIOS,获取配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户安装设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核,然后初始有关的表格(如进程表),创建需要的进程,并在每一个终端上启动登陆程序或GUI

用户应用软件的启动

  1.双击快捷方式

  2.告诉操作系统一个文件路径

  3.操作系统从硬盘读取文件到内存中

  4.cpu从内存中读取数据执行

posted @ 2018-04-10 08:46  慕沁  阅读(353)  评论(0编辑  收藏  举报