01 基础知识-计算机硬件

---恢复内容开始---

计算机抽象模型:

cpu、内存以及I/O设备都是由一条系统总线(bus)连接起来并通过总线与其他设备通讯

现在计算机的结果更复杂,包括多重总线



CPU:

CPU是计算机的大脑,它从内存中取指令->解码->执行,然后重复该步骤,直至整个程序被执行完成。

cpu内部都有一些用来保存关键变量和零时数据的寄存器

寄存器分类:

  1. 通用寄存器,用来保存变量和临时结果
  2. 程序计数器,它保存了将要取出的下一条指令的内存地址。在指令取出后,程序计数器就被更新以便执行后期指令
  3. 堆栈指针,它指向内存中当前栈的顶端。该栈包含已经进入但是还没有退出的每个过程中的一个框架。在一个过程的堆栈框架中保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量
  4. 程序状态字寄存器(Program Status Word,PSW),这个寄存器包含了条码位(由笔记指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入。在系统调用和I/O中,PSW非常重要

寄存器的维护:

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

处理器手机的演变:

  1. 最开始取值、解码、执行这三个过程是同时进行的,意味着任何一个过程旺财都需要等待其余两个过程执行完毕,浪费时间
  2. 后来被设计成了流水线式设计,即执行指令n时,可以对指令n+1解码,并且可以读取指令n+2,完全是一套流水线

  1. 超变量cpu,比流水线更加先进,有多个执行单元,可以同时负责不同的事情,比如看片的同时,听歌,打游戏。    两个或更多的指令被同时取出、解码并装入一个保持缓冲区中,直至它们都执行完毕。只有有一个执行单元空闲,就检查保持缓冲区是否还有可处理的指令

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

内核态与用户态:

除了在嵌入式系统中的非常简单的CPU之外,多数CPU都有两种模式,即内核态与用户态。通常,PSW中有一个二级制位控制这两种模式。

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

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

内核态与用户态切换

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

请把系统调用看出一个特别的过程调用指令就可以了,该指令具有从用户态切换到内核态的特别功能

异常处理

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

多线程和多核芯片

Moore定律指出,芯片中的晶体管数量每18个月翻一倍,随着晶体管数量的增多,更强大的功能成为了可能,如

  1. 第一步增强:在CPU芯片加入更大的缓存,一级缓存L1,用和CPU相同的材质制成,CPU访问它没有延时
  2. 第二步增强:一个CPU中处理逻辑增多,Intel公司首次提出,称为多线程(multithreading)或超线程(hyperthreading),对用户来说一个有两个线程的CPU就相当于两个cpu,我们后面要学习的进程和线程的知识就是起源于这里,进程是资源单位而线程才是cpu的执行单位。   多线程运行CPU保两个不同的线程状态,可以在纳秒级的时间内来回切换,熟读快到你看到的结果是并发的,伪并行的,然而多线程不提供真正的并行处理,一个cpu同一时只能处理一个进程(一个进程中至少一个线程)
  3. 第三步增强:除了多线程,还出现了包含2个或4个完整处理器的CPU芯片,如下图。要使用这类多核心芯片肯定需要有多处理操作系统


存储器

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

寄存器即L1缓存

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

高速缓存即L2缓存:

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

主存(内存):

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

非易失性随机访问存储ROM(Read Only Memory,ROM)

在电源切断之后,非易失性存储的内容并不会求生,ROM只读存储器在工厂中就被编程完毕,然后再也不能修改。ROM速度快切便宜,在有些计算机中,用于启动计算机的引导加载模块局存在ROM中,另一些I/O卡也采用ROM处理底层设备的控制

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

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



磁盘

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

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

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

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

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

平均寻道时间

机械手臂从一个柱面随机移动到相邻的柱面的时间为寻道时间,找到了磁道就以为找到了数据锁定在哪个圈圈,但是还不走到数据具体这个圆圈的具体位置

平均延迟时间

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

虚拟内存

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

PS:从一个程序切换到另外一个程序,称为上下文切换(context switch),缓存和MMU的出现提升了系统的姓名,尤其是上下文切换



IO设备

CPU和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环。

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

控制器:是查找主板上的一块芯片或一组芯片,控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读取内存

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

设备本身:有相对简单的接口切标准的,这样大家都可以为其编写驱动程序了。要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统。必须把设备驱动程序安装到操作系统中



总线

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

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



启动计算机流程

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

---恢复内容结束---

时间: 2024-11-07 08:44:51

01 基础知识-计算机硬件的相关文章

计算机基础知识--&gt;计算机硬件--&gt;硬件

主板.CPU和内存条 主板:计算机中最大的那块电路板----人的躯干 CPU:计算机的核心部件----大脑 内存条:临时储存的作用 硬盘驱动器和光盘驱动器 主要的外储设备 硬盘:保存计算机的各种数据 光驱:读取光盘数据的设备.

计算机基础知识--&gt;计算机硬件--&gt;概述

微型计算机概述 起源:人们想造出一种代替人思考的机器 诞生:1946.2.15 美国宾州大学 特点:30吨 占地170平方米  1800个电子管 每秒5000次运算 发展:电子管->晶体管->集成电路->大规模集成电路->超大规模集成电路 目前:PC系列微型计算机 个人电脑类型 1.台式机 放在桌面 由主机.键盘.显示器等组成. 2.笔记本 随身携带 3.平板 省略键盘.触摸控制.移动通信性能显著(电话.蓝牙...) 性能稍弱 计算机系统的组成 软件和硬件 硬件:hardware,

汇编学习笔记01(基础知识)

自己在学习C语言的时候, 有的时候碰到自己理解不了的技术点的话, 就无从下手了, 但是这些技术点如果用汇编来理解的话, 可能非常好理解, 也更容易让大家理解, 所以感觉汇编是很强大的, 对我们学习一些其它的高级语言也很有用, 所以希望自己可以对伟大的汇编语言有一定的了解和认知, 对计算机的思维方式也有更进一步的认识, 对自己的编码习惯有一个好的影响或者改变, 同时对自己的能力有些提高吧. 1. 我们首先要知道什么是机器语言? 也就是机器指令的集合, 机器指令也就是一台机器可以正确执行的命令. 机

c++进阶之路01基础知识

一个函数的定义包含四部分:返回类型,函数名,一个括号包围的形参列表(允许为空),以及函数体. c++没有定义任何输入输出(IO)语句,取而代之,包含了一个全面的标准库(SL)来提供IO机制.使用iostream库,它包含两个类istream和ostream,分别表示输入流和输出流.记住流想要表达的是,随着时间的推移,字符是顺序生成或消耗的.标准库定义了4个对象,cin,cout,cerr,clog. cout<<"Hello,world"<<"Welc

编程入门:C语言基础知识全网超全不用到处找了!(文末附清单)

你背或者不背,干货就在那里,不悲不喜 你学或者不学,编程就在那里,不来不去 听到这话的你是否略感扎心? 编程入门:C语言基础知识全网超全不用到处找了!(文末附清单)01基础知识 计算机系统的主要技术指标与系统配置. 计算机系统.硬件.软件及其相互关系. 微机硬件系统的基本组成. 包括:中央处理器(运算器与控制器),内存储器(RAM与ROM),外存储器(硬盘.软盘与光盘),输入设备(键盘与鼠标)输出设备(显示器与打印机).如果大家如果在自学遇到困难,想找一个C++的学习环境,可以加入我们的C++学

&lt;&lt;Python基础教程&gt;&gt;学习笔记之|第01章|基础知识

本学习笔记主要用要记录下学习<<Python基础教程>>过程中的一些Key Point,或自己没怎么搞明白的内容,可能有点杂乱,但比较实用,查找起来也方便. 第01章:基础知识 ------ Jython:      Python的Java实现,运行在JVM中,相对稳定,但落后于Python,当前版本2.5,在TA(Python+Robot)会用到 IronPython:  Python的C#实现,运行在Common Language Runtime,速度比Python要快 >

计算机硬件——基础知识

计算机硬件--基础知识 1.编程语言的作用 语言是用来沟通的,如英语.法语.葡萄牙语等.程序员编程的本质就是让计算机去工作,而编程语言就是程序员与计算机沟通的介质. 2.操作系统和硬件的关系 操作系统负责管理计算机系统中各种独立的硬件,使得它们可以协调工作. 3.应用程序.操作系统与硬件之间的关系 硬件是基础,硬件需要通过操作系统系统控制来启动硬件,并让各个硬件之间相互协同工作,在系统软件的基础上是用户,用户操控的是系统软件,并在系统软件的基础上安装相应的应用程序,来完成用户所需要的工作.所以说

MongoDB基础知识 01

MongoDB基础知识  1. 文档  文档是MongoDB中的数据的基本单元,类似于关系型数据库管理系统的行. 文档是键值对的一个有序集.通常包含一个或者多个键值对. 例如: {”greeting" : "Hello, world!", "foo", 3} 2. 集合(collection) 集合就是一组文档,类似关系型数据库中的一张表. 3. 数据库(database) 多个文档组成集合,多个集合组成数据库.一个MongoDB实例可以承载多个数据库.

Spring笔记(基础知识)01

1.基础知识 01.Spring:轻量级Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建. 02.目标:实现一个全方位的整合框架,实现"一站式"的企业应用开发. 03.内容: a.IoC容器 b.AOP实现 c.数据访问支持:简化JDBC/Hibernate编码    声明式事务 d.Web集成 04.Spring设计理念 Spring是面向bean的编程,IoC(Inversion of Control) ,AOP(Aspect Orient