计算机基础
计算机基础
黄俊人
一、什么是编程
二、计算机组成原理
CPU中央处理器:
- 功能
- 帮我们控制四肢
- 运算+判断
- 控制器:
- 控制构成计算机的一大堆废铜烂铁
- 运算器:
- 逻辑运算+算术运算
存储器
- 内存
- 人类:睡一觉就忘了
- 计算机:断电即消失(缺点)、速度快(优点)
- 外存
- 人类:永久保存
- 计算机:永久保存(Ctrl+S→将文件由内存保存至外存)(优点)、速度慢(缺点)
- 吃饭的流程
- 判断自己饿不饿
- 点个外卖
- 能不能吃
- 吃完了
- 打开QQ的流程
- 双击QQ(找到QQ在外存的位置)(发送指令给CPU,让CPU帮我找到QQ在外存的位置)
- 运行(内存和外存二选一,内存)
- QQ启动了
- 总结:内存或者外存的交互一定是CPU再控制协调(就好像人的四肢不能互相协调,只能是由大脑进行协调)
输入设备
- 键盘、鼠标:输入内容、输入信息
输出设备
- 屏幕、打印机:输出内容、输出信息
计算机的硬件
- CPU、内存、外存、输入设备、输出设备
- U盘:输入设备+输出设备(IO设备)
多核CPU
- 同时完成多件事
x64
- 下载文件时,一次性拿64位的0或1的二进制数(64位的电脑可以下载32位的文件/程序,但32位的电脑不能下载64位的文件)
总线
机械硬盘
- 机械手臂:读取数据
- 磁道:存取数据
- 扇区:划分磁道,一般划分的单位为512KB(多个扇区组成一个分盘)
- 平均寻道时间:由于工业水平的限制,一般为5ms
- 平均接卸硬盘寻找数据的时间=平均寻道时间+平均延迟时间=5+5.15=9.15ms(最少0ms能找到数据,最多1r才能找到,硬盘转速为7200r/min→120r/s,即1r=0.0083s=8.3ms,所以平均延迟时间为(8.3+0)/2=4.15)
存储器
- ROM存储器:在工厂就被编程完毕,不可修改,一般存放BIOS程序,充当临时操作系统,用于启动计算机、启动操作系统、处理底层设备的控制
- CMOS存储器:由电脑内置电池驱动供电,功能有1.保持时间与日期更新,及时计算机没有充电,时间也会更新2.存储启动磁盘的路径,用于启动计算机,启动操作系统
三、操作系统
- 庄园例子中, 庄园主不屑于跟奴隶讲话,他会找一个管家传达命令 (操作系统就相当于管家,接受外部指令,控制硬件)
- 操作系统干了什么:
- 接受外部指令转化为0和1
- 翻译我写的字符,把对文件的操作从繁(控制高低压电平)到简(双击、敲键盘等),把一些对硬件的复杂操作简化成一个个接口(双击、快捷键等)eg:打开→双击、保存→Ctrl+S、复制→Ctrl+C
- 为什么要有操作系统:
- 如果我们要控制计算机→必须要有操作系统,不然就只能操作硬件,而CPU只认识0和1,即高低压电平
- 计算机由什么组成
- 应用程序:便利生活,具体生活,完成具体任务
- 操作系统:接受外部指令,控制硬件。从繁(控制高低压电平)到简(双击、敲键盘等),和应用程序、人、硬件
- 硬件:存储、输出、输入数据--→操作数据
- 应用程序的启动
- 双击
- 发送指令给操作系统
- 操作系统把这条指令转换成0和1发给CPU
- CPU把这条指令发给内存
- 内存从硬盘(外存)中调取程序的数据
- 程序被读入内存,启动程序
- 注意:456步只是硬件间的交互,不涉及操作系统
- 操作系统的启动
- 前提:启动操作系统相当于启动软件;若要启动软件就要经过操作系统(互相矛盾,所以需要一个临时操作系统)
- 按下开机键(相当于双击)
- ROM充当临时操作系统控制CPU
- ROM去CMOS寻找操作系统的路径,并启动操作系统
- 真正操作系统接管ROM的工作
- 注意:34步不作详细了解,只需知ROM和CMOS共同充当了临时操作系统
四、编程语言
机器语言(了解)
- 指的是0和1,这就是编程语言
- 优点:执行代码效率很快
- 缺点:开发效率低
汇编语言(了解)
- 通过写英文字符的形式代替了0和1,但还是直接与硬件交互(了解)
- 优点(相比于机器语言):开发效率高
- 缺点:执行效率低
高级语言
- 直接用人能理解的语言和语法风格编写程序,但需要翻译器进行翻译
- 优点(相比于汇编语言):开发效率高
- 缺点:执行效率低
同声传译(解释性)
- 说一句解释一句,每次翻译都需要解释,如Python、JavaScript
- 缺点(较编译型):执行效率低(我滴个乖乖,写一次翻译一次)
- 优点(较编译型):开发效率高(写一行 翻译一行,错了马上就知道,妈妈再也不用担心我找不到bug了)
谷歌翻译(编译型)
- 把要翻译的代码全部放进去,一次翻译,下次使用直接使用上一次翻译好的结果,一次编译,多次执行,如C/C++、Java
- 优点(较解释型):执行效率高(有解释器省去很多翻译的过程)
- 缺点(较解释型):开发效率低(写完所有的代码才能检查bug,得多恐怖呀???)
瓶颈效应
- 网络延迟让代码的执行效率变得毫无意义,短板:网速