目录
计算机基础
# 什么是计算机?
> 计算机俗称“电脑”,包含人对计算机的终极期望,能够真的像人脑一样工作。
> 拥有处理数据、执行指令的能力,是现代科技和信息社会的重要工具
# 为什么要有计算机?
> 为了解决人类在处理大量数据和复杂计算时的困难,提高工作效率,减轻人力负担,实现自动化
计算机五大组成部分
控制器
> 计算机的指挥系统,负责控制计算机所有其他组件如何工作的
运算器
> 实现计算机的运算功能,运算包括 数学运算 与 逻辑运算
存储器/IO设备
> 计算机的记忆功能,负责数据的存取
**分类**
# 内存(基于电工作):存取数据快,一旦断电数据丢失,只能临时存取数据
# 外存(基于磁工作):存取速度慢,断电数据不丢失,可以永久保存数据
输入设备(input)
> 输入设备是计算机接收外部数据的工具, 比如:键盘、鼠标
输出设备(output)
> 输出设备是计算机对外输出数据的工具, 比如:显示器、打印机
计算机三大核心硬件(重点)
中央处理器(CPU)
'CPU 由 控制器 和 运算器 组成'
'用于计算数据、决定执行程序指令的顺序和过程'
# 指令集的分类:
'精简指令集'
'复杂指令集'
# X86架构、64位
X86——CPU的型号
64位 一次性从内存中取出二进制位数
'CPU具有向下兼容性'
# 寄存器
作为内存与CPU之间的缓冲,提升CPU取数据的速度,与CPU同种材质
# 内核态与用户态
CPU最核心的是其中的'指令集'
运算相关的指令集
控制其他硬件的指令集
# CPU的两种工作状态
内核态: 运行的程序是'操作系统',#可以操作计算机硬件,暴露给你所有的指令集
用户态: 运行的程序是'应用程序',#不能操作计算机硬件
`应用程序的运行必然涉及到计算机硬件的操作,
那就必须由用户态切换到内核态才能实现,
所以计算机工作时在频繁的发生内核态与用户态的转换。`
# 多线程和多核芯片
# 摩尔定律
'2核4线程':
2核代表有两个CPU,4线程指的是每个CPU都有两个线程=>假4核
'4核8线程':
4核代表有两个CPU,8线程指的是每个CPU都有两个线程=>假8核
内存
-读取速度快,基于电工作。
-用于存储正在运行的程序和临时数据。
-断电后数据立即丢失,是一种易失性存储器。
-作为CPU直接访问的存储介质,提供了高速的数据读写能力。
硬盘
-读取速度相对较慢
-用于永久保存数据,包括操作系统、应用程序和用户数据等
-断电后数据不会丢失,是一种非易失性存储器
-作为长期存储的主要设备,容量通常较大
操作系统
作用和主要功能
# 作用
-操作系统的出现是为了简化硬件操作,提供统一的接口供应用程序使用。
-在开发应用程序时,不同开发者无需重复编写控制硬件的底层代码,而是调用操作系统提供的接口。
-这样,开发者能够专注于应用程序的业务逻辑,提高开发效率。
# 主要功能
-硬件管理: 控制和管理计算机的硬件,包括CPU、内存、硬盘、输入输出设备等。
-文件系统: 提供文件和目录的管理,让应用程序能够方便地读取和存储数据。
-进程管理: 管理运行在计算机上的各个进程,确保它们有序、安全地运行。
-内存管理: 分配和释放内存,以及虚拟内存的管理。
-设备驱动程序: 提供硬件设备的驱动程序,使应用程序能够通过操作系统与硬件交互。
-用户界面: 提供用户与计算机交互的界面,如图形用户界面(GUI)或命令行界面。
常见的操作系统
1. 客户端(PC)
· Windows(微软)
· macOS(苹果)
· Linux(服务器)
2. 移动端(APP)
· 安卓
· iOS
· 鸿蒙
计算机体系的三层结构
# 应用程序、用户
在计算机系统的顶层是应用层,这是用户直接交互的层面。
我们的主要关注通常是在这个层次上。
我们编写和设计各种应用程序,包括但不限于网页应用、桌面应用、移动应用等。
编写代码的目标是实现用户需求,而这些应用程序通过操作系统提供的接口来与底层硬件进行通信。
# 操作系统
操作系统层是连接应用层和硬件层的桥梁。
它提供了一系列的系统调用和服务,使应用程序能够在硬件上运行。
这一层包括操作系统的内核,负责管理系统资源、进程调度、文件系统等。
不同操作系统有不同的特性,例如Linux、Windows等,以及它们在开发中的影响。
# 计算机硬件
硬件层是计算机系统的最底层,包括处理器、内存、存储设备、输入输出设备等。
在这个层次上,我们关注计算机体系结构、指令集架构、存储器层次结构等概念。
理解硬件层对于优化应用程序性能和解决一些底层问题至关重要。
补充
# RAM、ROM
-RAM:"内存"
CMOS:存取速度慢,断电数据丢失,耗电量极低
-ROM:"只读内存"
存放计算机厂商写死在计算机上的一段核心程序'BIOS'
# 磁盘
机械硬盘:磁盘
磁道:一圈数据,对应着一串二进制(1bit代表)
8bit比特位 = 1Bytes字节
1024Bytes = 1KB
1024KB = 1MB
1024MB = 1GB
扇区:一个扇区通过为512Bytes,站在硬盘的解读,一次性读写数据的最小单位为扇区;操作系统一次性读写的单位是一个block快=> 8个扇区的大小 = 4096Bytes
柱面:每层叠起来,按扇区分
# IO延迟
'平均寻道时间':
机械手臂转到数据所在刺刀需要花费的时间,受限于物理工艺水平,目前机械硬盘可以达到的是5ms
'平均延迟时间':
7200转/min,120转/s,转一圈需要8ms,转半圈需要花费4ms,受限于硬盘的转速
"""IO延迟=平均寻道时间+平均延迟时间"""
优化程序运行效率的一个核心法则:能从内存取数据,就不要从硬盘中取
'IO设备=设备的控制+设备本身'
# 总线
PCI桥(北桥):连接高速设备
ISA桥(南桥):连接慢速设备
# 操作系统的启动流程
-BIOS:'Basic Input Output System'
-BIOS被写入ROM设备
1.计算机通电
2.BIOS开始运行,检测硬件: CPU,内存,硬盘等
3.BIOS读取CMOS存储器中的参数,选择启动设备
4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)
5.根据分区信息读入bootloader启动装在模块,启动操作系统
6.然后操作系统询问BIOS,以获得配置信息,对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序,一旦有了全部的设备驱动程序,操作系统就将他们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登陆程序或GUI
# 应用程序的启动流程
1.双击exe快捷方式(exe文件的绝对路径,就是在告诉操作系统执行一个应用程序)
2.操作系统会根据文件路径找到exe程序在硬盘的位置,控制其代码从硬盘加载到内存
3.然后控制CPU从内存中读取刚刚读入内存的应用程序的代码执行,应用程序完成启动