三连问!!!Q&A
(1)Q:python是啥?
A:python是一门编程语言,是程序员与计算机沟通的介质。
(2)Q:什么是编程?
A:程序员把自己的思维逻辑写才来,编程的结果就是一堆文件。
(3)Q:为什么编程?
A:让计算机按照人的思维逻辑执行事件,减少人力资源消耗。
So:一套完整的计算机系统分为:计算机硬件+操作系统+应用软件
【PS:0基础看这里:操作系统实质也是软件,但是电脑一开机就运行,用来控制应用软件(即应用程序)】
So:python的编程之路分为:计算机硬件基础+操作系统基础+python编程
关于计算机硬件主要掌握重点:CPU+存储器(内存+硬盘)
一、计算机硬件的五大组成部分
1、整体介绍
控制器:计算机的指挥系统
运算器:实现逻辑判断运算与数学运算 注:CPU=控制+运算
存储器:(1)内存储器(主存储器,内存):通电有数据,断电没数据;(2)外部存储器(一般都是机械硬盘或者固态硬盘):数据永久保存
内存储器的运行速度>>>>外部存储器【N个数量级的差别】;但是一般软件(应用程序)都是安装在外部存储器(硬盘)。
输入设备:input
输出设备:output
2、整体联系:
(1)存储器是I/O设备【可以往里面输入数据,也可以输出数据】
(2)控制器+运算器=CPU
(3)CPU、内存(主存储器)以及其他I/O设备都是由一条系统总线(bus)连接起来,并通过总线与其他设备通信。
3、关系举例(人)
CPU是人的大脑,负责控制全身和运算;
内存是人的记忆,负责临时存储;
硬盘是人的笔记本,负责永久存储;
输入设备是耳朵、眼睛或者嘴巴,负责接收外部的信息存入内存;
输出设备是你的面部表情或者屁股,负责经过处理输出后的结果。
【以上这些设备都是通过总线连接,总线相当于人的神经】
二、处理器CPU【控制器+处理器】
1、功能:控制+运算(逻辑运算+数学运算)
工作方式:取指令→分析→执行
2、CPU读取的数据都是从主存储器(内存)来的!【CPU不能直接从硬盘读数据】
因为:主存储器的运作速度极高(基于电工作),而外部存储器的运作速度低(基于磁盘工作,看转速)
所以:所有的的软件运行都是→硬盘先读到内存,之后CPU再从内存读取数据。
【此处:若电脑内存较小,随着软件数的增多,电脑越来越卡】
3、问:操作系统是软件,操作系统被安装到哪了?
析:软件就是别人写的代码,被安装在存储器中,在外部存储器(硬盘)中【因为断电不消失】。每个电脑都有相应的硬盘(外部存储器)来安装我的操作系统。
So:操作系统是被存放在硬盘【windows中有C盘来专门安装操作系统软件】
若想让电脑运行速度快(运行操作系统的速度快,本次指:开机快)→把系统硬盘换成固态硬盘。Why?
Because:(1)开机过程:操作系统软件先从硬盘到内存,然后CPU从内存上读数据,执行指令
(2)固态硬盘的速度>>>>>机械硬盘
So:个人笔记本想提高速度(本次指:开机速度),可以设置一块固态硬盘
!!!强调!!!:程序(即软件)要想运行,都是先从硬盘到内存,然后CUP才可以从内存中运行程序。【软件但凡要运行,就要“跑到”内存中,由CPU在内存中运行软件】
4、CPU又称微处理器,用于控制和运算,相当于“人的大脑”
(1)在计算机中,CPU常被制为一块具有特定功能的芯片,称为微处理器,芯片里有编写好的微指令集
(2)在主机上的所有操作或者任何软件的执行,最终都要转化成CPU的指令去执行
(3)比如:输入输出,阅读、视频、上网等这些都要参考CPU是否内置有相关的微指令集才行。
【注:CPU中的一些微指令集,对应着一些基本的功能,CPU的指令集不同,“干”的活就不同】
5、CPU的分类→“微指令集”
思考:笔记本上贴的Intel、AMD是咋回事?
(1)精简指令集(Reduced Instruction Set Computing,RISC)
特点:多用于学术领域(大型机、大型工作站);指令短、速度快【但若想完成复杂操作,需要一堆精简指令集】
(2)复杂指令集(Complex Instruction Set Computing,CISC)
特点:多用于个人计算机;一条指令特别长,其功能特别多,运行速度慢
现在CPU构架:×86 【表示:CPU的一种指令集】
6、问:电脑中32位、64位的区别是?
答:CPU是具体干活流程:取指令→分析→执行
从内存中取指令,32位、64位指:CPU一次能取指令的最大量。(位:比特位)
一般情况下:电脑分为32位、64位(每次取指令的最大集),指电脑中CPU的构架:×86(32位),×86_64(64位)
计算机中的存储都是二进制,一个二进制就是一个bit,比如:111是3个bit(基于二进制)
7、CPU的向下兼容性【即:64位的能兼容32位的,反过来不行】
比如:机器是64位的,能安装32位的软件【反过来不成功】
因为:32位的软件下载下来存放在硬盘,都是二进制,读到内存中也是二进制(32位),64位的电脑安装时,CPU从内存读取64位的指令,实际软件只占32位的指令,其余为空指令,能成功!!!
注:以后慢慢都是64位的操作系统
8、CPU的重点总结---->面试!
(1)CPU的功能:控制+运算
(2)CPU的工作方式:取指令→分析→执行
(3)CPU从哪取数据?内存
(4)×86_64的含义?×86是一种CPU的指令集,64指:(64位)是CPU一次能从内存中读取的最大指令集
9、计算机最核心的硬件:CPU、存储器(内存+硬盘),这三个分别干啥事?
(1)CPU是具体干活的,来执行其他程序
(2)内存和硬盘都是存储设备
(2)_1内存优点:速度快;缺点:无法永久保存数据
(2)_2硬盘优点:能永久保存数据,断电后数据仍存在;缺点:速度慢
10、CPU从内存中读取指令集,但是等待指令集的时间是浪费的,怎么提高效率呢?
或者提问为:CPU对于下一条指令仍然要用到的数据,若仍从内存中取,则等待时间浪费,怎么提高效率呢?
析:此时若想提升CPU效率,就是缩短等待时间(即输入/输出时间 I/O时间),因此想要一个存储速度>内存的存储设备,所以用寄存器【其材质和CPU相同,但是价格贵】
总结:因访问内存以得到指令或数据的时间比CPU执行指令花费的时间要长的多
So 所有CPU内存都有一些用来保存关键变量和临时数据的寄存器。
So:此时:CPU可以用寄存器中读取指令数据,降低等待时间(I/O时间),提高效率。
PS:寄存器的造价太贵,所以容量较小,常用来保存关键变量和临时数据 【寄存器在CPU内部】
三、存储器
1、理想化的存储器:速度快+容量大+价格便宜 【速度快就降低了CPU等待存储器的延迟】
CPU主要从内存中存取数据,但为了减少CPU与内存之间的速度差(即:CPU等待内存的时间),则采用以下解决方法:
(1)CPU马上要用到的关键数据存放在寄存器中;
(2)有可能经常访问的数据,将其存放在高速缓存中。
【寄存器+高速缓存---->降低I/O时间,让CPU更快的从内存获取数据】
2、存储计量单位
8bit=1Bytes 1024Bytes=1KB 1024KB=1MB 1024MB=1GB 1024GB=1TB 1024TB=1PB
【但是:实际买的硬盘若为8G,格式化后没有8GB】
因为硬盘生产商的计量单位是:1GB=1000MB=1000*1000KB=1000*1000*1000Bytes=1000*1000*1000*8bit
3、存储器分为:RAM(被称为主存)可读可写 特点:易失存储性,断电后数据全部消失
ROM只读,不能当主存 特点:断电后数据不消失
ROM常用于存放:机器一出场就已经写好的程序(比如主板上的BIOS程序就存储在ROM中)
4、EEPROM(Electrically Erasable PROM0)称为“电可擦除可编程ROM” and 闪存(flash memory)
【注:这两者的特点:可读可写+永久存储(断电后也存在)】
速度:内存>闪存>磁盘
特点:都是可读可写,但是内存中的数据只有通电时存在,但是闪存和磁盘的数据都能永久存储。
5、还有一类存储器:CMOS 特点:易失性(断电就消失)
CMOS主要存储:当前时间和日期;配置的参数(比如:哪一个是启动磁盘)
【BIOS程序中的配置的参数存储在CMOS中】
注:CMOS由一小块电池供电,若想重置BIOS参数,就把电池抠下来,且CMOS存储器断电数据消失。====>没有绝对的安全!!!
6、问:操作系统软件是存放在磁盘中的,但是具体放在哪呢?!
注:若回答C盘,是×。因为C盘、D盘、E盘....是一块硬盘分区的概念。
该问题的实质:什么样的程序用来控制机器一通电的流程呢?
答:BIOS程序(Basic Input Output System,基本的输入输出程序),它存放在ROM中。
【一开机,机器就去读BIOS程序中设置的数据,来控制计算机开机阶段的运行,通过BIOS程序中设置的Windows操作系统软件在哪个盘,可知道其具体位置。(一般都是C盘啦~~~)】
【若裸机没有安装Windows操作系统之前,实际就是带有一套操作机制的!此时:BIOS为操作系统,CMOS为BIOS的硬盘】
四、磁盘【专门介绍】
平均寻道时间:5ms 【受限于目前硬件水平】【即:平均寻找磁道的时间→机械手臂如何滑到你指定的磁道的时间】
但是滑到磁道上就能找到需要的数据???
No!!!因为:磁道是一个圈,一圈中可能某个点开始是我的数据!So与磁道本身的转速也有关!!!
平均延迟时间:4ms 【平均延迟时间→转半圈花费的时间】【针对:磁盘的转速为:7200转/min,其余转速的磁盘可通过下面的方法自己推算】
析:7200转/min 磁盘1分钟转7200圈,转一圈花费时间60/7200=0.008s=8ms,则转半圈花费时间4ms
在磁盘上寻找数据时:1)首先机械手臂先滑到指定磁道上;【平均寻道时间:5ms】;
2)在正确磁道上后,根据磁盘本身的转动,再在该道上找到我需要的数据【平均延迟时间:4ms】。
So:在磁盘上找数据,必须要有9ms的延迟!!!【因此:磁盘慢就慢在9ms的延迟!!!后面的读取速度很快!!!】
若做一次I/O,即:把指令发给硬盘,硬盘就把数据加载到内存。
误解:磁盘找到数据后,把数据往内存上读的时候,这段时间慢===>这是错的!!!
把数据往内存上读的时候,这段时间不会慢,因为:硬盘、CPU、内存全部连在主板上,主板上连接线之间的通信速度是光速!!!
磁盘的延迟实际就是:寻道时间+磁盘本身的转速
注:实际上本小节只是基于“一次I/O”就能把数据读完,这是不能的!!!对于一盘的磁盘来说,一次I/O只能读取512个扇区。
读一次大文件,需要很多I/O,So有很多延迟,9ms的延迟会被方法!!!
五、总结
1、计算机的存储设备分为:内部存储设备(断电数据消失)=>内存
外部存储设备(断电数据不消失)=>外存
2、内部存储器(主要是:内存)=>存储信息速度快,断电后存储内容全部消失
3、外部存储器(主要是:磁盘)=>内存信息不受断电影响,速度比内存慢
磁盘分为:硬盘(主要):容量大、存储信息量大、一般在机箱里
软盘(次要):容量较小、存储信息量小、一般在机箱外
PS:一般说磁盘都是指硬盘
4、存取信息的速度:内存>硬盘>软盘
5、在计算机的主板上有一个基本的输入输出设备(Basic Input Output System,BIOS)
BIOS就相当于一个小的操作系统,它有底层的I/O软件,包括:读键盘、写屏幕、进行磁盘I/O,该程序存放在CMOS中。
BIOS的启动流程: 【重要!】
(1)计算机加电;
(2)BIOS开始运行,检测硬件:CPU、内存、硬盘等;
(3)BIOS读取CMOS存储器中的参数,选择启动设备;
(4)从启动设备上读取第一个扇区的内容(MBR主引导记录512直接,前446为引导字节,后64位分区信息,最后两个为标志位);
(5)根据分区信息读入BootLoader启动装载模块,启动操作系统;
(6)然后操作系统询问BIOS,以获得配置信息
【注:自己理解:对于每种设备,系统会检查其设备驱动程序是否存在。如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将他们调入内核,然后初始有关的表格(比如进程),创建需要的进程,并在每个终端上启动登录程序或GUI】