编程介绍
1.什么是编程语言?
编程语言本质上就是一门语言,只不过是用来人与计算机沟通的语言。
2.什么是编程?
编程就是把要做事的步骤或者业务逻辑用编程语言翻译下来
3.什么是程序?
代码应该写到文件中,存放有程序代码的文件就是程序,或者叫软件
计算机硬件
计算机由计算机硬件、操作系统、软件组成。
组成计算机的三大核心硬件:CPU、内存、硬盘
CPU是运算器和控制器的总称
内存:1.优点:存取速度快
2.缺点:断电数据丢失
硬盘:1.优点:数据可以永久保存且断电数据不丢失
2.缺点:存取速度都慢
除了这三大核心硬件还有输入输出设备(I/O),输入设备:键盘鼠标等等;输出设备:显示器、打印机。
电脑和人对应的关系:
CPU:相当于人的大脑,负责数学运算、逻辑运算和控制
内存:相当于人的记忆,负责临时存储记忆
硬盘:相当于人使用的笔记本,用来永久存储数据
输入设备(input):相当于人的耳朵、眼睛,用来接收数据
输出设备(output):相当于人的表情,用于显示、输出数据
一个程序的运行与三大硬件之间的关系
程序最先是存放在硬盘中。
程序的运行是先把程序的代码从硬盘读入内存,然后cpu从内存读取指令然后运行
IO问题与程序优化的思路
1、读
能从内存读就不要从硬盘读
如果原始的数据就是存放于硬盘中的,并且该数据经常被用到,那么我需要把硬盘中的这块数据事先读到内存中=》缓存
2、写
在内存攒一大波,然后一次性写入硬盘
x86-64
x86表示cpu的型号,64表示最大读取数据是64bit。
cpu的两种工作状态
内核态:可以控制计算机硬件
用户态:可以运行指令
存储器
RAM
随机存取存储器(英语:Random Access Memory,缩写:RAM),也就是内存。
常说的也叫主存,是与CPU直接交换数据的内部存储器。
优点:可读可写,读写速度快,最快DDR4标准的内存读写速度高达50000MB/s
缺点:一旦断电,数据就会丢失
ROM
ROM 是 read only memory的简称,表示只读存储器。
只读存储器(ROM)是一种在正常工作时其存储的数据固定不变,其中的数据只能读出,不能写入。
即使断电也能够保留数据,要想在只读存储器中存入或改变数据,必须具备特定的条件。
优点:即使断电也可以保存数据
缺点:只能读取,不能写入,读写速度慢
CMOS
是电脑主板上的一块可读写的RAM芯片。
在电脑主板上用来保存BIOS设置完电脑硬件参数后的数据,这个芯片仅仅是用来存放数据的。
优点:可读可写,可保存数据,耗电量极低
缺点:读写速度慢,断电数据会丢失
磁盘
磁盘最小存储单位是扇区,每个扇区的大小为bytes,扇区组成组成一个圆就成为磁道,如果是在多碟的硬盘上面,在所有磁盘盘上面癿同一个磁道可以组 成一个磁柱, 磁柱也是一般我们分割硬盘时的最小单位了!
I/O延迟:平均延迟和平均寻道时间
操作系统
1.什么是操作系统?
操作系统是一个协调、管理、控制计算硬件资源与应用软件资源的一个控制程序
操作系统启动流程相关
BIOS介绍:
BIOS:Basic Input Output System,基本输入输出系统
BIOS是被烧录在主板的ROM中的一个程序
(这里说的主板是纯主板,不包括CPU,内存和硬盘之类的硬件)
BIOS中的配置信息会被保存在CMOS中,一旦CMOS断电,这些配置信息就会被清空。
虽然BIOS是一个底层的系统,但是也可以设置密码,开机后先于操作系统执行。
操作系统具体启动流程:
1.计算机按下开机按钮,通电
2.BIOS开始运行,进行硬件检测:CPU、内存、硬盘...
3.BIOS读取CMOS存储区中的配置参数,选择要启动的硬件设备
4.从启动的硬件设备中读取第一个扇区的信息(引导根据分区格式的不同分为MBR和UEFI)
5.根据分区信息读入bootloader启动装载模块,启动操作系统
6.操作系统询问BIOS,获得配置信息。系统监测设备驱动是否正常,然后将其调入内核
编程语言分类
编程语言分为低级语言和高级语言,低级语言包括机器语言和汇编语言;高级语言包括编译型语言和解释型语言。其特点如下:
1、机器语言:直接用二进制编写程序
优点:运行效率高
缺点:开发效率低
①二进制指令太难记忆
②实现一个简单的功能需要很多步骤才能完成
汇编语言:用英文标签取代二进制指令去编写程序
优点:①运行效率高,但是低于机器语言
②解决了机器语言二进制指令难以记忆的问题
缺点:开发效率仍然很低
高级语言:
用人类能理解的表达方式去编写程序,计算机无法直接理解,需要翻译才行。
按照翻译方式的不同,高级语言又分为
1、编译型C、Go: 翻译一次得到可执行的结果,下次直接拿着现成的结果运行就好,不需要再用编译器翻译了
翻译工具:编译器
2、解释型python、shell:每次执行程序都离不开解释器的翻译
翻译工具:解释器
执行效率:机器语言>汇编语言>高级语言(编译型>解释型)
开发效率:机器语言<汇编语言<高级语言