计算机硬件
    (运算器,控制器)=》CPU
        负责圆形人类程序的硬件是CPU
    存储器
        内存
        外存
    输入设备
        键鼠
    输出设备
        显示器

温故知新:
    1、cpu是从内存内取指令,运算玩的结果存到内存
    2、主存也就是内存,主要的存储。所有读写操作的中转站。
        input:输入的数据输到内存
        output:运算得到的数据从内存输出到显示器
        外存:运行程序的指令,从外存到内存,再到cpu,cpu处理完的数据再返回内存
    3、三大核心硬件
        程序最先保存到硬盘
        程序的运行,从硬盘加载到内存
        cpu从内存取出指令,运行

    4、什么是操作系统?
            操作系统是一个协调、管理、控制计算机硬件资源与软件资源的控制程序
            位于计算机硬件与应用软件之间,起到承上启下的作用
       为什么要有操作系统
            1、控制计算机硬件的基本运行
            2、讲硬件操作的复杂细节封装成简单的接口来提供给应用程序或用户使用
    5、计算机体系的三层结构
        应用程序、用户
        操作系统
        计算机硬件
    6、平台与跨平台
        应用程序的运行平台,或者说用户的使用平台
        平台 = 操作系统+计算机硬件

==========================今日内容:
    人--------------------编程语言-------------------》计算机
                        去包子店                 
                        付款
                        把包子拿回来
                            程序--------》cpu------》硬件
                                        
    day01:计算机基础知识详解
        1、cpu详解
            cpu的分类与指令集
                最重要的就是内部的指令集
                精简指令集&复杂指令集
                
            1.1、x86-64            (*****)
                x86指的就是cpu的型号
                64位指的是cpu一次性能从内存里取出多少位的指令(二进制的数字)
                    内存中的指令------》CPU(解码成二进制)------》硬件
                CPU具有向下兼容性
                    64位即能够运行64位的程序,也能运行32位的程序。
                    64运行32位程序的时候,会把在前面补上32个0,成为64位的二进制。
            1.2、寄存器
                为了能够让CPU尽快从内存中取指令,在CPU与内存之间加一个比内存更快的设备。
                用CPU相同的材质做的,也是基于电工作,断电数据就没了。
                把最关键的数据存在寄存器,提升程序运行速度。容量小。

程序运行速度都是被存储设备所限制,一个程序运行十秒,可能七秒都在等待内存将数据读出来交给CPU。

           1.3、内核态与用户态      (*****)
                设置两个形态就是为了实现应用程序想操作硬件只能通过操作系统,资源分配
                内核态:操作系统工作的状态,所有指令集开放(控制其他硬件指令集&运算相关指令集)
                用户态:应用程序,用于工作的状态,只开放运算相关指令集
                    应用程序---》CPU运算相关指令集

                    操作系统---》控制其他硬件的指令集---》控制硬件相关设备
                    操作系统---》运算相关的指令集
            CPU一直在内核态与用户态之间来回切换,操作硬件为内核态,运行应用程序(仅运算)用户态
            应用程序的运行,涉及到硬件操作,切换到内核态,才能操作硬件。

            1.4、多线程与多核芯片
                摩尔定律:计算机的发展,每隔18个月,芯片中的晶体管数量翻一倍。
                线程指得是每个cpu都有两个线程
                2核4线程:
                    2核带便有两个cpu,4线程值得是每个cpu都有两个线程---》假4核
                4核8线程:
                    4核带便有4个cpu,8线程值得是每个cpu都有两个线程---》假8核
                因特尔,每个核数据交互
                    需要一个更复杂的控制器,控制每个核数据交互
                amd,每个核都独立
                    很难保证数据一致性
        2、存储器
                存不是最重要的,存是为了方便以后取。
                寄存器也就是L1缓存:
                    跟cpu一样快,内存<1kb,下一步要用的数据,1ns(1纳秒)
                高速缓存也就是L2缓存:
                    cpu经常要用的数据,内存4mb,放在高速缓存,2ns(2纳秒)
                内存10ns
            RAM:内存,可存可取
            ROM:“只读内存”,速度跟内存是一样的,通常用于,计算机厂商写死的核心程序(BIOS,基本输入输出,Basic input output system)
            闪存(flash memory)
            CMOS:存取速度慢,断电数据丢失,耗电量极低。主板上的电池给时钟芯片供电,存于CMOS。

            2.1、磁盘结构
                机械硬盘(磁盘):依赖于机械手臂上的磁头读写,通常有两张,也有多张。
                    磁道:磁盘写数据都是一圈一圈的,磁信号。一圈数据,对应遗传二进制。
                        1bit代表一个二进制位
                        8bit比特位 = 1Bytes字节
                        1024Bytes = 1KB
                        1024KB = 1MB
                        1024MB = 1GB
                        1024GB = 1TB
                        1024TB = 1PB

                        出厂商按照1000为进制
                    柱面:
                        每张盘片的同心圆组成了一个虚拟的圆柱形
                        
                    扇区:
                        一个扇区通常为512Bytes
                        站在硬盘的角度,一次性读写数据的最小单位位扇区
                        
                        操作系统一次性读写的单位是一个block块
                        默认1个block = 位8个扇区 = 1096Bytes,可以定制
                        如果要处理的文件很大,可以扩大block的单位,,提升效率,减少IO次数

                    硬盘读写速度
                    IO延迟            (*****)
                        7200转/min
                        取平均值,半圈找到要的数据,7200转/min;120转/s = 一圈需要8ms毫秒
                        半圈需要4ms
                    平均寻道时间:机械手臂转到数据所在磁道需要花费的时间,受限于物理工艺水平,目前机械评判可达到的是5ms。
                    平均延迟时间:转半圈需要花费的时间,受限于硬盘的转速

                    IO延迟 = 两个平均时间
                固态硬盘:
                    由闪存组成,用电工作,读写速度比内存低。
