计算机基础

一.python是一种编程语言

编程语言:本质是一门语言

语言:两种事物沟通的表达方式/工具

编程:按自己的思维逻辑,运用编程语言表达出来

编程的目的:按照人类的思维逻辑去工作,从而解放人力

人--------------程序语言----------->计算机

二.计算机基础

计算机:俗称”电脑“, 即通电的大脑,电脑二字蕴含了人类对计算机的终极期望,希望它能真的像人脑一样去工作,从而解放人力。

使用计算机的原因:为了执行人类的程序,从而把人类解放出来

大前提:计算机所有的组成都是模仿人的某一功能或器官

1.计算机的五大组成部分(重点)

  • 控制器 作用:是计算机的指挥系统,负责控制计算机所有其他组件的运行

  • 运算器 作用: 是计算机的运算功能,用来做算术运算和逻辑运算,相当于人脑

    控制器+运算器=cpu, cpu相当于人的大脑

  • 存储器/IO设备 作用:是计算机的记忆功能,负责数据的存取

    分类:

    内存(基于电工作):存取数据都,断电数据失,只能临时存取数据

    ps: cpu存取的数据和指令都来自于内存

    外存(硬盘,基于磁工作):存取速度都,断电数据也不丢,可以永久数据

    ps:内存的存取速度要远远高于外存

  • 输入设备input : 计算接收外界输入数据的工具 ,如键盘,鼠标

  • 输出设备output : 计算机向外输出数据的工具 ,如显示器,打印机

    ps:存储器如内存、磁盘等既是输入设备又是输出设备,统称为IO设备

2.一个程序的运行与三个核心硬件的关系(重点)

三个核心硬件:cpu、内存、硬盘

程序最先是存放于硬盘之上,程序的运行一定事先把程序的代码加载到内存,然后cpu从内存中读取指令执行

3.操作系统

概念:操作系统是一个协调管理控制计算机硬件资源与应用软件资源的一个控制程序 作用: (1)控制计算机硬件的基本运行 (2)把使用硬件的复杂操作封装成简单的功能,给上层的应用程序使用

3.1 系统软件与应用软件

计算机硬件是死的,计算机硬件的运行都受软件控制,所以说,软件相当于计算机的灵魂 具体来说软件分类: (1)应用软件:应用程序相关逻辑 (2)系统软件:控制底层硬件的,操作系统应用软件与硬件之间的一个桥梁,是协调、管理、控制计算机硬件与应用软件资

3.2 计算机系统三层结构

我们开发应用程序本质是在控制硬件,但是我们直接打交道的是操作系统,应用程序都是通过操作系统来间接地操作硬件的,所以一套完整的计算机系统分为三层,如下

计算机系统的三层结构.jpg

平台

应用程序都是运行于操作系统之上,而操作系统则是运行于硬件之上的,所以承载应用程序的是一台运行有操作系统的计算机,称之为应用程序的运行平台,即: 计算机硬件+操作系统=平台


常见的平台有:windows系统+某款硬件、linux系统+某款硬件、ubuntu+某款硬件等

软件的跨平台性指的是:一款软件可以任意平台上运行,是衡量软件质量高低的一个非常重要的指标

4.cpu

  • cpu的分类与指令集

    指令集:把程序员控制cpu的指令,转成cpu操作某个组件的指令。这些指令不会自发的运行,由人类控制它才能运行

  • cpu的分类:精简指令集,复杂指令集

     精简指令集:指令集简短,完成的事情,非常的简单。
    优点:不容易错,更稳定。
    缺点:实现复杂的操作,需要的指令集就会成堆,才会完成这一件事。
    作用:争对稳定的需求,争对大型的计算机架构的服务器,它就需要精简指令集。(例子:网络设备,服务器等)

     复杂指令集: 单条指令比较复杂
    优点:单条指令集完成的事情比较多,意味着完成复杂的事,只需要几条就够。
    缺点:单挑指令比较复杂,容易出错,不稳定。
    作用:争对功能更丰富,更强大,因该需要cpu内部的复杂指令集。(例子:个人电脑)

4.1.x86-64(重点)

  • x86-cpu型号

  • 64位-cpu一次性能从内存中取出64位二进制指令(cpu的位数指的是cpu一次性能从内存中取出多少位二进制指令)

  • cpu具有向下兼容性:64的cpu既能运行32位的程序也能运行64位的程序

4.2.内核态与用户态(重点)

cpu的两种工作状态:内核态,用户态

  • 内核态:运行的程序是操作系统,可以操作计算机硬件

  • 用户态:运行的程序是应用程序,不能操作计算机硬件

内核态与用户态的转换

  • 应用程序的运行必然涉及到计算机硬件的操作,那就必须有用户态切换到内核态下才能实现,所以计算机工作时在频繁发生内核态与用户态的转换

多线程与多核芯片

  • 2核4线程:2核代表有两个cpu,4线程指的是每个cpu都有两个线程=>假4核

  • 4核8线程:4核代表有4个cpu,8线程指的是每个cpu都有两个线程=>假8核

