02你应该了解的计算基础-2

一、CPU详解

  1.CPU分类与指令集

    1.1分类:

      精简指令集(RISC) :指令运行时间短,完成动作很单纯,要做复杂的事情,要由多个指令完成。

        三个臭皮匠顶一个诸葛亮!

        复杂指令集(CISC):每个小指令可以执行较地接的硬件操作,指令多而且复杂,每条指令的长度不同,因为指令执行复杂所以执行每条指令的时间长,但个别指令可以处理复杂的工作。

        相当于一个大型企业,要分工合作,能者多劳,自然需要的时间多,当然也需要头脑简单四肢发达的人来帮我完成简单的工作!

    1.2指令集:CPU的灵魂,出厂自带,有多种指令集的CPU

      控制其他硬件的指令集(小弟要听我的)和运算相关的指令集(自己也要干活

     CPU是计算机的大脑,大脑里集成一系列具体控制身体其他器官做事的指令集,所有站在纯硬件的角度上计算机所有其他组件
都受CPU发出的指令控制。
     编程的目的是通过程序控制计算机硬件工作,代码都会转换成CPU的指令集才能控制其他硬件
      没错,这就是本大爷我----CPU,虽然受程序猿的指令操纵(通过操作系统),可是程序猿也不是谁都能干的不是?
      我出生自带爸爸妈妈给了我强大的大脑(指令集),天生优势,你们羡慕不来,生来就能控制我的小弟们(其他硬件)!

  2.×86_64和×86_32

    ×86:一种架构,32位指令集。看到我别紧张,我没那么高深,我只是CPU的型号!!!

    ×86_64:CPU一次性能够从内存中取出的指令集位数,也就是64位二进制,看到这您就知道×86_32是啥意思了吧?

    ×86_64说:我可以向下兼容×86_32,能在你那运行的在我这完全没问题。

    一条马路能够跑六辆车,自然能跑三辆车,但是跑三辆车的马路能跑六辆吗?

  3.内核态与用户态:代表CPU的两种工作状态******

    内核态:运行程序的是操作系统,可以控制CPU的两种指令集,运算相关的指令集和控制其他硬件的指令集。

    用户态:运行的是应用程序,只能控制CPU的运算状态指令集,不能控制计算机硬件

    总结:应用程序的运行必然涉及到计算机硬件的操作,那就必须从用户态切换到内核态才能实现,所以计算机内部的内核态和用户态是一直在切换的

  4.多线程与多核芯片

    2核4线程:相当于2个CPU,每个CPU有两个线程,伪四核,性能低于四核

               我就是伪装的,屏幕前的你买电脑的时候可不要被骗咯

    4核8线程:相当于4个CPU,每个CPU有四个线程,伪八核,性能低于八核

    解释一下,线程就相当于流水线,每个CPU有两个线程,就是相当于一个房间里装了两条流水线

二、存储器详解:前方高能,五星重点!!!

  1.RAM

    可存可取的存储设备,内存

    主存也是我,我的地位太重要,输入的指令、硬盘传来的数据还有CPU执行完的命令都要往我这存,比银行还银行,我还要输出数据到显示器啥的,C位出道吗(^-^)V!

  2.ROM:只读内存

    存放计算机厂商写死的计算机上的核心程序====BIOS(基本输入输出系统)

  3.CMOS:存取速度慢,断电数据丢失,但是耗电量极低

    BIOS系统在这里读取数据,比如启动项

  4.硬盘:

    1.机械硬盘

      磁道:一圈数据对应一串二进制(1bit代表一个二进制位)

        1024bit = 1KBytes=1KB

        .......

        你知道为啥你买的优盘要比理论的小吗?因为某某人不是按照1024计算,而是1000.....

      扇区:一个扇区通常为512Bytes,站在硬盘的角度,一次性写数据的最小单位是扇区

          操作系统一次性读写的单位是一个block块,对应的是8个扇区的的大小,4096Bytes,可以修改大小

          如果要操作一个足够大的文件,可以修改block块的大小,减少IO操作,提高效率

      柱面:硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。

    2固态硬盘

  5.IO设备

    1.设备控制器

      是查找主盘上的一块芯片或者一组芯片(硬盘网卡声卡都需要插到某一个口上,这个口连的便是控制器)

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

    2.设备本身

      想要调用设备,必须根据接口编写复杂而具体的程序,于是有了控制器,提供设备驱动接口给操作系统,必须把设备驱动程序安装到操作系统中。

  6.IO延迟(机械硬盘)前方高能,五星重点!!!

    1.这里不考虑数据输出的时间,只考虑在磁盘内寻找数据的时间

    2.导致IO延迟的原因

      硬盘的转速是7200r/min,

      机械手臂所在位置刚好就停在磁道开始位置而我需要的数据刚好就在磁道开始和我需要的数据在磁道的最后位置所需的平均时间为平均延迟时间。

      2.1IO延迟时间

        平均寻道时间:机械手臂转到数据所在磁道需要花费的时间,受限于物理工艺水平,目前机械硬盘可达到的水平是5ms

        平均延迟时间:转半圈花费的时间约为4ms,受限于硬盘的转速

        你会算吗?咱们来算一哈!臣服在我的运算能力下吧!!!

        7200r/min = 120r/s ===>1r对应8ms=====>0.5r所需时间就是4ms

        IO延迟时间 = 平均寻道时间 + 平均延迟时间

    3.优化程序运行效率的核心:前方高能,五星重点!!!

      程序运行无法避免与内存的接触,尽可能的减少与硬盘的IO操作

三、操作系统和程序启动流程:重点重点重点,重要的说三遍!

    1.操作系统启动流程

        1.1计算机通电

        1.2CPU执行ROM芯片的中的BIOS固化程序

        1.3BIOS系统检查计算机硬件各种性能

        1.4读取CMOS中的数据,读取启动项

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

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

        1.7然后操作系统询问BIOS,以获得配置信息

    2.应用程序启动流程

        2.1双击exe快捷方式文件,告诉操作系统去找该文件的绝对路径

        2.2操作系统找到exe的的绝对路径,控制CPU让其数据加载到内存中

        2.3CPU在内存中读取数据并执行,应用程序启动完成

四、扩展

  BIOS(basic input output system)简介及操作系统启动流程-详细版 (更加详细请参见引用:https://www.cnblogs.com/sxwz/p/11941805.html)

    ''pull oneself up by one's boots traps"拽着鞋带把自己拉起来

    计算机启动时很矛盾的过程:必须运行程序计算机才能启动,但是计算机不启动就无法运行程序。

    1.1计算机通电后,读取开机程序(BIOS,被刷入ROM芯片)

    1.2硬件自检:计算机硬件能否满足运行的基本条件

    1.3BIOS把控制权交给下一阶段的启动程序

       首先BIOS要知道下一阶段的启动程序具体放在哪一个设备?比如优盘、本地硬盘,此时还需要一个外部存储设备的排序,排在前面设备被优先转交,这种顺序叫启动顺序。

    1.4 主引导记录MBR

      1.4.1 BIOS按照启动顺序把控制权交给排在第一位的存储设备,根据启动顺序读取相应存储设备的MBR,放入内存中

      1.4.2计算机读取设备的第一个扇区(512字节,就叫做主引导记录),如果扇区最后两个字节是0×55和0×AA,表示可以启动,如果不可以就把控制权转给下一个设备。

      1.4.3主引导记录的主要作用是告诉计算机到按照启动顺序到哪个位置去找操作系统,并把控制权交给存有操作系统的存储设备。

          主引导记录的结构:1-466字节,调用操作系统的机器码

                    467-510字节,分区表  

                     511-512字节,主引导记录签名

          分区表的作用是将硬盘分成若干个区,一个硬盘最多能分四个一级分区(主分区)。每个分区都能安装不同的操作系统,所以四个主分区中只有一个是激活的。

     1.5 加载操作系统的两个方式:

        1.5.1通过分区加载操作系统:

          当四个主分区中只有一个是激活的,计算机就会读取激活分区的第一个扇区(卷引导记录:告诉计算机,操作系统在哪个分区),把控制权给该分区,此时会加载操作系统。

        1.5.2 通过启动管理器加载操作系统:

          当主分区里有分了更多个分区(扩展分区),如果操作系统存在扩展分区中,会通过启动管理器加载操作系统。

          计算机读取前466个机器码后,不再把控制权交给某一个分区,而是先运行启动管理器(boot loader),由用户选择操作系统。

     1.6 控制权交给操作系统后,操作系统的内核会首先被载入内存。

     1.7 向BIOS查询各种硬件的状态。

  

posted @ 2020-03-03 18:10  微信搜索-程序媛小庄  阅读(215)  评论(0编辑  收藏  举报