3.2
上午
上节课回顾
-
编程语言是人与计算机之间沟通的工具,与计算机沟通的目的是为了更好的奴役计算机。
-
计算机世界中的三种角色:人,编程语言,计算机
-
计算机硬件:运算器,控制器,存储器,输入设备,输出设备
- CPU = 控制器 + 计算器
- 负责运行程序的硬件是CPU,通过CPU间接地控制别的硬件
- 存储器
- 内存:断电数据消失,存取速度快
- 外存:存取速度慢,永久保存数据
- 输入,输出设备
- 补充知识
- CPU存取的指令和数据都来自内存
- 内存又称主存,主记忆体,所有有关读写操作的中转站
- 三大核心硬件
- 程序最先存放于硬盘中
- 程序的运行一定是先把程序的代码由硬盘加载到内存,然后CPU从内存中取出指令
- CPU = 控制器 + 计算器
-
操作系统
操作系统是一个协调管理,控制计算机硬件资源于软件资源的控制程序,位于计算机硬件于软件之间,起到承上启下的作用
操作系统的意义
- 控制计算机硬件的基本运行
- 将硬件操作的复杂细节封装成简单的接口来提供给应用程序或用户使用
- 文件就是操作系统封装的一个功能
-
计算机体系的三层结构
应用程序 / 用户
操作系统
计算机硬件
-
平台 = 计算机硬件 + 操作系统
具体指的是应用程序的运行平台,或者说用户的使用平台
本周五天的内容
周一:计算机核心基础详解
- CPU详解
- CPU分类于指令集
- CPU的架构,x86-64
- 内核态与用户态
- 多线程于多核芯片
- 存储器
- RAM,ROM,CMOS
- 磁盘的结构
- IO延迟
- 虚拟内存
- IO设备 = 设备的控制器 + 设备本身
- 总线
- 操作系统的启动流程
周二:python入门:
全为重点
- 编程语言介绍
- 编程语言的分类,总结
- python介绍
- 安装python解释器,多版本共存
- 运行python程序的两种方式
- 一个python程序运行的三个步骤
- 注释
- IDE 集成开发环境
周三:python语法入门,变量与基本数据类型
全为重点
- 变量
- 变量的基本使用
- 变量三大组成部分
- 变量名命名规范,命名风格
- 变量值三个特征:id,type,value
- is 与 ==,小整数池,垃圾回收机制
- 常量
- 基本数据类型
- 数字类型:int,float
- 字符串类型
- 列表
- 字典
周四:python垃圾回收机制详解,与用户交互,流程控制之if判断
- 垃圾回收机制
- 引用计数
- 标记清除
- 分代回收
- 与用户交互
- 接收用户输入
- 格式化输出
- 流程控制之if
- 语法
周五:流程控制之while循环,for循环
- while循环
- 基本使用
- 死循环与效率问题
- while循环嵌套
- 退出while训话的两种方式
- 改变条件
- break
- while + continue
- while + else
- for循环
- 基本使用
- 循环嵌套
- for + break
今日正课
CPU
-
cpu的控制器,控制计算的所有组件,cpu下发指令集到内存等等硬件
-
x86-64位
- x86指的是CPU的型号,基本所有CPU都是x86结构
- cpu的位数指的是cpu一次性能从内存中取出多少位二进制指令,64指的是一次性能从内存中取出64位二进制指令
- CPU具有向下兼容性,64位的CPU可以运行64位的程序也能运行32位的程序
-
寄存器
- CPU同样的材质,比内存更快,容量很少,存放着急使用的关键数据
-
内核态与用户态
CPU的指令集包括 运算相关的指令集和控制硬件的指令集
cpu有两种工作状态,内核态与用户态。
- 在内核态的时候,运行的是操作系统,所有指令都对外开放,可以操作计算机硬件
- 在用户态的时候,运行的程序是应用程序,只开放运算相关的指令集
- 应用程序的运行必然涉及到计算机硬件的操作,那就必须由用户态切换到内核态才能实现,所以计算机工作时在频繁切换内核态与用户态
-
多线程与多核心
-
核:工厂
-
线程:该从工厂中的流水线数
2核4线程:2核代表由两个CPU,每个CPU都有两个线程
-
存储器
-
RAM:内存
- ROM:只读内存,存放计算机厂商谢哈的计算机上的核心程序(BIOS)
-
CMOS:存取速度慢,断电数据丢失,由一块小电池独立供电,常保存计算机基本启动信息(日期、时间、启动设置等)
-
硬盘
-
磁道:一圈数据,对应一串二进制 1bit代表一个二进制位
8bit 比特位 = 1 Byte 字节
1024Bytes = 1 KB
1024 KB = 1MB
1024 MB = 1GB
-
扇区:
- 一个扇区通过位512Bytes
- 站在硬盘角度看,一次读写数据的最小单位为扇区,攒够512个字节再处理
- 操作系统一次性读写的单位是一个block块,默认是8个扇区的大小,4096Bytes,用于减少IO次数
-
柱面
-
-
IO延迟
以一个7200转的硬盘举例(rpm)
如果正好磁头在需要的磁道上,磁头平均在一圈上找到数据的时间:转半圈的时间:
- 7200r/min
- 120r/s
- 转半圈需要4ms
平均寻道时间:机械手比转到数据所在磁道需要花费的时间,受限于物理工艺水平,目前机械硬盘可达到5ms
平均延迟时间:转半圈需要花费的时间,受限于硬盘的转速
IO延迟 = 平均寻道时间 + 平均延迟时间
程序所有的优化最后都是IO层面
能从内存取数据,就不要从硬盘取
-
虚拟内存
内存不够用的时候,在硬盘上划一块空间,将暂时不需要执行的程序放在这里,这个空间就叫虚拟内存(Linux的swap分区)
-
IO设备 = 设备控制器 + 设备本身
- 设备的控制器:一组芯片,驱动程序控制设备控制器
下午
总线
操作系统的启动流程
BIOS :basic input output system,写在ROM中
裸机的时候
- CPU
- ROM:充当内存,存放BIOS
- CMOS:充当硬盘
启动流程(重点)
- 计算机加电(通电)
- BIOS开始运行,检测硬件:CPU,内存,硬盘等
- BIOS读取CMOS里的参数(启动项),选择启动设备
- 从启动设备(硬盘)上读取第一个扇区的内容(512Bytes):MBR主引导纪录,前446字节为引导信息,后64为分区信息,最后两个为标志位
- 根据分区信息读入bootloader 启动装在模块,启动操作系统
- 操作系统询问BIOS,以获得配置信息。对每种设备,系统会检查其驱动程序是否存在,若没有,则系统要求用户按照设备驱动程序,一旦有全部的设备驱动程序,操作系统就将它们调入内核
应用程序的启动流程
- 双击exe:告诉操作系统要执行一个应用程序
- 操作系统根据文件路径找到exe程序在硬盘中的位置,控制器代码从硬盘加载到内存
- 然后控制CPU从内存中读取刚刚读入内存的应用程序的代码执行,操作系统将他调入内核
注意
bios写在rom中,rom只读,不会被删改,所以断电再通电,rom里面还是bios
cmos是ram的一种,可读写的特性,在电脑主板上用来保存BIOS设置完电脑硬件参数后的数据。独立使用电池供电,耗电低