5.存储器

  • 结构从上到下:cpu,寄存器,高速缓存,内存,硬盘,磁盘

    存储器.png
*   为了提高cpu读取数据的速度,所以在cpu与磁盘之间引入了内存,然后cpu从内存中读取数据其实也是慢的,所以之间加入的高速缓存,高速缓存还是不够块,又在cpu与高速缓存之间又增加了寄存器,这样一步一步提高cpu读取数据的速度

*   寄存器: 使用cpu同等材质制造而成,在cpu内部集成,cpu运行下一步操作立马需要的指令。

*   高速缓存:存放cpu经常使用的数据。cpu读取数据的时候,先从高数缓存中查看自己所需要的数据,如果有直接从高速缓存中取走,速度很快2ns(这时高速缓存命中)。
  • RAM(random access memory 随机存取存储器):内存

  • ROM(ready only memory 只读存储器):“只读内存” 存放计算机厂商写死计算机上的一段核心程序=》BIOS

  • CMOS(Complementary Metal-Oxide-Semiconductor Transistor 互补金属氧化物半导体):存取速度慢,断电数据丢失,耗电量极低

  • 硬盘

    • 机械硬盘:磁盘

      机械硬盘: 依赖于机械的转动,盘片基于磁型号,所以也称之为磁盘。高低磁性号,高磁性号:代表1,二进制1。低磁性号:代表0,二进制0.

      磁头:负责读写数据

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

    单位换算

     注意:严格区分大小写,1kb是1kbit 而不是 1kBytes。小写b表示比特位,大写比表示字节。
    1bit(比特位) = 8Bytes(字节)
    1024Bytes = 1KBytes
    1024KB = 1MB
    1024MB = 1GB
    1024GB = 1TB
    1024TB = 1PB

    拓展:对应产商的硬盘存储单位1000表示为一个单位,例200G=20010001000B

