01-01 计算机核心基础
01-01 计算机核心基础
一、python是一门编程语言
1、什么是语言?什么是编程语言?为什么要有编程语言?
![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200307210124767-1048457489.jpg)
![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200307210129076-958097683.gif)
![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200307210135776-1779204760.gif)
-
语言就是一种事物与另一种事务沟通的表达方式,就是人与人之间沟通的介质。
-
编程语言本质就是一门语言,就是人与计算机之间沟通的介质。
-
在编程的世界里,计算机就好比是人的奴隶,人与计算机沟通的目的就是为了奴役计算机,让计算机按照人的思维逻辑去工作,从而把人力解放出来。
2、什么是编程?为什么要编程?
-
编程就是人们把自己想让计算机做的事情,也就是自己的思维逻辑,用变编程语言表达出来并写到文件里。(这一系列的文件就是程序)
-
编程的目的就是让计算机按照人类的思维逻辑去工作,从而解放人力。
二、计算机基础
1、什么是计算机
![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200307211452864-1927608610.gif)
- 计算机俗称“电脑”,也就是通电的大脑,包含了人对计算机的终极期望,希望它能像人脑一样去工作。
2、为何要有计算机
- 为了执行人类的程序,从而把人类解放出来。
3、计算机五大组成部分
大前提:计算机所有的组成部分都是模仿人类的某一功能或器官。
1、控制器
作用:是计算机指挥系统,负责控制计算机所有其他组件如何工作。
类比:控制器 =》 人类的大脑
2、运算器
作用:负责数学运算和逻辑运算
类比:运算器 =》人类的大脑
3、存储器(I/O设备)
内存(基于电工作):存取数据快,断电数据丢失,只能临时保存数据
外存(硬盘,基于磁工作):存取数据慢,断电数据不丢失,可以永久保存数据
类比:
内存 =》人类的大脑的记忆功能
外村 =》人类的笔记本
4、输入设备(input)
键盘,鼠标
类比:人的眼睛、耳朵
5、输出设备(output)
显示器,打印机
类比:人说的话、写出的文章
4、一个程序的运行与三大核心硬件的关系
![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200307210912842-1371212195.gif)
人与计算机的关系链:
人 ----------编程语言--------------》计算机
举例执行如下程序:
1、去买包子
2、付钱
3、把包子叼回来
- 按照上诉例子,我们得知我们买包子,付钱,以及把包子叼回来过程,我们看作是程序的运行过程,而每次去买包子这件事的过程,总不能每次都需要交代,我们需要保存这种状态,那我们计算机中需要硬盘保存这种状态,那么我们就能得出以下结论。
- 我们编写的程序一定是要运行在硬件之上,我们站在硬件的角度,与运行程序相关的三大核心硬件为:CPU、内存、硬盘
- 总结(重点):程序最先是存放在硬盘之上,程序的运行一定是事先把程序的代码加载到内存,然后cpu从内存中读取指令执行。
由👆上面这些知识点我们知道,我们只是简单的概括了下计算机的基础知识,下面我们来详细了解计算机的核心基础吧👇:
https://www.cnblogs.com/yang1333/p/12398658.html
三、操作系统
![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200307211210904-1878123914.gif)
![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200307211815354-106705586.gif)
![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200307211236903-88011786.gif)
1、操作系统的由来
- 我们要知道计算机硬件是死的,应该由人的程序去控制它,那么我们称这种程序叫控制程序,那么控制计算机硬件的有了,但是我们没有丰富的功能,这个时候我们就需要许多应用软件来支撑这种丰富功能,因此我们总结出以下三种层面的概念:
用户/应用程序(暴风影音、QQ、快播)
操作系统:控制程序(windows、linux)
计算机硬件
2、操作系统的概念及作用
注意集中,我们开始总结了👇:
-
操作系统的概念(重点):操作系统是一个协调、管理、控制计算机硬件资源 与 应用软件资源的控制程序,它位于计算机硬件与应用软件之间,起呈上启下的作用。
-
操作系统的意义(作用 ):1、控制计算机硬件的基本运行。2、把使用硬件的复杂操作封装成简单的功能,给上层的应用程序使用。
-
举个例子来说:我们刚用电脑的时候,老师打开指着屏幕说:“啊!同学门这个东西就是文件,啊!我等下把今天的作业写到里面。”刚刚我门上面老师说的文件是什么呢?老师把作业又是怎么写到里面的呢?我们来想,老师双击开打文件是不是就涉及到,计算机把那个文件从硬盘加载到内存,以及老师写完笔记存回电脑,是不是就是计算机把文件写回硬盘存着了呢?那这个文件是什么?
-
其实我们发现,这个文件就是操作系统提供给应用程序/用户操作硬盘的一种功能(重点)
3、程序的区分
-
我们知道,计算机的硬件是死的,计算机硬件的运行都受软件控制,所以说软件相当于计算机的灵魂。
-
具体来说软件应该分为2种:1、应用软件:应用程序相关逻辑。2、系统软件:用来控制底层硬件。
4、计算机系统三层结构
- 应用程序
- 操作系统
- 计算机硬件
5、平台
主要分为平台与跨平台2个概念:
-
平台 = 计算机硬件 + 操作系统
-
软件的跨平台性指的是:我们写出的程序,在任何一个平台中,都能正常运行,这就叫跨平台。跨平台是衡量一款软件质量高低的一个非常重要的指标
四、看图总结,了解内存为何称之为主存![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200303132841022-1796872091.png)
-
CPU存取的 数据和指令 都来自于内存
-
由上图我们总结出,因为内存称之为主存,主存储器内的数据则是从输入单元传输进来,而CPU(这里由控制单元+算数逻辑单元构成)处理完处理完毕的数据也必需先写回主存储器中,最后数据才从主存储器传输到输出单元。
五、计算机基础知识详解
1、CPU详解
1.1 CPU的分类与指令集
- 前言:程序员控制的其实是cpu这个组件,由cpu这个组件帮我们下发控制其他组件的指令。
- 指令集:把程序员控制cpu的指令,转成cpu操作某个组件的指令。这些指令不会自发的运行,由人类控制它才能运行
- cpu的分类:精简指令集、复杂指令集。
- 精简指令集:指令集简短,完成的事情,非常的简单。优点:不容易错,更稳定。缺点:实现复杂的操作,需要的指令集就会成堆,才会完成这一件事。作用:争对稳定的需求,争对大型的计算机架构的服务器,它就需要精简指令集。(例子:网络设备,服务器等)
- 复杂指令集:单条指令比较复杂。优点:单条指令集完成的事情比较多,意味着完成复杂的事,只需要几条就够。缺点:单挑指令比较复杂,容易出错,不稳定。作用:争对功能更丰富,更强大,因该需要cpu内部的复杂指令集。(例子:个人电脑)
- 拓展了解:中国计算机硬件行cpu行业的落后,更多的是cpu精简指令集的开发,做上层的开发,尤其是涉及到硬件方面,是比较薄弱的。
1.2 x86-64(重点)
- x86(掌握):指的是CPU的型号,或者说cpu架构的一种统称。
详细地讲,注意详细信息来了👇
最早的那颗Intel发明出来的CPU代号称为8086,后来在8086的基础上又开发出了80285、80386....,因此这种架构的CPU就被统称为x86架构了。
由于AMD、Intel、VIA所开发出来的x86架构CPU被大量使用于个人计算机上面,因此,个人计算机常被称为x86架构的计算机!
程序员开发出的软件最终都要翻译成cpu的指令集才能运行,因此软件的版本必须与cpu的架构契合,举个例子,我们在MySQL官网下载软件MySQL时名字为:Windows(x86,32-bit),ZIP Archive 或者 (mysql-5.7.20-win32.zip)
我们发现名字中有x86,这其实就是告诉我们:该软件应该运行在x86架构的计算机上。
- 64(掌握): cpu的位数,指的是cpu一次性能从内存中取出多少位二进制指令,64bit指的一次性能从内存中取出64位二进制指令。注意:CPU的取主要决定于内存一次性能给多少二进制指令。
二进制是怎么来的呢❓
内存基于电信号工作,所以人为的定义,高电频代表数字1,低电频代表数字0,0101之间高低电频的变化,就类比出了二进制。
- CPU向下兼容性(掌握):x86-64的cpu既能运行32位的软件也能运行64位的软件。
为什么cpu具有向下兼容性❓
我们知道cpu取的指令集数,取决于内存提供的指令集数。举个例子:cpu与内存的关系就像车道与车的关系,车道:cpu的每次读取指令集数量 车:内存最大提供给cpu的指令集数,车道能越宽,一次性能容纳车的个数也就越多。
- 拓展:64位的cpu读取提供32位指令集的内存,会在32位之前补全32个0。
1.3 内核态与用户态(重点:面试的时候要用、平常写程序的时候也要用)
# 1、什么是内核态与用户态?
"""
CPU工作的两种状态,就是cpu的运行状态,也叫计算机的运行状态
"""
# 2、为什么cpu要有这两种状态?
"""
避免代码进行潜在微信的操作,防止给操作系统带来隐患。
"""
# 3、了解cpu的2种指令集状态
"""
我们已知cpu是计算机最核心的硬件,它里面的指令集是cpu最核心的硬件,因此cpu有2种指令集状态:分为控制其他硬件的指令集、运算相关的指令集
"""
# 4、内核态
"""
运行的程序是操作系统,也就是操作系统当前工作的状态,也就是说当前状态下,cpu中所有的指令集开放(控制其他硬件的指令集 + 运算相关的指令集),可以操作硬件。
总结(掌握):运行的程序时操作系统,可以操作硬件。
"""
# 5、用户态
"""
运行的程序是应用程序,当前状态cpu中只开放运算相关的指令集,不能操作硬件。
总结(掌握):运行的程序是应用程序。不可以操作硬件。
"""
# 6、用户态与内核态的切换
"""
在什么情况下会发生用户态与内核态的切换?
应用程序的运行涉及到计算机硬件的操作,那就必须从用户态切换到内核态才能实现,因此计算机工作时频繁的发生内核态与用户态之间的转换。
总结(掌握):应用程序的运行涉及到计算机硬件的操作,就会发生内核态与用户态之间的转换。
"""
1.4 多线程与多核芯片
# 1、了解moore定律
"""
moore定律指出,计算机芯片的晶体管数量每18月翻一倍,到现在为止这个定律以及不太确切了。
"""
# 2、2核4线程 与 4核8线程
"""
2核代表有2个CPU,4线程指的是每个CPU都有2个线程,通常也叫假4核。
4核代表有4个CPU,8线程指的是每个CPU都有2个线程,通常也叫假8核。
"""
2、存储器
2.1 引入
- 结构从上到下:cpu,寄存器,高速缓存,内存,硬盘,磁盘
- 为了提高cpu读取数据的速度,所以在cpu与磁盘之间引入了内存,然后cpu从内存中读取数据其实也是慢的,所以之间加入的高速缓存,高速缓存还是不够块,又在cpu与高速缓存之间又增加了寄存器,这样一步一步提高cpu读取数据的速度。
- 寄存器: 使用cpu同等材质制造而成,在cpu内部集成,cpu运行下一步操作立马需要的指令。
- 高速缓存:存放cpu经常使用的数据。cpu读取数据的时候,先从高数缓存中查看自己所需要的数据,如果有直接从高速缓存中取走,速度很快2ns(这叫高速缓存命中)。如果没有再跑到内存中。
2.2 RAM
![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200308102506126-681146228.gif)
- RAM 英文全称 random access memory,又叫随机存取存储器。
- 可存可取内存,断电数据丢失,就是我们通常所说的内存。
2.3 ROM
![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200308102724264-944315238.gif)
- ROM英文全称ready only memory又叫只读存储器。
- 只读内存,出产就有。为了保证安全性计算机产商出产就往ROM中写死一段核心程序。这段核心程序叫BIOS(BIOS英文全称basic input output system,又叫基本输入输出操作系统),保证计算机在没有任何操作系统的前提下,计算机可以启动。
2.4 CMOS
![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200308102749721-616606040.gif)
- 存放BIOS程序产生的数据,比如:启动设备的优先级等。
- 缺点:数据容易丢失,断电数据丢失
- 优点:耗电量极低,主板电池为时钟芯片供电,时钟芯片存放与CMOS中。(拓展:主板电池使用寿命3~5年)
2.5 硬盘
![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200308102846557-1149766555.gif)
![](https://img2020.cnblogs.com/blog/1402974/202003/1402974-20200306232243267-1439346237.png)
2、机械硬盘的组成部分
2.1 磁头:负责读写数据。
2.2 磁道:磁盘的一圈圈数据,对应一串二进制。看到👆面图了吗?那个一圈圈的就是。单位换算如下:(注意:严格区分大小写,1kb是1kbit 而不是 1kBytes。小写b表示比特位,大写比表示字节。)
1bit(比特位) = 8Bytes(字节)
1024Bytes = 1KBytes
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
拓展:对应产商的硬盘存储单位1000表示为一个单位,例200G=200*1000*1000B
2.3 扇区:硬盘的1次性读写数据的最小单位就是扇区。1个扇区为512Bytes。
由扇区拓展出操作的1次性读写单位:操作系统的1次性读写的单位是1个block块,blcok的概念对应的是8个扇区的大小,也就是4096Bytes。操作系统攒够了block块的容量才交给硬盘,以此来减少与硬盘打交道的次数,从而减少IO次数。(block块大小可以自定义,默认1个block等于8个扇区大小)
2.4 柱面:如上图所示,所有的盘片,多个盘片上下当成一个整体.
磁盘的分区的概念,就是从一个柱面开始,到第二个柱面结束,下面的所有范围看作一个整体,就是一个磁盘的分区。
"""
2、固态硬盘:基于电子工作,取代机械硬盘容易损坏的缺点,使用的是物理元件,闪存芯片。
#### 2.6 IO延迟(重点)
```python
# 1、举例
"""
假设当前硬盘磁头转速是7200/min,也就是120/s,那么转一圈需要-花费1/120≈8ms,半圈也就是4ms
"""
# 2、平均寻道时间(掌握)
"""
机械手臂从一个柱面随即移动到相邻的柱面的时间成为寻道时间。找到了磁道就以为找到了数据所在的那个圈圈,但是还不知道数据具体在这个圈圈的具体时间。所以机械手臂移动柱面的时间,就叫平均寻道时间。(目前受限于物理工艺水平目前机械硬盘可以达到得是5ms)
"""
# 3、平均迟时间(掌握)
"""
机械手臂到达正确的磁道之后还必须等待旋转到数据所在的扇区,这段时间就叫平均延迟时间。(基于上面例子,转半圈需要花费4ms,受限于硬盘得转速)
"""
# 4、IO延迟(掌握)
"""
平均寻道时间 + 平均延迟时间 = IO延迟
硬盘为什么慢的正真原因:
由上面可以知道,硬盘主要慢,是慢在找数据得过程,读数据是很快得过程。因此想优化程序运行效率,就要让程序减少与硬盘打交道得过程,数据能从内存取,就不要从硬盘取。
文件读写就是与硬盘打交道的过程,因此要减少文件的读写操作(文件时操作系统给人提供操作硬盘的虚拟单位)
"""
# 5、虚拟内存
"""
内存不够用的时候,在硬盘上划一块空间,这个空间就叫虚拟内存(拓展:linux系统的swap分区就是虚拟内存)
作用:当内存不够用的时候,保证程序的正常运行。
# 6、磁带
"""
一般用于备份,价格低,容量大,便于携带
"""
3、总线
"""
所有的计算的组成部分,这些硬件,都是集成在一块板子上,这块板子就叫**主板**。而**总线**就是组件于组件之间来回传输数据的一种桥梁。
北桥即PCI桥:负责连接CPU与内存,可以发现北桥连接的都是高速设备。
南桥即ISA桥:负责连接SCSI(硬盘的一种接口)、USB(鼠标键盘等一些接口),可以发现南桥连接的是慢速设备。
"""
4、操作系统的启动流程(重点)
4.1 裸机下的3大硬件
- cpu
- ROM:充当内存,存放BIOS系统,BIOS能保证没有安装任何操作系统的前提下,你的计算机能够启动起来。
- CMOS:充当硬盘,存放BIOS程序产生的数据。
4.1 安装操作系统的启动流程(掌握)
"""
1、计算机通电
2、BIOS开始运行,检测硬件:CPU、内存、硬盘等等
3、BIOS读取CMOS存储器中的参数,选择启动设备
4、从启动设备上(也就是即将安装的操作系统)读取第一个扇区的内容(MBR主引导记录:MBR主引导记录共512字节,前446字节为引导信息,后64字节为分区信息,最后2字节为标志位。)
5、根据分区信息读入boot loader启动加载模块,启动正真意义上的操作系统。(该分区信息指的就是上面所读取第一个扇区内容得后64个字节的分区信息)
6、然后正真意义上的操作系统询问BIOS,以获取配置信息。对于每种设备,操作系统会检查其设备驱动程序是否存在,如果没有,操作系统会要求用户安装设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核,完成了BIOS与操作系统的交接,获取了控制所有硬件的最高权限。
"""
4.2 安装操作系统后的3大硬件
- cpu
- RAM:开机以后,操作系统就加载到内存。
- 本地硬盘:分区,启动盘存放操作系统这个软件。
5、密码破解与相关安全
5.1 破解操作系统设置的密码
"""
1、拿个存有无密码的操作系统的U盘,插入电脑U盘接口,充当硬盘
2、启动BIOS,设置该没有密码的操作系统的启动优先级,待BIOS与该没有密码的操作系统交接完毕,重启计算机,此时优先加载的就是该没有密码的操作系统。
3、该没有密码的操作系统此时获取了控制所有硬件的最高权限,而那个设置密码了的操作系统,仅仅只是躺在硬盘上的一堆普通的程序无恙,这时就可以随意修改密码。
4、修改过后,重启计算机,进入BIOS中,把修改密码的操作系统的启动优先级,设置为最优先,重启计算机,拔出U盘,达到修改密码锁定的问题。
"""
5.2 破解BIOS中设置的密码
- 归根结底,BIOS存放在ROM中,而提供启动信息的参数,都存放在CMOS中,可知道的是CMOS由主板电池供电,拔插 主板电池,数据缓存消失,插入以后,原始数据不存在,BIOS中的密码设置也不起作用了。所以说没有绝对的安全。
6、应用程序的启动流程(掌握)
"""
1、双击exe可执行程序的快捷方式(就相当于把exe文件路径,告诉操作系统,说我有一个应用程序需要执行。)
2、操作系统会根据文件路径找到exe程序在硬盘上的位置,控制其代码从硬盘加载到内存
3、然后控制CPU从内存中读取刚刚读入的应用程序代码并执行,应用程序则完成启动。
"""
本文详细信息查看地址👉:https://www.cnblogs.com/linhaifeng/p/6523843.html