PS:!!!优化程序运行效率:能从内存取数据,就不要从硬盘取,减少IO操作。

            2.2、虚拟内存
                在硬盘上划分一个分区,Linux中的swap分区
                在内存不够用的时候,把内存中当前不需要的数据放到swap分区,给内存腾出地方。

            2.3、IO设备 = 设备的控制+设备 本身
                硬盘插到电脑的接口,接口上的一组芯片,操作系统下发指令给驱动程序---》芯片,芯片再命令硬盘工作。
                操作系统---》驱动程序---》接口

        3、总线
            所有计算机的硬件都集成在主板上,总线就是各个组件之间的连线。
            PCI桥(北桥):连接高速设备,高速缓存,内存,CPU
            ISA桥(南桥):连接慢速设备,硬盘

        4、操作系统启动流程      (*****)
            裸机买来也能开机,硬件都是受软件支配,BIOS(Basic input output system)。
            BIOS:            
                BIOS被写在ROM中,开机默认进入BIOS
2.4、
            裸机:
                CPU---》ROM(BIOS)设置的数据存放于CMOS。#ROM相当于内存,CMOS相当于硬盘。
            
            装机:
                BIOS中设置了,启动项,重启之后,依次扫描,硬盘、光盘···
                找到了引导盘之后,CPU到内存里,执行从引导盘里取到的指令,把引导盘里的系统文件拷贝到硬盘里。
                重启之后,重新进入BIOS,把第一启动项改成硬盘。

            启动流程:(*****)
                1、通电
                2、BIOS检测硬件:CPU、内存、硬盘等
                3、BIOS读取CMOS储存器中的参数,选择启动设备
                4、从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446位引导信息,后64位分区信息,最后两个位标志位)。  #一块硬盘可以当成好几块硬盘。
                5、根据分区信息读入Bootloader启动装载模块,启动操作系统
                6、最后操作系统询问BIOS,获得配置信息。没有,系统通知需要安装;有,就将它们调入内核。

计算机安全:
        要先启动BIOS
        启动优先级改成引导盘
        重启
        本地硬盘上的win7密码
        
BIOS可以设置密码,可以通过把主板上的电池拿下来,CMOS断电,里面的数据就丢失了。

            应用程序的启动流程:
                1、双击exe快捷方式---对应---》exe文件的绝对路径,就是告诉操作系统该路径的应用程序需要执行。
                2、操作系统会根据文件路径找到exe程序在硬盘的位置,控制其代码从硬盘加载到内存
                3、CPU从内存中读取刚刚读入内存的引用程序的代码执行,应用程序完成启动