写在前面,这是自己准备考研复试,看的一些视频,总结下来的知识点。当然如果这篇文章能够帮助到你,可以点赞收藏,如果写的不妥的地方,欢迎指出。
数据库
第一章
Data:描述现实世界的一些符号,包括图片,声音,多媒体等形式,和语法,语义有关系。
DB:指长期存储在计算机内的有组织、可共享、大量的数据
DBMS:用户和操作系统之间的数据管理运用,帮助我们更有效的存储数据,有以下几个功能,数据定义,数据操作,数据管理与维护,数据库的创建与运行,为我们的用户提供了公共接口
DBS:是计算机引入了数据库之后的系统,包括数据库,数据库管理系统,应用程序,用户
DBA:是数据库管理员,从事管理与维护
数据库的优点:
文件系统的缺点:
- 冗余度高:面向某一应用程序
- 可共享性差:由应用管理
- 独立性差:数据不一致
- 内部有结构,整体无结构
数据模型:是数据库系统的核心、基础,它是对现实数据特征的一个抽象,其概念:严格定义的概念集合,描述了系统的静态特征(数据结构,描述数据库组成对象与联系,根据数据结构的类型来划分数据模型),动态特征(数据操作,对对象的实例所允许的操作集合和操作有关的规则),完整性约束条件(保证数据制约,依存规则,有正确,有效,相容)
- 概念模型:用户的观点来对信息、数据进行建模,用于设计阶段,也叫信息模型(信息世界)
- 实体:现实世界里客观存在,相互区分的事物(eg:学生,老师)
- 属性:描述实体具有的某一特征(eg:学生的体重,升高)
- 码:可以唯一标识实体的属性集
- 实体型:用实体名(属性名集合)来抽象同一类实体(老师的身高,体重;老师的工资,职称)
- 实体集:指同一类实体的集合(所有的学生)
- 联系:真实事物内部和事物之间的一种联系,在信息世界里面反应为实体的内部和实体间的联系(1:1,1:n,n:m)
- 逻辑模型和物理模型:逻辑模型,用于数据库的实现阶段;物理模型,数据在系统的表示方式和存储方法
常用的数据模型:
-
层次模型:只有一个跟节点,根以外的其他节点只有一个双亲节点,优点:查询效率高,结构简单清晰,完整性支持好。
-
网状模型:DBTG(CODASYL)允许一个以上无双亲,一个节点允许多个双亲。优点:能较好描述现实世界,查询简单,性能好,存储效率高,缺点:结构复杂,不易嵌入高级语言,必须了解存储路径。
-
关系模型:建立在严格的数学概念上。是规范化的,要求关系中的分量都是不可再分的数据项
-
E-R图又称实体关系图,是一种提供了实体,属性和联系的方法,用来描述现实世界的概念模型。通俗点讲就是,当我们理解了实际问题的需求之后,需要用一种方法来表示这种需求,概念模型就是用来描述这种需求。矩形为实体,椭圆为属性,菱形为联系,连线为关系,下划线为主键。
-
三级模式两层映像:三级模式是指外模式,模式和内模式。两层映像是外模式/模式映象:定义外模式与模式之间的对应关系。模式/内模式映象:定义数据全局逻辑结构与储存结构的对应关系。
第二章(关系数据库)
定义:支持关系模型的系统:数据结构+数据操作+完整性约束
笛卡儿积:域上面的操作,取域上不重复的集合来排列组合
三级模式结构:外模式,模式,内模式
关系的类型:
- 基本表(基本关系):实际存在的表,实际存储的逻辑表示
- 六条性质:列同性质,不同列可同域,列的顺序随意,行的顺序随意,任意两个元组候选码不能相同,分量是不可再分的数据项
- 查询表:查询结果对应的表
- 视图表:基本表或者是其他视图导出来的表,是一个虚表,不对应实际存储的数据
关系模式是对关系的描述 R(U,D,DOM,F)
- R:关系名
- U:组成关系的属性名集合
- D:U中属性的域
- DOM:属性向域的映像集合
- F:属性间数据的依赖关系集合
关系操作(操作的对象都是集合,包括关系代数(运算)和关系演算(谓词,分为域和元组)):
查询:
- 关系运算符:
- 选择:F®={t|t∈R∩F(t)=‘真’},从行来运算
- 投影 :Πa® = {t[A] | t ∈ R},从列来运算(会消除重复行)
- 连接:先进行笛卡儿积然后进行不同的选择(消除重复的列,以行来运算)
- 除:R÷S={t[X] | t∈ R∩Π(S)包含Y }先求X,Y,Z,再求X在Y上的投影,S在Y上的投影
- 集合运算关系:并,差,交,笛卡儿积
关系完整性:
- 实体:如果A是关系R的主属性,则其不能为空(实体和参照是关系的两个不变性)
- 参照:如果F是基本关系R里面的基本属性,和基本关系S的主码相对应(R,S可以相同,对于R中每个元组,在F上的值,要么取空值,要么等于某个元组的主码值)
- 用户自定义:是针对某一具体关系数据库的约束条件,反映具体应用某数据必须满足的某一要求
第三章:SQL
SQL:结构化查询语言,关系数据库的标准语言
功能:数据查询,数据定义,数据操纵,,数据控制,完整性,安全性等
目前没有DBS,SQL标准所有的概念和特性
SQL特点:
- 功能综合统一
- 高度非过程化,无需了解存取路径
- 面向集合的操作方式
- 以同一种语法结构,提高多种使用方式
- 简洁易学易用
基本表的操作:
-
创建表:
create table 表名(
cno char(4) primary key,
cname char(4) unique,
cpho char(11),
foreign key (cpho) references course(cno));
约束条件:primary key(主码,不能为空),unique(取值唯一,可以为空),NULL/NOT NULL(不能为空,只能列级约束), reference(外键约束),check(检查字段的范围)
-
修改表:alter table 表名 + add/alter/drop +操作属性 类型
alter table student add class_no char(10),address char(10);
alter table course add unique(cname)
-
删除表:
drop table 表名 [restrict(限制删除,表有其他依附会报错)/ cascade(级联删除,不会报错,但是和它有关的表触发器,视图等都会被删除)]
-
索引的建立和删除:
索引关键字相应地址关键表,主键会自动创建一个索引
- 主键索引:数据列不允许重复,不允许为NULL,一个表只能有一个主键。
- 聚簇索引:根据索引字段排序,并且按照排序好的顺序来存储
- 唯一索引:数据列不允许重复,允许为NULL,每一个索引只有唯一的数据记录对应,一般用在主键上。
- 复合索引:多组合,单独字段允许重复
索引的目的:加快查询速度,同时创建索引和维护索引消耗时间,索引占物理空间。
实现方法:B+树(动态平衡),Hash(速度快)
语句:create [unique/cluster] index 名字 on 表名 (列名 (ASC/DESC))
原理:把无序的数据变成有序的查询
查询数据:
-
select [ALL/DISTINCT] from <表达式/视图> [where 条件表达式] [group by 列名 [Having 条件表达式]] [order by 列名 [Asc | DESC]]
语句:1.select sno,sname from student
; (查询所有学生的学号和姓名)
2.select sname, 'Year of Birth;', 2004-Sage, ISLOWER(Sdept) FROM Student
;(查询所有学生姓名,出生年月和所在系,要求用小写字母表示所有系名)
3.select sname,sage from student where sname<20;
(查询所有年龄在20岁以下的学生姓名及其年龄)
4.select distinct sno from sc where grade<60;
(查询考试成绩有不及格的学生的学号。)
distinct:让重复的行不显示。select distinct Sno from sc;
5.select sname,sdept,sage from student where sage between 20 and 23;
(查询年龄在20-23之间的学生)
6.select sname,sdept,sage from student where sage not between 20 and 23;
(查询年龄不在20-23之间的学生的姓名…)
7.select sno,cno,grade from sc where cno in('1','4');
(查询选修1号和4号课程的学生的学号…) 或者用语句…cno=‘1’ or cno=‘4’;
8.字符串匹配,like和’='一样,like + % 表任意长度字符串,like+ _表任意单个字符
select sname,sno,sex from student where sname like '刘%'
(查询所有姓刘学生的姓名…)
select sname from student where sname like '欧阳__'
(查询姓“欧阳”且全名为三个汉字的学生的姓名)
select sname from student where sname not like '刘%'
(查询不姓“刘”的所有学生姓名)
9.order by:按一个或者多个属性列来排序
select sno,grade from sc where cno='5' order by score;
(查询选修了3号课程学生的学号及其成绩,查询结果按分数升序排列)
select * from student order by sdept, sage desc;
(查询全体学生情况,查询结果按所在系的系号升序排序,同一系中的学生按年龄降序排列)
10.聚集函数:where后面不能使用聚集函数
- 计数count:
select count(*) from student;
(查询学生总人数)
- 总和sum:
select count(distinct sno) from sc;
(查询选修了课程的学生人数)
- 平均值avg:
select avg(grade) from sc where cno='3';
(计算3号课程的学生平均成绩)
- 最大最小值max/min:
select max(grade) from sc where cno='2';
(查询选修2号课程的学生最高分数)
11.group by子句分组 + having(分组后筛选组)
select count(sno) from sc group by sno;
(求各个课程号及相应的选课人数)
select sno from sc group by sno having count(cno)>2;
(查询选修了2门以上课程的学生学号,先分组然后再找大于2的)
12.连接查询:
-
等值连接查询:‘=’是等值,select student.*, sc.* from student, sc where student.sno = sc.sno;
-
非等值连接查询:不是’='的都是非等值连接,
-
自身连接:在等值连接中把目标列中重复的列去掉,需要取别名 select first.cno, second.cpno from course first, course second where first.cpno =second.cno;
(查询每一门课的间接先选修课)
-
外连接:分左外连接(保留左边的全部,若右边没有就为null),右外连接(保留右边的全部,若左边没有就为null),
select student.sno,sname,ssex,sage,sdept,cno,grade from student left outer join sc on(stuendt.sno=sc.sno)
;(查询每个学生及其选修课程的情况,包括没有选课的学生)
-
复合条件连接:where子句中含多个连接条件
select student.sno,sname form student,sc where student.sno = sc.sno and sc.cno='2' and sc.grade>90;
(查询选修2号课程且成绩在90分以上的所有学生的学号和姓名)
13.嵌套查询:外层是父查询,内层是子查询
-
特点:
- 子查询不能使用order by子句
- 反映了SQL语言的结构化
- 有些嵌套查询可以用连接运算替代
-
不相关子查询
- 子查询的查询条件不依赖于父查询
- 由内到外,子查询的结果依赖于父查询的条件
-
相关子查询
- 子查询的查询条件依赖于父查询
- 先取外层第一和内层一起处理条件,若外层传过来的值为真,则取外层查询的当前元组放入结果表,然后取外层的下一条,直到取完为止。
-
分类
-
带in子查询:select sno,sname,sdept from student where sdept in (select sdept from student where sname='李华')
(查询与“李华”在同一个系学生的学生, 步骤:确定“李华”在哪个系–>查询所在sc系得学习的学生)
-
带有比较运算符的子查询:select sno,cno from sc x where grade >=(select avg(grade) from sc where y.sno=x.sno)(找出每个学生超过他选修课程平均成绩的课程号)
-
带some,any,all: select sname,sage from student where sage < any(select sage from student where sdept =‘cs’)(查询其他系中比计算机科学系某一学生年龄小的学生姓名和年龄)
-
带exists谓词的子查询
插入数据:
- 插入元组:一次可以插入多行
- 语句:insert into 表名(是否指定列) values(值);
- insert into student (sno,sname,ssex,sdept,sage) values(‘20001231’,‘李华’,‘男’,‘IS’,12);
- 插入子查询
- insert into dept_age(sdept,avg_age) select sdept, avg(sage) from student group by sdept; (对每个系,求学生的平均年龄,并把结果存入数据库)
修改数据:
-
语句:update 表名 set where…
-
update student set sage=22 where sno=‘123456’(将学生123456的年龄改为22岁)
update student set sage=sage+1(将所有学生的年龄增加1岁)
update sc set grade=0 where ‘cs’=(select sdept from student where student.sno = sc.sno);(将计算机科学系全体学生的成绩置为零)
删除数据:
-
语句:delete from 表名 where…
-
delete from student where sno=‘123456’(删除学号为123456的学生记录)
-
delete from sc(删除所有的学生选课记录)
-
delete from sc where ‘cs’ = (select sdept from student where student.sno = sc.sno)(删除计算机科学系所有学生的选课记录)
空值:
- 判断:is null 或者 is not null
- 约束条件:not null, 主码,unique都不能取空值
- 空值和另外一个值的运算结果是空值
视图:
-
特点:
- 虚表,是一个或者几个基本表导出来的表
- 只存放视图定义,不存放视图对应的数据
- 基本数据变化,视图的数据也会变
-
操作:
-
建立视图:create view 视图名(列,列) as 子查询 [with check option]
create view is_student as select sno,sname,sage from student where sdept=‘IS’;(建立信息系学生的视图)
-
with check option 当进行增删改的时候是不能破坏子查询的条件
-
删除视图:drop view 视图名 级联删除,基表删了没了,只能手动删视图
-
查询视图:和基本表一样
-
更新视图:和基本表一样
-
作用:
- 简化用户操作
- 多种角度看同一数据
- 对重构数据库提供一定逻辑独立性
- 适当安全性保护
- 更清晰的表达查询
重要知识点
事务
- 定义:事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。
- 特性:ACID
- A(atomicity)原子性:事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全完成,要么全不起作用。
- C(consistency)一致性:执行事务前后数据保持一致,多个事务对同一个数据读取的结果是相同的。
- I (isolation)隔离性:并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的。
- D(durability)持久性:一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。
什么是脏读?幻读?不可重复读?
- 脏读:某个事物已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。简单来说,就是你存了1000块钱在你妈的账户上,你妈去取的时候,发现并没有多的一千。
- 幻读:在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。
- 不可重复读:在一个事务的两次查询中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。
- 下面几个办法可以解决上面的问题:
- read-uncommitted:最低的隔离级别,允许读取尚未提交的数据,可能会引起脏读,幻读和不可重复读。
- read-committed:oracle默认的,允许读取并发事务已经提交的数据,可以阻止脏读,但是可能会引起幻读和不可重复读。
- repeatable-read:mysql默认的,对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但是幻读仍可能发生。
- serializable(可串行化):最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,事务相互之间不会产生干扰,可以阻止脏读,幻读和不可重复读。
锁
- 作用:当数据库有并发事务的时候,产生的数据可能不一致,这时候需要锁机制来保证访问的次序。
- MySQL中有共享锁和排他锁。
- 共享锁(读锁):当用户进行数据读取时,对数据加上共享锁。共享锁可以同时加上多个。例如,来看房时,多个用户可以一起看房。
- 排他锁(写锁):当用户进行数据写入时,对数据加上排他锁,排他锁只能加一个,他和其他锁是相斥的。例如,真正的入住一晚,在这期间,无论是入住的还是看房的都不可以。
- 什么是死锁,怎么解决?
- 定义:死锁是两个或多个事务在同一资源上相互占用,并请求锁住对方的资源,从而导致恶性循环的现象。
- 解决死锁的办法:
- 如果不同程序会并发存取多个表,尽量约定以相同的顺序访问表
- 在同一事务中,尽可能锁住所有资源。
- 乐观锁和悲观锁:
- 乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。
- 悲观锁:假定会发生并发冲突,屏蔽一切可能违法数据完整性操作。
三大范式
- 第一范式:每个列都不可以再拆分。
- 第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。
- 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。
- 在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。比如性能。事实上我们经常会为了性能而妥协数据库的设计。
引擎
- mysql中的数据、索引以及其他对象是一套文件系统的实现。
- innodb引擎:innodb引擎提供了对数据库ACID事务的支持。以下是其四大特性
- insert buffer
- double write
- 自适应哈希索引
- 预读(read ahead)
- MyIASM引擎:不提供事务的支持,也不支持行级锁和外键。
游标
定义:游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。
存储过程与函数
- 定义:存储过程时一个预编译的SQL语句,有点是模块化的设计,就是说只需要创建一次,以后在改程序中就可以多次调用。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。
- 优点:
- 存储过程时预编译过的,执行效率高
- 存储过程的代码直接存放于数据库中,通过存储过程名直接调用,减少网络通讯
- 安全性高,执行存储过程需要一定权限的用户。
- 存储过程可以重复使用,减少数据库开发人员的工作量。
- 缺点:
- 调试麻烦
- 不存在移植性问题
- 重新编译问题
- 维护起来很麻烦
触发器
用户定义在关系表上的一类由事件驱动的特殊的存储过程。触发器是指一段代码,当触发某事件时,自动执行这些代码。
数据结构
第一章
数据
- 数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入到计算机中被程序识别和处理的符号的集合。
数据元素(元基项最)
- 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素由多个数据项组成,数据项是构成数据元素的不可分割的最小单位。例如,学生记录时一个数据元素,它由学号,姓名,性别等数据项构成。
数据对象
- 数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
数据类型
- 数据类型是一个值的集合和定义再次集合上的一组操作的总称。
数据结构
- 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
数据结构的三要素
- 数据的逻辑结构
- 定义:逻辑结构是指数据元素之间的逻辑关系
- 包括:集合结构,线性结构,树形结构,图状结构
- 数据的存储结构(物理结构)
- 定义:存储结构是指数据结构在计算机中的表示。
- 包括:顺序存储,链式存储,索引存储,散列存储。
- 数据的运算:运算的定义是针对逻辑结构的,指出运算的功能。运算的实现是针对存储结构的,指出运算的具体操作步骤。
算法的基本概念
- 程序=数据结构+算法
- 算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。
- 特性:有穷性,确定性,可行性,输入和输出。
- 好的算法达到的目标:正确性,可读性,健壮性,效率于低存储量需求。
第二章
线性表
- 定义:线性表是具有相同数据类型的n个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。
- 分为顺序表和链表
顺序表
- 优点:
- 随机访问,O(1)
- 存储密度高,每个节点只存储数据元素
- 缺点:
- 扩展容量不方便
- 插入,删除操作不方便,需要移动大量元素
单链表
- 定义:单链表是指通过存储一组任意的存储单元存储线性表中的数据元素
- 创建分带头节点和不带头节点(实现比较麻烦)
- 双链表,循环链表,带头节点的单链表等等
- 优点:
- 缺点:不可随机存取,存储密度低
静态链表
- 定义:用数组的方式来描述线性表的链式存储结构,每个节点包括数据元素和下一个数据元素的数组下标。
- 优点:增删操作不需要大量移动元素。
- 缺点:不能随机存取,只能从头结点开始依次往后查找,容量固定不变。
第三章
栈
- 特点:只允许一端进行插入和删除操作,先进后出。
- 缺点:栈的大小不可变,解决办法–共享栈
- 应用:括号匹配,中缀表达式,后缀表达式(逆波兰表达式),在递归中的运用。
队列
- 特点:是一种操作受限的线性表,只允许在表的一端进行插入,另一端进行删除,先进先出。
- 循环队列:解决队列假溢出的现象
- 判断队空:Q.rear == Q.front
- 判断队满:(Q.rear + 1) % MaxSize == Q.front
- 判断有多少元素:(Q.rear - Q.front + MaxSize) % MaxSize
- 双端队列:允许两端都能进行插入和删除
特殊矩阵的压缩存储
- 对称矩阵
- 三角矩阵
- 三对角矩阵
- 稀疏矩阵
- 顺序存储–三元组
- 链式存储–十字链表法
第四章
串
- 定义:零个或多个字符组成的有限序列
- 模式匹配KMP算法
- next数组,原理:利用最长公共前后缀
第五章
树
- 遍历
- 前中后序遍历(递归思想)
- 前中后序遍历(非递归思想,利用栈来实现)
- 层次遍历(利用队列实现)
线索二叉树
- 作用:引入线索二叉树的作用是为加快寻找某节点的前驱和后继
树和森林
- 树转为二叉树,将树的右孩子变成左孩子的儿子,然后再旋转45°就变成了二叉树。
- 树转森林,直接将除第一颗树以外的树连接到第一颗树的根节点的右子树上
- 二叉树转树,与树转二叉树相反
二叉排序树(BST)
平衡二叉树(AVL)
- 定义:保证是二叉排序树的前提下,再保证任意结点的左右子树的高度差的绝对值不超过1
- LL:A的左孩子结点右上旋
- RR:A的右孩子结点左上旋
- LR:A的左孩子的右孩子,先左上旋再右上旋
- RL:A的右孩子的左孩子,先右上旋再左上旋
哈夫曼树
第六章
图
- 最短路:
- dijkstra算法:解决某一点到其余各点最短路径的问题。将顶点集合分为两组,一组为已经求出最短路径的点集合,第二组为其余未确定最短路径点的集合,按照最短路径长度递增次序依次把第二组的顶点加入到第一组中。
- Floyd算法:解决每对点之间的最短路径
- 最小生成树:
- prim算法:类似dijkstra算法
- kruskal算法:每次找最小的权值,然后判断该权值是否为同一个集合。依次找到n-1条,则存在最小生成树。
- 拓扑排序:找入度为零的点,然后依次将该点的指向点加入队列,最后判断队列是否为空,若进行n+1次都不为空,则有环。
- 关键路径:求事件的最早发生时间和最晚发生时间,相同的则是关键路径中的事件。
第七章
查找
- 顺序查找
- 分块查找:块内无序,块间有序
- 二分查找:
- 二叉排序树
- B树
- B+树
第八章
排序
- 插入排序(稳定):每次将一个待排序的数据插入到已排序的子序列中,依次对比、移动。
- 折半插入排序(稳定):用折半查找找到应该查找的位置,再移动元素。
- 希尔排序(不稳定): 先追求表部分有序,再逐渐逼近全局有序。
- 冒泡排序(稳定):依次对比交换,先把最小的冒到最前面,然后再进行n-1趟,相同元素不交换
- 快速排序(不稳定):每一趟都可以使一个中间元素确定其最终位置。用一个元素(也就是基准),把待排序序列划分为两部分,左边比基准小,右边比基准大,将该元素放到最终位置,依次递归进行。
- 选择排序(不稳定):n个元素选择排序需要进行n-1趟处理,先找一个未排序序列里面的第一个元素下标,然后依次将对比,找出中最小元素的下标,与其交换。
- 堆排序(不稳定):可以视为完全二叉树,根结点小于左右结点,先做向下调整函数。然后创建堆,在进行排序。
- 归并排序(稳定):进行两两合并成一个序列,然后再两两合并成一个序列,依次递归进行。
- 基数排序(稳定):先按个位开始排序,放到集合中,再进行十位排序,放到集合中,依次进行。
操作系统
第一章:计算机系统概述()
OS特征:
- 并发:是指处理多个同时的文件(一个人吃三个馒头),并行是同时处理多个文件(三个人吃三个馒头)。
- 共享
- 虚拟
- 异步:各进程向前推进的速度不相等
不同时期发展:
- 手工阶段:用户独占全机,资源利用率低
- 单道批处理系统:各作业一次运行,无需人工
- 多道批处理:资源利用率高,不提供人机交互功能
- 分时操作系统:采用时间片方式,可以人机交互
- 实时操作系统:及时可靠
- 网络操作系统:网络中各种资源的共享以及各台计算机通信
- 分布式操作系统:分布性、并行性
- 个人计算机
操作系统提供接口
- 命令接口
- 联机控制方式:类似cmd命令窗口
- 脱机控制方式:日常编程
- 程序接口:比如GUI
CPU状态
- 分类
- 核心态:类似于保护态,用户态不能直接访问核心态,必须通过以下方式。
- 用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取
- 用户态->核心态
操作系统内核
- 时钟管理
- 中断机制:更高优先级的进程进来了,就会中断现在运行的程序
- 原语:比如设备驱动控制,CPU切换
- 系统中的数据结构及处理
- 进程管理:PCB(进程控制块)
- 存储器管理:页表,段表,块表管理内存空间的数据结构
- 设备管理:设备管理器表,看打印机摄像头是否被使用
系统调用
- 设备管理
- 文件管理
- 进程控制:a状态转换运行态->堵塞态、就绪态
- 进程通信:消息方式,管道,共享空间,数据结构
- 内存管理
体系结构(是否集中处理)
- 大内核体系结构:
- 微内核体系结构:
第二章:进程管理()
进程
- 进程:程序是静态的,进程是动态的。是系统进行资源分配和调用的基本单位。
- 概念:形象的理解为一次实验
- 组成:
- 程序段
- 数据段
- PCB
- 进程描述信息
- 进程控制和管理信息
- 资源分配清单
- 处理机相关信息
- 特征:
- 动态性
- 并发性:多进程实体同时存在与内存中
- 独立性:独立获得资源和独立接受调度的基本单位
- 异步性:进程之间相互制约,使得进程具有执行的间断性
- 结构性:
- 状态:
- 进程控制:
- 进程创建
- 进程终止
- 进程阻塞和唤醒(阻塞为主动行为)
- 进程切换
- 进程的通信:
- 共享存储: 采用同步互斥工具PV,基于数据结构的共享和基于存储区的共享
- 消息传递(借助消息缓冲区):直接通信方式和间接通信方式
- 管道通信(半双工):管道是固定大小的缓冲区和一边写,同时一边读的问题
- 进程运行步骤:
- 编译:由编译程序将用户源代码编译成若干目标模块
- 链接:
- 由链接程序将编译后形成的一组目标模块及所需的库函数链接在一起形成一个完整的装入模块
- 链接方式:
- 装入:由装入程序将装入模块装入内存中运行
线程
- 特点
- 不拥有系统资源,共享进程资源
- 状态,就绪,阻塞,运行
- 处理机的独立调度单位
- 线程是轻量级的进程,线程比进程多
- 实现方式
- 引入目的
- 增加多道程序并发度
- 提高资源利用率和系统吞吐量
- 增加程序的并发性
调度
- 调度层次
- 高级调度(作业调度):从外存中调入作业,分配给他们内存必要资源,建立进程
- 中级调度(内存调度):堵塞态->挂起态or 挂起态->堵塞态
- 低级调度(进程调度):分配处理机
- 调度方式
- 评价指标
- CPU利用率
- 系统吞吐量(单位时间内CPU完成作业的数量)
- 周转时间(从作业提交到完成的时间)
- 响应时间:等待时间+要求服务时间/ 要求服务时间
- 调度算法
- 先来先服务算法FCFS
- 效率低
- 不利于短作业
- 适合CPU繁忙型,不适合I/O繁忙型作业
- 短作业优先算法SJF
- 优先级调度算法(产生饥饿)
- 分类:可剥夺优先级调度算法和非剥夺优先级调度算法
- 原则:
- 系统进程>用户进程
- 交互型进程>非交互型进程
- IO型进程>计算型进程
- 高响应比优先调度算法
- 计算公式:响应比=等待时间+要求服务时间/要求服务时间
- 克服饥饿
- 时间片轮转算法(分时系统):时间片的传达确定
- 多级反馈队列调度算法(产生饥饿)
进程同步
- 临界:临界资源和临界区
- 同步(直接制约关系):信号量实现同步
- 互斥(间接制约关系):
- 软件
- 单标志法:违背空间让进原则
- 双标志先检查法:违背忙则等待原则
- 双标志后检查法:产生饥饿状态
- Peterson’s Algorithm
- flag解决临界资源的互斥访问
- turn解决饥饿现象
- 硬件
- 中断屏蔽方法
- 方法
- 特点
- 限制了CPU交替执行能力
- 用户能力变大,能控制中断
- 硬件指令方法
- TestAndSet指令
- 读出制定标志后设该标志位为真
- true表示资源被占用
- 初值法false,空闲
- swap指令
- 信号量实现互斥
- 整型信号量
- 存在忙等
- 操作
- wait(占用资源)P操作
- signal(释放资源)V操作
- 记录型信号量
- 资源数目value
- 进程链表L(链接所有等待该资源得进程)
- 经典同步问题(统一把P理解为消耗,V理解为释放)
- 生产者-消费者问题
- 写者读者问题
- 哲学家进餐问题
- 吸烟者问题
管程
- 组成
- 名称
- 局部于管程内部的共享结构数据说明
- 对该数据结构进行操作的一组过程(或函数)
- 共享数据设置初始值
- 条件变量(进程阻塞的原因)
- wait(正在调用管程的进程用wait插入等待队列,释放管程)
- signal(唤醒一个因X条件而阻塞的进程)
死锁
- 定义:多个进程因竞争资源而造成的一种僵局
- 产生条件:
- 互斥条件:排他控制
- 不剥夺条件:该资源只能由本进程释放
- 请求并保持条件:进程已经保持一个资源,但提出新的资源请求。
- 循环等待条件
- 处理策略
- 死锁预防:闲置资源
- 避免死锁
- 死锁的检测
- 死锁的解除办法
第三章:内存管理()
功能:
- 内存空间的分配与回收
- 地址转换:逻辑地址到物理地址的转换
- 内存空间的扩充:虚拟内存的应用
- 存储保护:防止内存地址越界
装入模块放入内存方式:
- 绝对装入:适合单道程序
- 可重定位装入:静态重定位,适合多道程序
- 动态运行时装入:动态重定位
内存保护两种方法:
- CPU中设施一对上下寄存器
- 采用重定位寄存器+界地址寄存器
扩充内存:
- 多道程序环境下
- 虚拟内存管理
- 局部性原理:空间局部性和时间局部性
- 特征:多次性,对换性,虚拟性
- 管理内存方式
- 新增功能
- 请求调页功能
- 页面置换功能
- 最佳置换算法
- 先进先出算法:出现Belady异常
- 最近最久未使用算法
- 时钟置换算法:淘汰最近未使用的
- 改进时钟算法:最先淘汰被修改且没访问的
- 页面分配策略
- 固定分配局部置换
- 可变分配全局置换
- 可变分配局部置换
- 调入页面时机
- 异常:抖动
- 最大不超过max(计算机的地址位数,内存+外存的容量总和)
管理内存方式
- 连续
- 离散
- 分页存储管理方式:基本分页存储管理方式
- 单级分页
- 类似固定分区技术,产生内部碎片
- 逻辑结构分页号+页内偏移量
- 引入快表,加快地址变换
- 二级分页
- 分段存储管理方式:基本分段存储管理方式,分段存储的地址空间是二维的
- 段页式存储管理方式
第四章:文件管理
文件
- 分类
- 流式文件:无结构文件
- 记录式文件(一组相似的记录)
- 基本操作:创建,写(分配指针),读,文件寻址,删除文件。
- 打开文件的关联信息
目录结构
- 数据结构
- 操作:搜索,创建,删除,显示,修改文件
- 结构:单级,双极,多级,无环图目录结构
文件共享
- 基于索引节点的共享方式(硬链接):链接到多个目录中
- 利用符号链实现文件共享(软链接):只存放路径link
文件保护
- 访问类型:读、写、执行、添加
- 访问控制:控制用户身份
- 口令密码
文件系统层次结构
- 用户调用接口,文件目录系统,存储控制验证模块、逻辑文件系统与文件信息缓冲区、物理文件系统、设备管理程序模块
目录实现
- 线性列表和哈希表
文件分配方式
- 连续分配
- 链接分配
- 索引分配
文件存储空间管理
- 初始化:目录区和文件区
- 管理方法:空闲表法,空闲链表法,位示图法
磁盘
- 磁盘地址:柱面号,盘面号,扇区号
- 读写操作时间:寻找时间,延迟时间,传输时间
- 调度算法:先来先服务,最短寻找时间优先,扫描算法/电梯算法,循环扫描算法
- 磁盘管理:磁盘初始化,引导块,环块
第五章:IO外设管理
分类
- 块设备:比如磁盘
- 字符设备:比如打印机
IO控制方式
- 程序直接控制:CPU资源浪费
- 中断驱动方式
- DMA方式
- 通道控制方式
IO子系统层次结构
- 用户层IO软件
- 设备独立性软件
- 设备驱动程序
- 中断处理程序
- 硬件设备
IO管理内容
- 状态跟踪
- 设备存储
- 设备分配
- 设备控制
IO核心子系统
- 服务:IO调度,缓冲与高速缓存,设备分配与回收,假脱机,设备保护与差错处理
- 高速缓存+缓冲区:高速缓冲,缓冲区(单缓冲,双缓冲,循环缓冲和缓冲池)
- 设备分配时数据结构
- 设备控制表DCT
- 控制器控制板COCT
- 通道控制表CHCT
- 系统设备表SDT
- SPOOling技术
- 输入井和输出井:磁盘中
- 输入缓冲区和输出缓冲区:内存中
- 输入进程和输出进程
计算机网络
第一章 :概述
- 计算机网络概念
- 计网的定义:将地理位置不同的具有独立的计算机,通过通信线路连接,实现资源共享
- 计网的组成:
- 资源子网:提供软件资源和硬件资源
- 通信子网:提供信息交换的网络结点和通信线路
- 计网的类型:
- 按照拓扑分类:星型,树形,总线型,环形,网状结构。
- 按照范围分类:局域网(LAN),城域网(MAN),广域网(WAN),个人区域网(PAN),互联网(Internet)
- 按照传输方式分类:有线网络和无线网络
- 计算机网络体系结构
- 传输技术分类:广播式网络和点对点网络
- 传输方式
- 按照传输方向分
- 单工:只能单方向传输的工作模式
- 双工:在同一时间,线路上只能允许一个方向的数据通过
- 全双工:双方可以同时进行数据通信
- 按照传输对象(方式)分
- 数据交换
- 电路交换:整个报文从源头到终点链接的传输。 占用信道,效率不高
- 报文交换:整个报文先传送到相邻结点,全部储存下来查找转发表,再转发给下一个结点。 相邻结点可能收不到
- 分组交换:将一个报文分成多个分组,传送到相邻结点,再查找转发表,再转发给下一个结点。 速度慢
- 通信协议和体系结构
- 网络协议三要素:语法、语义、时序
- OSI参考模型(从低到高,下层为上层服务):
- (低)物理层:单位bit,利用传输介质为通信的网络结点之间的建立
- 数据链路层:单位帧,两个结点之间的服务
- 网络层:单位分组,提供点到点之间的通信
- 传输层:单位报文,提供端到端之间的数据传输服务,实现对数据进行控制和操作的功能
- 会话层:负责维护通信中两个节点之间的会话建立维护和断开,以及数据的交换
- 表示层:用户处理交互数据的表示方式,例如格式转换,加密和解密
- (高)应用层:为应用程序提供网络服务
- TCP/IP参考模型:
- 网络接口层:物理层和数据链路层(主机-网络层)
- 网际层:网络层
- 传输层
- 应用层:会话层、表示层、应用层
第二章:物理层(bit)
物理层的基本概念
- 四大特性
- 机械特性:接口是怎样的
- 电气特性:用多少伏的电
- 功能特性:线路上电平电压的特性
- 过程特性:实现不同功能所发射信号的顺序
- 两种信号
- 模拟信号:连续的,特定频段的信号,有更加丰富的表现形式
- 数字信号:离散的,不是1就是0,有强大的抗干扰能力
- 调制和编码
- 调制:模拟信号转换
- 编码:
- 区别:数据可以通过编码转换为数字信号,也可以通过调制转化为模拟信号。
- 传输介质
- 双绞线
- 屏蔽双绞线STP:抗干扰强,贵一些
- 非屏蔽双绞线UTP:便宜,抗干扰差
- 制作标准:
- 568B:橙白,橙,蓝,蓝白,绿,棕白,棕
- 568A:13,26调换
- 光纤
- 三大部分
- 源系统:发送数据的一端
- 传输系统:传输过程中的各种传输介质
- 目的系统:接收数据的电脑
物理层的基本通信技术
- 四种信道复用技术
- 复用技术:将多种不同的信号再同一信道上进行传输,复用技术主要是用于解决不同信号传输时应该如何区分。
- 频分复用FDM:划分不同频率来并行传输信号。
- 时分复用TDM:划分不同时间段来传输信号。
- 波分复用WDM:根据光波的波长进行传输(合波器耦合)
- 码分复用CDM:在同一时间同一频率根据传输的数据码进行区分
- 数据传输方式
- 通过同时间传输数量分为
- 通过数据报文的双方的行为分为
- 同步传输:双方都要做好发送和接受的准备,速度慢,可靠性高
- 异步传输:发送方准备好,直接发送,速度快
- 通过传输的信号分为
- 基带传输:传输数字信号
- 频带传输:传输模拟信号(带频字的都是模拟信号)
- 传输方向(方式):单工,半双工,全双工
- 传输对象:单播,组播,广播
第三章:数据链路层(帧)
基础概论
- 数据链路层概念:提供相邻结点的可靠数据传输
- 帧的概念
- 它是数据链路层的协议数据单元
- 组成
- 帧头:源MAC地址,目的MAC地址,类型(MAC地址48位,世界上唯一的)
- 数据
- 帧尾:校验
- 以太网数据帧中的MAC和LLC
- MAC
- MAC介质控制访问
- MAC实现在网络中的无差别传输
- LLC
- LLC逻辑控制访问
- LLC作为传输可靠性保障和控制
- 注解:数据链路层分为上层LLC(逻辑链路控制),下层MAC(媒体访问控制)
- 数据链路层的两种传输方式:单播和广播
- 数据链路层的三个基本问题
- 封装成帧:ppp协议
- 透明传输
- 差错检测:奇数校验,偶数校验,CRC
- 局域网中的设备
- 集线器:工作在物理层,实现数据恢复,共享带宽。
- 交换机:工作在数据链路层,为网络提供不同的结点进行传输,独享带宽。
- 网桥:两个端口的交换机,工作在物理层和数据链路层之间。
通信协议
- 冲突域和广播域
- 冲突域:交换机的每一个端口都是一个冲突域,冲突域只能发生在一个网段
- 广播域:交换机的所有端口都在一个广播域,广播域在一个和多个网段内发生
- 区别:
- 广播域可以跨网段
- 冲突域基于第一层(物理层),广播域基于第二层(数据链路层)
- 同一冲突域共享带宽
- 虚拟局域网(实验)VLAN
- VLAN即虚拟局域网,将一个物理的LAN在逻辑上划分成多个广播域的通信技术
- 优点和目的
- 划分广播域:减少垃圾数据
- 增强局域网的安全性
- 提高健壮性
- 灵活构建工作组
- 划分VLAN的方式
- 基于端口
- Accss:只允许通过一个VLAN
- Trunk:允许通过多个VLAN
- 基于子网
- 基于MAC地址
- 基于协议
- 基于匹配策略
- CSMA/CD
- 定义:CSMA/CD即载波帧听多路访问/冲突检测,总线型
- 四大要点:先听后发,边听边发,冲突停止,延迟后发
- PPP
- 点对点通信是一对一信道,因此不会发生碰撞,单播
- PPP协议是为了两个对等节点之间的IP流量传输提高一种封装协议
- CRC
第四章:网络层(分组)
网络层的作用
网际层协议IP
- ARP地址解析协议:根据IP地址获取物理地址
- RARP反地址解析协议:根据物理地址获取IP地址
- ICMP网际控制报文协议:传输控制信息,ping
- IGMP网际组管理协议:提高组播的方式来解决广播的方式下带宽资源的浪费
IP地址()
- IP地址的概念
- IP地址:是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配以一个逻辑地址,以此来屏蔽物理地址的差异
- 组成:4个字节,32位组成,一般用点分
- IP地址和MAC地址的区别
- IP地址是一个逻辑地址,MAC地址是一个物理地址
- MAC地址是唯一的,而IP地址是不唯一的
- MAC地址工作在数据链路层,Ip地址在网络层
- MAC地址是48位,IP地址一般是32位
- IP地址的组成
- 主机地址和网络地址组成的
- 主机地址/主机号:标识某一台设备的地址
- 网络地址/网络号:表示某一个网段的地址
- 子网掩码:用于区分网络号和主机号
- IP地址的分类
- A类:前一个字节是网络号,第一位是0, 1-127 子网掩码255.0.0.0
- B类:前两个字节是网络号,前两位是10, 128-191 子网掩码255.255.0.0
- C类:前三个字节是网络号,前三位是110, 192-224 子网掩码255.255.255.0
- D类:前四位是1110,多播地址, 225-240
- E类:前四位是1111,保留 241-255
- 特殊地址
- 网络地址:主机号为全0的地址不可用
- 广播地址:主机号为全1的地址不可用
- 回环地址:127.0.0.0不可用
- 子网掩码用来区分IP地址的分类
- IPv6:16个字节,用十六进制来表示
子网划分()
- 子网划分
- 概念:通过子网划分来减少地址浪费VLSM。
- 方式:通过修改子网掩码,起到更加精细划分网络号和主机号的作用。
- 子网掩码一般与IP地址结合使用。
- VLSM:可变长子网掩码,是为了有效的使用无类别域间路由和路由汇聚来控制路由表的大小。
- 网络地址是主机号全为0,广播地址全为1
网络层的路由
- 路由
- 路由:指分组从源到目的地时,决定端到端路径的网络范围的进程。路由时网络层最主要的工作任务。
- 路由器:
- 网络层的基本设备
- 数据转发
- 一个端口代表一个网段,路由器中存在着通往各个网段的表格,叫做路由表。
- 路由表:存储计算机中特定的路径
- 网关:网络的关卡
- 路由获取方式:直连,静态,动态路由。
- 路由的配置方式
- 静态路由
- 静态路由:去哪个网段,忘哪儿走
- 缺省路由:不知道去哪个网段
- 动态路由
- 动态路由:通过动态路由协议来实现不同网段的路由互通,能够自动适应网络拓扑的变化。
- 动态路由协议
- RIP(路由信息协议):
- 基于矢量的动态路由协议
- 适用于中小规模的网络拓扑,最大跳数为15
- OSPF(开放式最短路径优先):
- 基于链路状态的协议
- 使用SPF算法,计算最短路径。树形协议。dijsktra算法的优化
- RIP和OSPF的区别
- RIP是基于矢量协议,OSPF是基于链路状态。
- RIP适用于中小型网络拓扑,OSPF适用于较大规模的网络。
- OSPF的收敛速度比RIP的更加迅速。
- OSPF防环,RIP不防环
第五章:传输层(报文)
传输层概论
- 传输层
- 传输层提供端到端的服务
- 从通信和信息处理的角度看,传输层向上层应用层提供通信服务
- 所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是很多端口,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器,为了对端口进行区分,将每个端口进行了编号,这就是端口号。
- 端口号
- FTP:21(20) :
- TELNET:23:远程登录
- SMTP:25
- DNS:53:域名系统
- TFTP:69:简单文件传输协议
- HTTP:80:超文本传输协议
- SNMP:161:简单网络管理协议
- HTTPS:443:超文本传输安全协议
传输层的两个重要协议()
-
TCP
-
UDP
- 用户数据报协议:UDP
- UDP是在IP数据报服务之上增加了一些功能,增加了复用和分用的功能以及差错检测的功能。
- 特点:
- UDP是无连接的
- UDP尽最大努力交付
- UDP面向报文且没有拥塞控制
- UDP开销较小传输效率较高
- UDP首部概念
第六章:应用层
应用层的作用
- 通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。应用层的内容就是具体定义通信规则
- 最贴近于用户的一层,为用户提供直接服务
应用层中常见的协议
- 域名系统DNS
- 域名结构:每个域名用标号隔开,mail.cctv.com 三级域名.二级域名.顶级域名
- 域名服务器:迭代和递归
- DNS端口号53
- 文件传输协议FTP
- 使用TCP连接,传输数据
- 端口号是21(20),20是发送数据
- 远程终端协议TELNET
- 使用TCP连接,远程登录到远地的另一台主机上
- 端口号23
- 万维网和HTTP协议
- 超文本传输协议HTTP,是一个简单的请求-响应协议
- 端口号80
- 电子邮件协议
- SMTP电子邮件传输协议----端口号25
- POP3邮局协议版本3—端口号110
- DHCP动态主机配置协议
- 指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码
- 端口号–68
第七章:网络安全
- 网络安全概论
- 网络完全:是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶魔的原因而遭受破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。
- 计算机网络面临的威胁主要分为两大类
- 主动攻击
- 定义:主动的去做一些在网络基础上的恶意行为。恶意篡改信息数据,发布恶意程序脚本等待。
- 包括,篡改,恶意程序和拒绝服务
- 被动攻击
- 定义:被动攻击主要是收集信息而不是进行访问。不改变数据本身的结构,也不对软硬件数据造成影响。
- 包括,截获,窃取和流量分析
- 网络系统的特性:
- 保密性:信息不泄露给非授权用户、实体或过程,或供其利用的特性。
- 完整性:数据未经授权不能进行改变的特性。即信息在存储或传输过程中不保持不被修改,破坏和丢失的特性。
- 可用性:需要时能否存取所需要的信息。
- 可靠性:对信息的传播及内容具有控制能力。
- 不可抵赖性:出现安全问题时提供依据与手段。
- 加密和交互
- 加密和解密
- 加密
- 定义:是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,任然无法了解信息的内容。
- 加密手段:
- MD5加密(信息-摘要算法):128位
- AES加密(密钥加密):128、192、256位
- SHAI加密(安全哈希算法):160位
- RSA加密(公钥加密,私钥解密):1024位
- 解密:加密的逆过程就是解密
- 公钥和私钥
- 对称加密
- 同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
- 非对称加密(安全性高)
- 使用非堆成的加密方式时,会发生两把钥以发送方利用自己的公钥加密,接收方利用自己的私钥解密。
- 数字签名的四大特点:防止重放攻击,防止数据伪造,防止数据被篡改,防止数据抵赖。
- 防火墙:防火墙时一种访问控制技术,可以严格控制进出网络边界的分组,禁止任何不必要的通信,来减少潜在入侵的发生。
计算机组成原理
第一章:计算机基本概念
冯·诺依曼结构特点
- 采用二进制表示信息
- 存储程序的工作方式(核心),指令采取串行执行方式
- 五大部分:运、控、存、I/O
计算机系统的层次结构(由上到下)
- 微程序控制器硬件逻辑部件(微程序级)
- 机器语言(指令系统)(传统机器级)
- 操作系统级
- 语言处理程序
- 作为软件资源的应用程序
- 数学模型、算法应用程序
机器语言、汇编语言和高级语言
- 机器语言:用二进制代码表示的计算机语言,机器可以直接执行用机器语言编写的程序
- 汇编语言:一种用助记符号表示的与机器语言一一对应的语言,用汇编语言编写的程序要经过汇编后才能执行。
- 高级语言:用高级语言编写的程序要经过解释和编译才能执行。
编译程序、解释程序和汇编程序
- 编译程序:编译程序是先完整编译后运行的程序,编译程序把高级语言源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后让计算机去执行这个目标程序,得到计算结果。如C、C++等。
- 解释程序:一句一句翻译且边翻译边执行的程序,是高级语言翻译程序的一种,它将源语言书写的源程序作为输入,解释一句就提交给计算机执行依据,不形成目标程序。如Python、JavaScript。
- 编译程序和解释程序最大区别在于:前者生成目标代码,而后者不生成。
- 汇编程序是用汇编语言编写的程序,与编译程序、解释程序完全不是一个概念。
计算机硬件系统五大部分与关系
- 运算器、控制器、存储器、输入设备、输出设备。
- 两种信息流:控制信息流和数据信息流
计算机硬件可以直接执行的是:机器语言
计算机存储系统:主存、辅存、高速缓存(cache)
计算机硬件连接方式:总线
第二章:数据信息表示方法
进制转换
- 非十进制转换为十进制:用幂次数来累加,小数点后面用负几次方来看。
- 十进制变非十进制:
- 二八,二十六等转换:多数字拼凑,且都是不够分则补零
符号数表示
- 第一位是符号位
- 原码:最高位为符号,其余二进制真值
- 补码:最高位符号
- 反码:原码符号不变,其他按位取反
- 移码:补码符号位取反
溢出判断
数据的存储和排列
- 大端方式,最高的放前面,----相反放
- 小端方式,最低的放前面,----顺着放
IEEE7.54
第三章:内存管理
内存器概述
- 按在计算机中的作用分类
- 主存储器,又称内存,用来存放计算机运行期间所需的大量程序和数据,CPU可以直接随机地对其进行访问,也可以和高速缓冲存储器(Cache)及辅助存储器交换数据。其特点是容量较小、存储速度较快、单位价格较高。
- 辅助存储器,又称外存,是主存储器的后援存储器,用来存放当前暂时不用的程序和数据,以及一些需要永久性保存的信息,它不能与CPU直接交换信息。其特点是容量极大、存取速度较慢、单位成本低。
- 高速缓冲存储器,又称Cache,位于主存和CPU之间,用来存放正在执行的程序段和数据,以便CPU能高速地使用它们。Cache 的存储速度可与CPU的速度相匹配,但存储容量小、价格高。目前的高档计算机通常将它们制作在CPU中。
- 按照存储介质分类:磁表面存储器(磁带、磁盘)、磁心存储器半导体存储器(MOS型存储器、双极型存储器)和光存储器(光盘)。
- 按存取方式分类:
- 随机存储器(RAM):存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存取单元的物理位置无关。其优点是读写方便、使用灵活,主要用作主存或高速缓冲存储器。内存条是RAM
- 只读存储器(ROM):存储器的内容只能随机读出而不能写入。信息一旦写入存储就固定不变,即使断电,内容也不会消失。磁盘就是ROM,结构简单,具有非易失性,所以可靠性高。
- 按信息可保存性:
- 断电易失:如RAM
- 断电不丢失:如ROM,磁盘,光盘
- 破坏性读:如DRAM
- 非破坏性读:如SRAM,磁盘等
存储器的性能指标
存储容量、存储速度和单位成本。这三个指标相互制约,设计存储器系统所追求的目标是大容量、高速度和低成本。
存储器的层次化结构
- 多级存储系统
- 为了解决存储系统大容量、高速度和低成本三个相互制约的矛盾,在计算机系统中,通常采用多级存储器结构,CPU-Cache-主存-磁盘-磁带和光盘。
随机存储器
-
SRAM和DRAM的区别
- SRAM(静态随机存储器):存取速度快、但集成度低,功耗较大,一般用来组成高速缓冲存储器。
- DRAM(动态随机存储器):只使用一个晶体管,比SRAM的密度要高很多。采用地址复用技术。相对SRAM来说,DRAM具有容易集成、价位低、容量大和功耗低等优点,但DRAM的存取速度慢,一般用来组成大容量主存系统。
- 工作原理:集中刷新、分散刷新和异步刷新。以行为刷新单位。
- 只读存储器(ROM):
- 结构简单,具有非易失性,可靠性高
- 类型:固态硬盘,闪速存储器,掩模式只读存储器。
-
程序访问的局部性原理:时间局部性和空间局部性。
- 时间局部性:很可能是现在正在使用的信息,因为程序中存在循环。
- 空间局部性:是指在最近的未来用到的信息,很可能与现在正在使用的信息在存储空间上是邻近的。
主存与CPU的连接
- 主存与CPU通过数据总线、地址总线、控制总线相连接。
- 主存容量扩招:
- 存储容量=存储单元个数*存储单元字长
- 字扩展
- 位扩展
- 字位同时扩展
双端口RAM与多媒块存储器
- 双端口RAM:两个输入输出端,可并行读写数据,是空间并行技术
- 多模块存储器:
- 顺序方式:高位交叉编址,一个存储周期只能读出一个字的数据
- 交叉方式:低位交叉编址,一个存储周期能读出字体数*字长的数据
高速缓存器Cache
- 工作原理:程序访问的局部性原理
- Cache与主存之间交换块,Cache与CPU之间交换字
- Cache与主存的映射方式:直接映射,全相联映射,组相联映射
- Cache 中主存块的替换算法:随机算法,先进先出算法(FIFO),最近最少使用算法(LRU),最不经常使用算法(LFU)
- Cache写策略
- Cache写命中:
- 写回法:Cache写命中时只修改Cache内容,只能当Cache块被替换时才写回主存。
- 写一次法:Cache第一次写命中时要同时修改Cache和主存,之后的写命中同写回法。
- 全写法:Cache写命中时,同时修改Cache和主存。
- Cache写不命中
- 写分配法:加载主存中的块到Cache中,然后更新这个Cache块。
- 非写分配法:只写入主存,不进行调块。
- 非写分配法通常与全写法合用,写分配法通常和写回法合用。
虚拟存储器
- 将主存或辅存的地址空间统一编址
- 页式虚拟存储器:以页为基本单位的虚拟存储器
- 段式虚拟存储器:
- 段页式虚拟存储器:
- 快表:
第四章:指令系统
指令格式
- 基本格式:
- 零地址指令:空操作指令、停机指令、关中断指令
- 一地址指令:自加、自减、求反、求补
- 二地址指令:给出目的操作数的地址和源操作数的地址,结果保存在目的操作数地址中
- 三地址指令:同时给出目的操作数、源操作数、存放结果的地址。
- 四地址指令:在三地址指令基础上给出下条指令地址。
- 定长指令:在指令字的最高位部分分配固定的若干位表示操作码
- 变长指令:操作码长度不固定
指令的寻地址方式
- 有效地址(EA)指令中的地址码为形式地址,根据寻址方式得到有效地址
- 指令寻址:
- 顺序寻址:程序计数器(PC)+ 1 (1个指令字长)
- 跳跃寻找:通过转移类指令实现
- 数据寻址:
- 隐含寻址
- 立即寻址:操作数获取便捷,通常用于给寄存器赋初值
- 直接寻址:相对于立即寻址,缩短了指令长度
- 间接寻址:扩大了寻址范围,便于编址程序,易于完成子程序返回。
- 寄存器寻址:指令字较短,指令执行速度较快
- 寄存器间接寻址:扩大了寻址范围
- 相对寻址:用于控制程序的执行顺序、转移等。
- 基址寻址:用于为程序或数据分配存储空间
- 变址寻址:用于处理数组问题
- 堆栈寻址
复杂指令系统计算机(CISC)
- 指令庞大,指令长度不固定,大多数采用微程序控制器,编译程序难以优化
精简指令系统计算机(RISC)
- 指令精简,指令定长,采用流水线技术,以硬布线控制为主。
- RISC比CISC多的优点:
- 更能充分利用VLSI芯片的面积;
- 更能提高运算速度;
- 便于设计,可降低成本,提高可靠性;
- 有利于编译程序代码优化。
第五章:中央处理器
CPU
- 指令控制,操作控制,时间控制,数据加工,中断处理。
CPU的结构
- 运算器:
- 算术逻辑单元:主要功能是进行算术/逻辑运算
- 暂存寄存器:暂存从主存读来的数据(对应用程序员是透明的)
- 累加寄存器:是一个通用寄存器,用于暂存ALU运算的结果信息
- 通用寄存器:存放操作数及各种地址信息
- 程序状态字寄存器:保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息。
- 移位器:对操作数或运算结果进行移位运算
- 计数器:控制乘除运算的操作步数
- 控制器:
- 程序计数器:指出下一条指令在主存中的存放地址
- 指令寄存器:保存当前正在执行的指令(无需用户的任何干预,对用户是透明的)
- 指令译码器:仅对操作码字段进行译码,向控制器提供特定的操作信号
- 存储器地址寄存器(MAR):存放要访问的主存单元地址
- 存储器数据寄存器(MDR):存放向主存写入的信息或从主存读出的信息
- 微操作信号发生器:根据IR、PSW等内容及时时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种。
- 指令执行过程:
- 指令周期-机器周期-时钟周期-工作脉冲
- 指令周期:取指–间址–执行–中断
- 指令执行方案:
- 单指令周期:所有指令都选用相同的执行时间来完成
- 多指令周期:对不同类型的指令选用不同的执行步骤来完成
- 流水线方案:指令之间可以并行执行的方案
- 数据通路:
- 数据通路:数据在功能部件之间传送的路径
- 功能:
- 寄存器之间的数据传送
- 主存与CPU之间的数据传送
- 执行算术或逻辑运算
- 结构:
- CPU内部单总线方式:所有寄存器的输入端和输出段都连接到一条公共通路上
- CPU内部三总线方式:所有寄存器的输入端和输出端都连接到多条公共通路上
- 专用数据通路方式:根据指令执行过程中的数据和地址的流动方向安排连接线路,避免使用共享的总线。
- 控制器:
- 硬布线控制器:由复杂的组合逻辑门电路和一些触发器构成,由硬件给出控制信号。
- 微指令控制器:
- 概念:将每条机器指令设计成一个微程序,由微指令给出控制信号。
- 组成:控制存储器–微指令控制器–微指令形成部件–微地址寄存器
- 编码方式:
- 直接编码:字段中每一位表示一个微命令
- 字段直接编码:把互斥微命令放在一段编码
- 字段间间接编码:某些微命令需要另一个段的微命令来解释
- 格式:
- 操作控制字段:各个微操作信号集合
- 顺序控制字段:包括判断测试字段和后续微地址字段
- 指令流水线:
- 分类
- 按使用级别划分:部件功能流水线,处理机级流水线,处理机间级流水线
- 按完成功能划分:单功能流水线,多功能流水线
- 按连接方式划分:动态流水线,静态流水线
- 按有无反馈信后划分:线性流水线,非线性流水线
- 影响因数:
- 结构相关:多条指令在同一时刻争用同一资源而引起冲突
- 数据相关:必须等前一段指令执行后才能执行后一指令
- 控制相关:遇到转移指令和其他改变PC值得指令而造成断流
- 性能指标:吞吐率,加速比,效率
- 基本技术:超标量流水线技术,超流水线技术,超长指令字技术
第六章:总线
总线概述
- 概念:
- 总线:是一组能为多个部件分时共享的公共信息传送线路。
- 分时:指同一时刻只允许有一个部件向总线发送信息,若系统中有多个部件,则需要分时地向总线发送信息。
- 共享:总线上可以挂接多个部件,各个部件之间互相交换地信息都可以通过这组线路分时共享。
- 分类:
- 片内总线:芯片内部地总线,是CPU芯片内部寄存器与寄存器之间、寄存器与ALU之间地公共连接线
- 系统总线:
- 数据总线:用来传输各功能部件之间相互连接的总线
- 地址总线:用来指出数据总线上的源数据或目的数据所在的主存单元或I/O端口的地址。
- 控制总线:传输的是控制信息,包括CPU送出的控制命令和主存返回CPU的反馈信号。
- 通信总线:
- 在计算机系统之间或计算机系统与其他系统之间传送信息的总线。
- 总线结构
- 单总线结构:
- 将CPU、主存、I/O设备都挂在一组总线上
- 结构简单,成本低,易于接入新设备,但宽带低负载重,不支持并发。
- 双总线结构:
- 两条总线,一条是主存总线,一条是I/O总线
- 将低速设备从单总线上分离出来,实现存储器总线和I/O总线分离,但需要增加通道等硬件设备
- 三总线结构:
- 主存总线,IO总线,DMA总线
- 提高I/O设备的性能及系统的吞吐量,系统工作效率较低
- 总线性能指标
- 采用总线仲裁部件,以某种方式选择一个主设备优先获得总线控制权
- 集中式仲裁方式,链式查询方式,计数器定时查询方式,独立请求方式
- 分布仲裁方式
- 总线操作和定时
- 同步定时方式:系统采用一个统一的时钟信号来协调发送和接受双方的传送定时系统
- 异步方式:
- 通过应答信号实现总线控制
- 类型:不互锁方式,半互锁方式,全互锁方式
- 总线传输阶段:申请分配阶段,寻址阶段,传输阶段,结束阶段。
- 总线标准:ISA,EISA,VESA,USB等等。
第七章:输入/输出系统
I/O概念
外设
- 输入设备:鼠标键盘
- 输出设备:显示屏打印机
- 存储设备:磁盘光盘RAID
I/O接口
- I/O接口的功能:选址,传送命令,传送数据,反映I/O设备的工作状态
- I/O接口的基本结构:
- 缓冲+译码+状态+命令+逻辑电路
- 内部接口:与系统总线相连,并行传输
- 外部接口:与外设相连,传输方式不定
- 端口是可读可写的寄存器,若干端口+逻辑电路构成接口
- 端口与编址
- I/O端口:指接口电路重可被CPU直接访问的寄存器,主要有数据端口,状态端口和控制端口。
- 编址方式:
- 统一编址(存储器映射方式):把I/O端口当作存储器的单元进行地址分配。CPU无需专门的I/O指令,用统一的访存指令便可访问I/O端口
- 独立地址(I/O映射方式):设置专门的I/O指令来访问I/O端口
I/O方式
- 程序查询方式:
- IO接口设置数据缓冲寄存器和设备状态寄存器
- CPU不断查询状态寄存器的状态,直到外设备准备就绪则开始传输,CPU与IO串行工作
- CPU花费很多时间在查询和等待,效率低
- 程序中断方式
- 中断工作流程
- 中断请求:
- 中断源:
- 内中断:处理器和内存内部的中断,如运算错,页面错,地址错
- 外中断:处理器和内存外部的中断,如IO,ESC
- 硬中断:
- 软中断:
- 非屏蔽中断:
- 屏蔽中断:
- 中断判优
- 中断响应条件:中断请求,CPU允许中断及开中断,指令执行完毕且无更紧迫的任务
- 中断隐指令:
- 不是指令系统中的真正指令,转去执行中断服务程序由硬件直接实现的。
- 操作:保存断点,关中断,中断服务程序寻址
- 中断处理
- 关中断,保存中断,中断服务程序寻址,保存现场及屏蔽字,开中断,执行中断服务程序,关中断,恢复现场和屏蔽字,开中断,中断返回
- 多重中断
- 允许中断嵌套
- 中断服务程序中提前设置开中断,优先权高的有权中断优先级低的
- 中断屏蔽
- DMA方式:
- DMA控制器:
- 外设与内存之间有直接传输通道,数据传输过程不在需要CPU参与,中断仅在故障及传输结束
- 特点:IO与主机并行工作,程序和数据传输并行工作;主存既可以被CPU访问,也可被设备访问
- DMA传输过程:
- 预处理:CPU启动IO设备,IO设备准备好后向DMA发送DMA请求,DMA向CPU发送总线请求
- 传输:传输阶段完全由DMA硬件控制
- 后处理:DMA发送中断请求,CPU检查传输数据的正确性并决定是否继续传输
- 通道:
- 是一个处理器,有自己的指令系统,通道执行的程序称为通道程序,通道与主存共用内存
- 类型:
- 字节多路通道(低俗通道)
- 选择通道(高速通道,通道选择后设备独占通道)
- 数组多路通道(设备传输时独占,设备其他活动时挂起并转向其他设备)
- 工作过程
- 使用访管指令进入操作系统管理程序,CPU使用IO指令启动通道
- 通道执行通道程序,完成IO
- 通道程序结束后发出中断,CPU调用管理程序处理中断
协调发送和接受双方的传送定时系统
- 异步方式:
- 通过应答信号实现总线控制
- 类型:不互锁方式,半互锁方式,全互锁方式
- 总线传输阶段:申请分配阶段,寻址阶段,传输阶段,结束阶段。
- 总线标准:ISA,EISA,VESA,USB等等。
第七章:输入/输出系统
I/O概念
外设
- 输入设备:鼠标键盘
- 输出设备:显示屏打印机
- 存储设备:磁盘光盘RAID
I/O接口
- I/O接口的功能:选址,传送命令,传送数据,反映I/O设备的工作状态
- I/O接口的基本结构:
- 缓冲+译码+状态+命令+逻辑电路
- 内部接口:与系统总线相连,并行传输
- 外部接口:与外设相连,传输方式不定
- 端口是可读可写的寄存器,若干端口+逻辑电路构成接口
- 端口与编址
- I/O端口:指接口电路重可被CPU直接访问的寄存器,主要有数据端口,状态端口和控制端口。
- 编址方式:
- 统一编址(存储器映射方式):把I/O端口当作存储器的单元进行地址分配。CPU无需专门的I/O指令,用统一的访存指令便可访问I/O端口
- 独立地址(I/O映射方式):设置专门的I/O指令来访问I/O端口
I/O方式
- 程序查询方式:
- IO接口设置数据缓冲寄存器和设备状态寄存器
- CPU不断查询状态寄存器的状态,直到外设备准备就绪则开始传输,CPU与IO串行工作
- CPU花费很多时间在查询和等待,效率低
- 程序中断方式
- 中断工作流程
- 中断请求:
- 中断源:
- 内中断:处理器和内存内部的中断,如运算错,页面错,地址错
- 外中断:处理器和内存外部的中断,如IO,ESC
- 硬中断:
- 软中断:
- 非屏蔽中断:
- 屏蔽中断:
- 中断判优
- 中断响应条件:中断请求,CPU允许中断及开中断,指令执行完毕且无更紧迫的任务
- 中断隐指令:
- 不是指令系统中的真正指令,转去执行中断服务程序由硬件直接实现的。
- 操作:保存断点,关中断,中断服务程序寻址
- 中断处理
- 关中断,保存中断,中断服务程序寻址,保存现场及屏蔽字,开中断,执行中断服务程序,关中断,恢复现场和屏蔽字,开中断,中断返回
- 多重中断
- 允许中断嵌套
- 中断服务程序中提前设置开中断,优先权高的有权中断优先级低的
- 中断屏蔽
- DMA方式:
- DMA控制器:
- 外设与内存之间有直接传输通道,数据传输过程不在需要CPU参与,中断仅在故障及传输结束
- 特点:IO与主机并行工作,程序和数据传输并行工作;主存既可以被CPU访问,也可被设备访问
- DMA传输过程:
- 预处理:CPU启动IO设备,IO设备准备好后向DMA发送DMA请求,DMA向CPU发送总线请求
- 传输:传输阶段完全由DMA硬件控制
- 后处理:DMA发送中断请求,CPU检查传输数据的正确性并决定是否继续传输
- 通道:
- 是一个处理器,有自己的指令系统,通道执行的程序称为通道程序,通道与主存共用内存
- 类型:
- 字节多路通道(低俗通道)
- 选择通道(高速通道,通道选择后设备独占通道)
- 数组多路通道(设备传输时独占,设备其他活动时挂起并转向其他设备)
- 工作过程
- 使用访管指令进入操作系统管理程序,CPU使用IO指令启动通道
- 通道执行通道程序,完成IO
- 通道程序结束后发出中断,CPU调用管理程序处理中断