- 常见的存储单位:
1B=8bit
1TB=1024GB 1GB=MB=KB=B
机器数:将符号数字化的数,是数字在计算机中的二进制表示形式。(最高位0表示正数,1表示负数)
二进制正数的原码、反码、补码不变,移码等于补码符号位取反,负数的反码除符号位外取反,补码=反码+1=原码取反+1。
原码 -(2^n-1 -1)
阶符和阶码决定数值表示的范围,数符和尾数决定数值表示的精度。 - cpu构成
cpu性能指标
主频:cpu的工作频率
字长:cpu一次能并行处理的二进制数据的位数。
cpu缓存:cpu和内存之间临时存储
核心数量:cpu的内核数量。
**多级存储:**基于成本、容量和速度产生不同的存储器如下:
寄存器:速度最快的存储器,价格贵
高速缓存:cpu内存
主存:指内存
外存:有硬盘、移动硬盘。
远程存储:指云存储。
存储器分类
按寻址方式分类:随机存储器(比如内存)、顺序存储器(比如磁带)、直接存储器(比如光盘、机械硬盘)
按内容访问:相联存储器
总线
总线按功能分类::数据总线(字长与数据总线有关)、控制总线、地址总线(比如内存)
总线的性能指标:带宽(指单位时间数据传输量)、位宽(指传输一次的二进制个数)、工作频率。带宽=工作频率*位宽/8bit
指令是指示计算机执行某种操作的命令。它由一串二进制数码组成。
一条指令通常由两个部分组成:操作码+地址码。
操作码:指明该指令要完成的操作的类型或性质,如取数、做加法或输出数据等。
地址码:指明操作对象的内容或所在的存储单元地址。
寻址方式:
立即寻址:操作数直接跟在操作码之后,作为指令的一部分存放在代码段里。
直接寻址:指令字中的形式地址A就是操作数的有效地址EA,即EA=A。
寄存器(直接)寻址:指令字中的内容是寄存器的编号,操作数在指定编号的寄存器里。
寄存器间接寻址:指令中地址码部分所指定的寄存器中的内容是操作数的有效地址。
基址寻址:操作数的有效地址等于指令中的形式地址与基址寄存器中的内容之和。
变址寻址:操作数的有效地址是由指令中指定的变址寄存器的内容与指令字中的形式地址相加形成的。
相对寻址:将程序计数器PC的当前内容与指令中给出的形式地址相加形成操作数的有效地址。
堆栈寻址:由堆栈支持的寻址方式,按照堆栈指示器SP的内容确定操作数的访存地址。
不同的寻址方式有不同的特点和应用场景,例如:
立即寻址的操作数就在指令内,因此也叫做立即数,采用补码的形式存放,在执行阶段不访问内存。
直接寻址的指令字中的形式地址就是操作数的有效地址,其优点是可以直接从指令中得到操作数的有效地址,且只访问内存一次。
间接寻址的操作数的有效地址是由指令字中的形式地址给出的,这种方式的优点是可以扩大操作数的寻址范围,便于编制程序,但需要访问内存两次或多次,执行时间过长。
流水线周期:(n表示指令的数量,Tk表示n条指令执行的总时间)
TK=单条置顶所需时间+(n-1)*流水线周期
流水线的吞吐率TP=n/Tk
校验码
奇偶检验:仅可检错,可检测一(奇数)位错
CRC:仅可检错,可检查多位错
海明码:可检错且可纠错,纠1位错或多位错
操作系统
什么是操作系统,操作系统的作用?
作用:管理硬件、软件资源和改善人机交互
操作系统分类:
批处理操作系统:主要功能是批量执行一系列事先编写好的作业。
分时操作系统:分时操作系统是为多用户和多任务而设计的操作系统,可以同时为多个用户提供服务,每个用户的任务在时间上交替执行,给用户一种同时独占计算机的感觉。
实时操作系统:主要应用于对时间敏感的系统,如航空航天、工业自动化等领域。实时操作系统分为硬实时和软实时系统,硬实时系统要求任务在严格的时间限制内完成,而软实时系统允许一定的任务延时。
网络操作系统:网络操作系统是为网络环境而设计的操作系统,提供了一组管理网络资源和服务的功能,使得多个计算机可以协同工作、共享资源。
分布式操作系统:分布式操作系统是一种多台计算机协同工作的操作系统,将计算和存储任务分布到多台计算机上,以提高整个系统的性能和可靠性。
微机操作系统:
嵌入式操作系统:嵌入式操作系统是运行在嵌入式系统中的操作系统。嵌入式系统通常具有资源有限、功耗低等特点,因此嵌入式操作系统需要具备小巧、高效的特点。
p、v、s机制
互斥:
同步:
临界资源:一次只能给一个进程使用的资源。
临界区:要使用临界资源的这一段程序代码就叫做临界区。
PV操作:
三态模型
运行态:进程已获得cpu,其程序正在执行。
就绪态:进程获得cpu以外的所有必要资源,只要再获得cpu便可立即执行。
等待态:进程不具备运行条件,正在等待某个时间完成的状态。
死锁
不发生死锁的最小资源计算:给每一个进程分配其所需资源数的最大数少一个资源以后,系统还有一个资源剩余时不发生死锁【最大资源>进程数(每个进程需要的资源数-1)+1】。
进程资源图
文件管理
存储管理
静态类型语言:数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++ 是静态类型语言的典型代表,其他的静态类型语言还有 C#、JAVA 、golang等。
动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型(变量使用之前不需要类型声明),该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python 和 Ruby 就是一种典型的动态类型语言,其他的各种脚本语言如 JavaScript 、Shell也属于动态类型语言。
解释性语言:
编译性语言:看是否生成目标程序,有就是编译。
符号表管理和出错处理贯穿于编译器工作始终。
静态语义错误:类型不一致、参数不匹配。。
动态语义错误:执行程序的时候才出错(死循环、变量取零时作除数、引用数组元素下标越界)。
标识符的作用:命名变量、函数、方法、类、常量等。
数据结构与算法:
数据结构的概念:数据元素的结合或数据对象的结合,以及元素之间的相互关系或构造方法。
数据结构是存储数据的一种表现形式,算法是解决问题的一种设计。
算法的五大特性:
输入:算法具有0个或多个输入
输出:算法至少有1个或多个输出
有穷性:算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成
确定性:算法中的每一步都有确定的含义,不会出现二义性
可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成
常用的数据运算:插入、删除、查找、修改、排序
常用的数据结构和算法:
数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树
算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配法。
常见时间复杂度对比:
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2^n) < O(n!) < O(nn)
多媒体分类:感觉媒体、表示媒体、显示媒体、存储媒体、传输媒体。
色泽三要素:亮度(指光的明亮程度,反馈的是颜色的深浅程度)、色调(指颜色的类别)、色饱和度(指颜色的深浅程度)
常见图像图形格式:
静态图像:GIF、TIF、BMP、PCD、PCX、JPG
动态图像:AVI、MPG