![主线.png](https://upload-images.jianshu.io/upload_images/20605284-2f727dd0eaa19980.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**扇区**:

注意:**硬盘**的一**次性读写数据**的**最小单位**就是**扇区**。1个扇区为512Bytes。

**拓展**:**操作系统**的**一次性读写的单位**是**1个block块**,block的概念**对应**的是**8个扇区的大小**,也就是4096Bytes。操作系统攒够了block块的容量才交给硬盘,以此来减少与硬盘打交道的次数,从而减少IO次数。(block块大小可以自定义,默认1个block等于8个扇区大小)

##### 柱面:

柱面是哪一部分?所有的盘片,多个盘片上下当成一个整体.

磁盘的分区的概念,从一个柱面开始,到第二个柱面开始,下面的所有范围的整体,就是一个磁盘的分区。

*   **固态硬盘**

    基于电子工作,取代机械硬盘容易损坏的缺点,使用的是物理元件,闪存芯片。
  • IO延迟(*****)

    例:假设当前硬盘磁头转速是7200/min,也就是120/s,那么转一圈需要花费1/120≈8ms,半圈也就是4ms 。

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

    • 平均延迟时间: 机械手臂找到该数据所在磁道时,需要定位到该数据,定位到该数据得时间,叫平均延迟时间 。转半圈需要花费4ms,受限于硬盘的转速

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

    • 优化程序运行效率的一个核心法则:能从内存取数据,就不要从硬盘取

  • 虚拟内存

    • 内存不够用的时候,在硬盘上划一块空间,这个空间就叫虚拟内存(拓展:linux系统的swap分区就是虚拟内存)

    • 作用:当内存不够用的时候,保证程序的正常运行。

    IO设备=设备的控制+设备本身

  • 磁带

    • 一般用于备份,价格低,容量大,便于携带

6.总线

  • 所有的计算的组成部分,这些硬件,都是集成在一块板子上,这块板子就叫主板。而总线就是组件于组件之间来回传输数据的一种桥梁。

  • 北桥即PCI桥:负责连接CPU与内存,可以发现北桥连接的都是高速设备。

  • 南桥即ISA桥:负责连接SCSI(硬盘的一种接口)、USB(鼠标键盘等一些接口),可以发现南桥连接的是慢速设备。

主线.png

7.操作系统的启动流程

BIOS介绍

BIOS:Basic Input Output System

BIOS被写入ROM设备

裸机下的3大硬件

  • cpu

  • ROM:充当内存,存放BIOS系统

  • CMOS:充当硬盘

安装操作系统的启动流程(重点)

1.计算机加电

2.BIOS开始运行,检测硬件:cpu、内存、硬盘等

3.BIOS读取CMOS存储器中的参数,选择启动设备

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

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

6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核, 完成了BIOS与操作系统的交接,获取了控制所有硬件的最高权限。

安装操作系统后的3大硬件

  • cpu

  • RAM: 开机以后,操作系统就加载到内存。

  • 本地硬盘:分区,启动盘存放操作系统这个应用程序

BIOS

1、存有win10系统的光盘、u盘、移动硬盘:无密码

2、本地硬盘上的win7系统:密码

8.密码破解与相关安全

  • 破解操作系统设置的密码

    1、拿个存有无密码的操作系统的U盘,插入电脑U盘接口,充当硬盘

    2、启动BIOS,设置该没有密码的操作系统的启动优先级,待BIOS与该没有密码的操作系统交接完毕,重启计算机,此时优先加载的就是该没有密码的操作系统。

    3、该没有密码的操作系统此时获取了控制所有硬件的最高权限,而那个设置密码了的操作系统,仅仅只是躺在硬盘上的一堆普通的程序无恙,这时就可以随意修改密码。

    4、修改过后,重启计算机,进入BIOS中,把修改密码的操作系统的启动优先级,设置为最优先,重启计算机,拔出U盘,达到修改密码锁定的问题。

  • 破解BIOS中设置的密码

    归根结底,BIOS存放在ROM中,而提供启动信息的参数,都存放在CMOS中,可知道的是CMOS由主板电池供电,拔插 主板电池,数据缓存消失,插入以后,原始数据不存在,BIOS中的密码设置也不起作用了。所以说没有绝对的安全。

9.应用程序的启动流程(重点)

1、双击exe快捷方式--》exe文件的绝对路径

2、操作系统会根据文件路径找到exe程序在硬盘的位置,控制其代码从硬盘加载到内存

3、然后控制cpu从内存中读取刚刚读入内存的应用程序的代码执行,应用程序完成启动

三.python入门

1.编程语言

分类

机器语言:直接用二进制编程

汇编语言: 用一个英文标签代表一组二进制指令

高级语言(编译型、解释型): 用人类的字符去编写程序

编译型(是把程序所有代码编译成计算机能识别的二进制指令,之后操作系统会拿着编译好的二进制指令直接操作硬件)

总结

1、执行效率:机器语言>汇编语言>高级语言(编译型>解释型)

2、开发效率:机器语言<汇编语言<高级语言(编译型<解释型)

3、跨平台性:解释型具有极强的跨平台型

2.python介绍

python语言:指的是python的语法风格

python解释器:专门用来识别python这门语言的语法并解释执行的

python语言与python解释器的关系

1.python解释器是一款应用程序专门用来解释python这门语言的语法风格并执行的

2.python语言缩写的程序最终都是被解释器执行的,所以我们可以这么说python语言更多地都是在调用python解释器的功能,所以解释器性能的高低很大程度决定了我们用python写出来的程序执行效率的高低

3.解释器多版本共存

3.1python解释器部分文件夹介绍

  • DDLS:病毒程序需要获取该目录的控制权限

  • scripts:存放pip等exe可执行程序,用来安装第三方库。pip pip2 都是一样的功能,只是名字不同。

3.2关于解释器的一些CMD命令操作

  • 切换盘:D:

  • 查看python3安装的第三方库目录位置:pip3 -V (前提:安装了path环境变量)

  • 查看python2安装的第三方库目录位置:pip2 -V (前提:安装了path环境变量)

3.3配置环境变量需要了解的细节

  • 环境变量寻找的优先级:计算机先从当前文件夹下找,找不到则到设置的环境变量中从前往后检索。

  • 用户环境变量只对当前用户生效,系统环境变量争对所有用户都生效。

  • windows7中:使用分号,分隔不同的path路径

3.4python库的虚拟环境介绍

  • 开发一款软件,需要定义虚拟环境,避免每个项目所需下载的第三方库在一个pip安装目录下,以免对原生库产生混乱的影响。

环境变量:一般是指在操作系统中用来指定操作系统运行环境的一些参数

4、 运行python程序的两种方式

  • 交互式

    即时得到程序的运行结果,多用于调试

  • 脚本的方式

    把程序写到文件里(约定俗称文件名后缀为.py),然后用python解释器解释执行其中的内容

5、一个python应用程序的运行的三个步骤(重点)

python3.8 c.py

1、先启动python3.8解释器

2、解释器会发送系统调用,把c.py的内容从硬盘读入内存,此时c.py中的内容全部为普通字符,没有任何语法意义

3、解释器开始解释执行刚刚读入内存的c.py的代码,开始识别python语法

文本编辑器读取C:\a\b\c.py文件内容三个步骤

1、先启动文本编辑器 2、文本编辑器会发送系统调用,把c.py的内容从硬盘读入内存 3、文本编辑会将刚刚读入内存的内容控制输出到屏幕上,让用户看到结果

总结: 二者在前两个阶段做的事情完全一致 唯一不同的就是第三个阶段对读入内存的python代码的处理方式不同

6.注释

注释:对代码的解释说明,被注释的代码不会被执行

注释的原因:增加代码的可读性

分类:单行注释(#注释内容)多行注释('''注释内容''' """注释内容""")

7、IDE集成开发环境pycharm

什么是集成开发环境

  • 实际开发中,除了编译器是必须的工具,我们往往还需要很多其他辅助软件。例如:编辑器、代码提示器、调试器、项目管理工具、漂亮的界面,这些工具通常被打包在一起,统一发布和安装,它们统称为集成开发环境

**如何安装pycharm集成开发环境?****

https://blog.csdn.net/qq_34732729/article/details/102910358

你可能感兴趣的:(计算机基础)