• 计算机基础——硬件


            硬件

    作为一名即将统治世界的程序员,我们可以用我们指间的力量改变世界,但总而言之也要懂一些底层的东西嘛。

      

    程序员编程的本质就是让计算机去工作,而编程语言就是程序员与计算机沟通的介质

     

    程序员要想让计算机工作,必须知道计算机能干什么,怎么干的,这也就是我们必须学习计算机基础的原因。

      一套完整的计算机系统分为:计算机硬件,操作系统,软件(程序员开发的就是软件),如下图。因而我们的python编程之路分为计算机硬件基础,操作系统基础,和python编程三部分,就让我们先从计算机硬件学起吧!  好了不说废话了,一起来学习吧!

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

      编程语言就是程序员与计算机沟通的介质 应用程序通过操作系统来控制硬件

    一台简单的计算机可以抽象成CPU、内存以及I/O设备都由一条系统总线(bus)连接起来并通过总线与其他设备通信

     

     

     

    理解各部分功能的一个简单的方法是,把计算机各部分组件往人的身上套,比如

    cpu是人的大脑,负责运算

    内存是人的记忆,负责临时存储

    硬盘是人的笔记本,负责永久存储

    输入设备是耳朵或眼睛,负责接收外部的信息传给cpu

    输出设备是你的表情,负责经过处理后输出的结果

    以上所有的设备都通过总线连接,总线相当于人的神经

    计算机硬件有处理器、存储器、磁盘、磁带、总线、

    处理器

     

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

    计算机的大脑cpu,他从内存中取指令->解码->执行,然后再取指->解码->执行下一条指令,周而复始,直至整个程序被执行完成。

    因为内存访问数据的时间远远大于cpu等待指令的时间,所以所有CPU内部都有一些用来保存关键变量和临时数据的寄存器 对于开发人员来说最后一中寄存器最为重要,这个寄存器包含了条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入。在系统调用和I/O中,PSW非常非常非常非常非常非常重要.

    处理器的设计和改变

    1.最开始取值、解码、执行这三个过程是同时进行的,这意味着任何一个过程完成都需要等待其余两个过程执行完毕,时间浪费

    2.后来被设计成了流水线式的设计,即执行指令n时,可以对指令n+1解码,并且可以读取指令n+2,完全是一套流水线。

      

    3.超变量cpu,比流水线更加先进,有多个执行单元,可以同时负责不同的事情,比如看片的同时,听歌,打游戏。

    两个或更多的指令被同时取出、解码并装入一个保持缓冲区中,直至它们都执行完毕。只有有一个执行单元空闲,就检查保持缓冲区是否还有可处理的指令。

      

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

      CPU的两种工作状态

    内核态与用户态

    内核态

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

    用户态

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

    用户态与内核态切换

      用户态不能够直接调用硬件来进行操作,但是生活中总会遇到,比如你点开一个播放器他是如何播放的呢?——用户程序当需要调用硬件来使用时,通过特定的指令——系统调用来实现,通过用户态转变成内核态来调用硬件来使用的。

    存储器

      多线程和多核芯片

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

     L1

    I.第一步增强:在cpu芯片中加入更大的缓存,一级缓存L1,用和cpu相同的材质制成,cpu访问它没有时延

    II.第二步增强:一个cpu中的处理逻辑增多,intel公司首次提出,称为多线程(multithreading)或超线程(hyperthreading),对用户来说一个有两个线程的cpu就相当于两个cpu,我们后面要学习的进程和线程的知识就起源于这里,进程是资源单位而线程才是cpu的执行单位。

    多线程运行cpu保持两个不同的线程状态,可以在纳秒级的时间内来回切换,速度快到你看到的结果是并发的,伪并行的,然而多线程不提供真正的并行处理,一个cpu同一时刻只能处理一个进程(一个进程中至少一个线程)

    III.第三步增强:除了多线程,还出现了傲寒2个或者4个完整处理器的cpu芯片,如下图。要使用这类多核芯片肯定需要有多处理操作系统

                                    

                                

                        以上是两家主流cpu

    计算机中第二重要的就是存储了,所有人都意淫着存储:速度快(这样cpu的等待存储器的延迟就降低了)+容量大+价钱便宜。然后同时兼备三者是不可能的,所以有了如下的不同的处理方式

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

     

      寄存器即L1缓存:

    用与cpu相同材质制造,与cpu一样快,但价格高昂,不适合大规模使用

      高速缓存即L2缓存:

    高速缓存L2是一种介于寄存器和内存之间的产物,他的速度快于内存慢于寄存器,造价适中。

      缓存是一个好方法,在现代cpu中设计了两个缓存,再看4.1中的两种cpu设计图。第一级缓存称为L1总是在CPU中,通常用来将已经解码的指令调入cpu的执行引擎,对那些频繁使用的数据自,多少芯片还会按照第二L1缓存 。。。另外往往设计有二级缓存L2,用来存放近来经常使用的内存字。L1与L2的差别在于对cpu对L1的访问无时间延迟,而对L2的访问则有1-2个时钟周期(即1-2ns)的延迟。

    内存:

    内存是计算机必不可少的存储设备,他可以运行大于他的软件,在服务器中通常还有交换分区swap,主存的易失性存储,断电后保存的数据会消失。市面上还有一种内存ROM,是一种只读不易失的,还有EEPROM 电可察rom还有闪存可多次rw的存储设备,还有cmos,纽扣电磁,他是存储主板时间的,一块可用5-6年。

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

                                        

     

     

    磁盘低速的原因是因为它一种机械装置,在磁盘中有一个或多个金属盘片,它们以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的出现提升了系统的性能,尤其是上下文切换
     

    五、磁带

    磁带是一种大容量存储设备,他价格低廉,存储量大,是一些企业容灾备份的首选,缺点是I/O速度慢。

    六、总线

    四小节中的结构在小型计算机中沿用了多年,并也用在早期的IBM PC中。但是随着处理器和存储器速度越来越快,单总线很难处理总线的交通流量了,于是出现了下图的多总线模式,他们处理I/O设备及cpu到存储器的速度都更快。

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

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

                                                                    

    六、操作系统启动流程

    下三层设备启动流程

     

    加载bios 读硬盘第一个扇区mbr主引导记录 读硬盘上的bootloader(最常见的是grub查询具体位置加载哪段代码) 启动kernel  bios--mbr--bootloader(grub常用的)--kernel

     

    七、应用程序启动流程

    上三层设备启动流层

      应用层序调用操作系统,操做系统找到层序所在硬盘,加载到内存,内存加载到cpu上,应用程序 cpu用户态,系统调用到内核态 调用硬件,完成启动。

     

  • 相关阅读:
    HYSBZ 3813 奇数国
    HYSBZ 4419 发微博
    HYSBZ 1079 着色方案
    HYSBZ 3506 排序机械臂
    HYSBZ 3224 Tyvj 1728 普通平衡树
    Unity 3D,地形属性
    nginx 的naginx 种包含include关键字
    Redis 出现NOAUTH Authentication required解决方案
    mysql 8.0出现 Public Key Retrieval is not allowed
    修改jar包里的源码时候需要注意的问题
  • 原文地址:https://www.cnblogs.com/DE_LIU/p/7150533.html
Copyright © 2020-2023  润新知