第一章
计算机由五个基本部分组成:运算器、控制器、存储器、输入设备、输出设备
程序的三种基本结构(顺序、选择、循环)
1.什么是信息,信息和数据的区别和联系在何处?
信息是经过加工、具有一定含义的且对决策有价值的数据。
信息与数据的关系
信息是有一定含义的数据
信息是经过加工(处理)后的数据
信息是对决策有价值的数据
2.信息有哪些基本属性
事实性
等级性
可压缩性
可扩散性
可传输性
共享性
增值性与再生性
转换性
3.什么是计算机硬件,什么是计算机软件
计算机硬件(HardWare) 是指那些由电子器件和机械装置组成的“硬”设备,如键盘、显示器、主板等,它们是计算机能够工作的物质基础
计算机软件(SoftWare) 是指那些在硬件设备上运行的各种程序、数据和相关的技术资料,如Windows系统、数据库管理系统等。
4.计算机软件有那几类,试举例说明
计算机软件系统由系统软件和应用软件两个部分组成。
系统软件( System SoftWare)
是为了高效使用和管理计算机而编写的各种程序。如操作系统,数据库管理系统等
应用软件( Application SoftWare)
是指专门为解决某个应用领域里的总体任务而编制的程序。如游戏,办公软件等。
第二章
知识点
程序=数据结构+算法
数据元素是数据的基本单位,数据项是具有独立含义的最小标识单位。
什么是数据结构?数据结构是研究数据及数据元素之间关系的一门学科。它包括三个方面的内容:数据的逻辑结构、数据的存储结构、数据的运算。
数据的逻辑结构与数据的存储无关,它是独立于计算机的。
通常数据结构分为集合、线性、树形、图四类。
数据的存储结构包括顺序存储结构、链式存储结构、索引存储结构、散列存储结构
算法的特点?有穷性,确定性,可行性,输入输出
算法的描述,可以用流程图,自然语言或其他方式如数学语言或约定的符号语言来描述,c语言描述
衡量算法的标准:正确性,可读性,健壮性,效率和存储量需求
算法的时间复杂度是指在计算机上运行时所消耗的时间
算法的空间复杂度是指计算机执行过程中所需要的最大存储空间。
确定算法的时间和空间的方法有事后统计法和事前分析估算法
线性表的顺序存储结构就是将线性表的元素按其逻辑次序依次存放在一组地址连续的存储单元里
存放数据元素的结点至少包括两个域,一个域存放该元素的数据,称为数据域(data);另一个域存放后继结点在存储器中的地址,称为指针域或链域(next)。这种链式分配的存储结构称为链表。
栈(stack)是限定只能在表的一端进行插入和删除操作的线性表。特点:先进后出(FILO)或后进先出(LIFO)
队列(Queue)是一种先进先出(FIFO,First In First Out)的线性表。
循环队列的问题:无法区分队空和队满的方法,解决方法1.用一个标志位区分2,少用一个存储空间front==rear队空front == (rear+1)% maxsize队满
数组:常用语言都是以行优先顺序存放
树型结构是以分支关系定义的层次结构。
数型结构常用术语
结点:表示树中的元素。
结点的度:一个结点拥有的子树数目。如A结点的度为3,它有三个子树T1、T2和T3。E、F结点的度为0,它们没有子树。
叶子:度为零的结点称叶子或终端结点。
双亲(parent):一个结点是它的那些子树的根的双亲结点。
孩子(child):除根结点外每个结点都是其前趋结点的孩子。
兄弟(sibling):同一个双亲的孩子之间互为兄弟。如A是B、C、D的双亲;B、C、D是A的孩子;B、C、D互为兄弟。
结点的层次:根结点的层数为1,其它任何结点的层数等于它的父结点的层数加1。
树的深度:一棵树中,结点的最大层次值就是树的深度。图3-1中树的深度为4。
森林:森林是m(m≥0)棵互不相交的树的集合。
树的度:一棵树上所有结点的度的最大值就是这棵树的度。
有序树:树中结点在同层中按从左到右有序排列、不能互换的称为有序树,反之,称为无序树。
二叉树的定义:一个二叉树是一个有限结点的集合,该集合或者为空,或由一个根结点和两棵互不相交的被称为该根的左子树和右子树的二叉树组成。
二叉树的存储结构:通常用具有两个指针域的链表作为二叉树的存储结构,其中每个结点由数据域(data)、左指针(Lchild)、右指针(Rchild)组成。
二叉树的性质
性质1:在二叉树中,第i层的结点数最多有
2
i
−
1
2^{i-1}
2i−1(i≥1)个。
性质2:在深度为k的二叉树中结点总数最多有
2
k
2^k
2k–1个。
性质3: 对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。
特殊形式的二叉树
满二叉树:如果一棵二叉树的深度为k,并且含有2k–1个结点,则称此二叉树为满二叉树。图2-7是一棵深度为4的满二叉树。
完全二叉树:深度为k,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中的编号从1到n的结点一一对应时,称之为完全二叉树。
平衡二叉树: 二叉树上任一结点的左子树深度减去右子树深度的差值,称为此结点的平衡因子。若一棵二叉树中,每个结点的平衡因子之绝对值都不大于1,则称这棵二叉树为平衡二叉树。
一般树转换为二叉树的步骤:加线-抹线-旋转
二叉树的遍历:先序遍历,中序遍历,后序遍历
给定N个权值作为N个叶子结点,构造一棵二叉树若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。
哈夫曼树的构建方法:https://blog.csdn.net/lee18254290736/article/details/77618201
1.什么是算法,和程序有什么区别?
算法(algorithm)算法是解决某一特定类型问题的有限运算序列
算法的含义与程序十分相似,但二者是有区别的。一个程序不一定满足有穷性(死循环),另外,程序中的指令必须是机器可执行的,而算法中的指令则无此限制。一个算法若用计算机语言来书写,则它就可以是一个程序。
2.数据的存储结构有哪些?它们之间本质的区别?
线性存储结构和链式存储结构
数组静态分配内存,链表动态分配内存;
数组在内存中连续,链表不连续;
数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);
数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。
3.试编写算法求一只单链表的长度,并考虑表空的情况
int length(NODE *head)
{
NODE *p;
int j=0;
p=head->next;
if( p== null )
return j;//链表为空,返回0
while(p)
{
j++;
p = p->next;
}
return j; //返回链表的长度
}
以下两个问题在面试时也会经常碰到,熟记
4.试比较顺序表和链表的优缺点
顺序存储结构
优点
1.随机访问性强
2.查找速度快
缺点
1.插入删除效率低
2.可能浪费内存(在给长度变化较大的线性表预先分配空间时必须按照最大空间分配,使存储空间不能得到充分的利用)
3.内存空间要求高,必须有足够的连续内存空间。
3.表的容量难以扩充
链式存储结构
优点
1.插入删除速度快
2.内存利用率高,不会浪费内存
3.大小没有固定,拓展很灵活。
缺点
查找效率低
5.试比较单向链表和双向链表的优缺点
单向链表:
优点:单向链表增加删除节点简单。
缺点:只能从头到尾遍历。
双向链表:
优点:可以找到前驱和后继,可进可退。
缺点:增加删除节点复杂
6.试说明树和二叉树有何不同?为何要将一般树转换为二叉树?
树和二叉树的区别主要是二叉树的结点的子树要区分左子树和右子树
二叉树比树便于处理
一般树转换为二叉树
步骤:
(1) 加线:亲兄弟之间加一连线。
(2)抹线:对于每个结点,除了与它的第一个孩子保持联系外,除去与其它孩子的联系。
(3) 旋转:以树根为轴心,将整棵树顺时针旋转45度。
先序遍历,中序遍历,后序遍历
图的相关术语
(1) 图。图G由两个集合V(G)和E(G)所组成,记作G=(V, E)。其中,V(G)是图中顶点的非空有限集合,E(G)是图中边的有限集合。
(2) 有向图。如果图中每条边都是顶点的有序对,即每条边都用箭头表明了方向,则此图为有向图。有向图中的边也称为弧,用尖括号括起一对顶点表示。
E(G1)= {< V1, V2>,< V1, V3>,< V3, V4>,< V4, V1>}
如其中弧< V1, V2>,称V1为初始点或弧尾,V2为终端点或弧头。
(3) 无向图。如果图中每条边都是顶点的无序对,则称此图为无向图。无向边用圆括号括起的两个相关顶点来表示。
E(G2)= {(V1, V2),(V1, V3),(V3, V4),( V4, V1)}
(4) 子图。设有两个图GA和GB,且满足
则称GB是GA的子图
(5) 带权图。在图的边或弧上加上一个相关联的数(权),称为带权图或网。网分为有向网和无向网。
(6) 路径和回路。
在无向图中,从顶点Vp到Vq的路径是顶点序列 (Vp,Vi1,Vi2,…,Vik , Vq),且(Vp ,Vi1),(Vi1,Vi2)…(Vik ,Vq)都属于E中的边。
在有向图中,则由顶点的弧组成有向路径。
路径上边或弧的数目称为路径长度。
网的路径长度定义为路径上权值的和。
除第一个和最后一个顶点外,序列中其余顶点各不相同的路径称为简单路径。
第一个顶点和最后一个顶点相同的简单路径称为简单回路。
(7)连通图和连通分量。在无向图中,若从Vi到Vj存在路径,则称Vi到Vj是连通的。若图中每一对顶点都是连通,则称G为连通图。
连通分量是指无向图中的极大连通子图。
(8) 顶点的度、入度、出度。在无向图中,顶点的度就是和该顶点相关联的边的数目。
在有向图中,以某顶点为弧头的弧的数目,称为此顶点的入度;以某顶点为弧尾的弧的数目称为此顶点的出度。该顶点的度则是此顶点的入度与出度之和。
图的存储结构
邻接矩阵表示法和邻接表表示法。
1、邻接矩阵
根据图的定义可知,一个图的逻辑结构分两部分,一部分是组成图的顶点的集合;另一部分是顶点之间的联系,即边或弧的集合。因此,在计算机中存储图只要解决对这两部分的存储表示即可。
可用一个一维数组存放图中所有顶点的信息;用一个二维数组来存放数据元素之间的关系的信息(即边或弧的集合E)。这个二维数组称之为邻接矩阵。邻接矩阵是表示顶点之间的邻接关系的矩阵。
借助于邻接矩阵,可以很容易地求出图中顶点的度。
邻接矩阵有如下结论:
(1) 无向图的邻接矩阵是对称的,而有向图的邻接矩阵不一定对称。对无向图可考虑只存下三角(或上三角)元素。
(2) 对于无向图,邻接矩阵第i行(或第i列)的元素之和是顶点Vi的度。
(3) 对于有向图,邻接矩阵第i行元素之和为顶点Vi的出度;第i列的元素之和为顶点Vi的入度。
2、邻接表
邻接表是一种顺序分配和链式分配相结合的存储结构。它包括两个部分:一部分是链表;另一部分是向量。
在邻接表中,对图中每个顶点建立一个单链表,第i个单链表中的结点包含了与顶点Vi的所有邻接顶点。每个结点由三个域组成:邻接域adjvex、数据域data和链域nextarc
在邻接表上容易找到任一顶点的第一个邻接点和下一个邻接点,但要判定任意两个顶点(Vi和Vj)之间是否有边或弧相连,则需搜索第i个或第j个链表,因此不及邻接矩阵方便。
对一个图来说,邻接表不是惟一的,它取决于建立邻接表时,结点在每个单链表中的插入策略。另外,对于有向图,其邻接表中第i个单链表的结点个数就是此结点的出度;对于无向图,其邻接表中第i个单链表的结点个数就是此结点的度。
图 的 遍 历
深度优先搜索和广度优先搜索。
1.深度优先搜索DFS
深度优先搜索的基本思想是:
(1) 首先访问图G的指定起始点V0;
(2) 从V0出发,访问一个与V0邻接的顶点W1后,再从W1出发,访问与W1邻接且未被访问过的顶点W2。从W2出发,重复上述过程,直到遇到一个所有与之邻接的顶点均被访问过的顶点为止;
(3) 沿着刚才访问的次序,反向回退到尚有未被访问过的邻接点的顶点,从该顶点出发,重复步骤(2)、(3),直到所有被访问过的顶点的邻接点都已被访问过为止;若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。
2.广度优先搜索BFS
广度优先搜索(breadth-first search)类似于树的按层次遍历的过程。
假设从图中某顶点V0出发,在访问了V0之后依次访问V0的各个未曾被访问过的邻接点,然后分别从这些邻接点出发广度优先搜索遍历图,直至图中所有已被访问的顶点的邻接点都被访问到。若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。
具体遍历步骤如下:
(1) 访问V0。
(2) 从V0出发,依次访问V0的未被访问过的邻接点W1,W2,…,Wt。然后依次从W1,W2,…,Wt出发,访问各自未被访问过的邻接点。
(3)重复步骤(2),直到所有顶点的邻接点均被访问过为止。
查找和排序
查找的基本概念
查找是数据处理中最基本的操作之一,当查找所涉及的数据量很大时,查找方法的效率直接影响数据处理的速度。 在数据处理中,被查找的元素通常是以记录形式出现,即每一个数据元素(记录)由若干个数据项组成,其中能用来唯一标识记录的数据项称为主关键字(Primary Key)。查找就是根据给定值K,在查找表中确定一个关键字等于给定值K的记录或数据元素。若存在这样的数据元素,则称查找是成功的,否则称查找不成功。
常见查找算法
-
顺序查找(线性查找)
最简单、常用的查找技术。
基本思想:从第一个记录开始,依次将每个元素的关键字同给定值K进行比较,若某个元素的关键字等于给定值K,则表明查找成功,返回该元素的下标;反之,若直到所有元素都比较完毕,仍找不到关键字为K的元素,则表明查找失败,返回特定的值(常用−1表示)。若对此算法进行一些改进,在原表长n基础上在表尾增加一个关键字为指定值K的记录,可避免每“比较”一次,就要判别查找是否结束。当n很大时,大约可节省一半的时间。
2.对分查找
如果查找表中的记录按关键字有序,则可以采用一种高效率的查找方法——对分查找,也称二分查找
对分查找的基本思想是:对于有序表,查找时先取表中间位置的记录关键字和所给关键字进行比较,若相等,则查找成功;如果给定值比该记录关键字大,则在后半部分继续进行折半查找;否则在前半部分进行折半查找,直到找到或者查找范围为空而查不到为止。
对分查找的过程实际上是先确定待查元素所在的区域,然后逐步缩小区域,直到查找成功或失败为止。
算法中需要用到三个变量, low表示区域下界, high表示上界, 中间位置mid=(low+high)DIV 2。
对分查找只适用于以顺序存储结构组织的有序表。
3.分块查找
分块查找又称索引顺序查找,这是顺序查找的另一种改进方法。
它要求查找表“分块有序”。假如按关键字递增顺序进行分块排列,就是指第j块的所有记录的关键字均大于第j−1块的所有记录的关键字(j=2,3,…,n),并建立一个索引表。把每块中的最大关键字值及每块的第一个记录在表中的位置存放在索引项中。
整个查找过程分两步进行:
(1) 确定待查记录所在的块。
(2) 在块内查找。
二叉排序树的查找
若对查找表既允许进行查找运算,又允许进行插入和删除运算,则称该表为动态查找表。二叉排序树的查找就是动态查找。
1.二叉排序树的查找
二叉排序树(binary sort tree)或者是一棵空树;或者是具有下列性质的二叉树。
(1) 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2) 若它的右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
(3) 它的左、右子树也分别为二叉排序树。
2.二叉排序树的生成
对一组数据序列{K1,K2,…,Kn},先设一棵空二叉树,然后依次将序列中的元素生成结点后逐个插入到已生成的二叉排序树中。步骤如下:
(1) K1是二叉排序树的根;
(2) 若K2<K1,则K2所在的结点应插入到K1的左子树上;否则插入到K1的右子树上;
(3) 读Ki,若Ki< K1(根),则插入到根的左子树上,否则Ki插入到根的右子树上;
(4) 若i≤n,则继续执行步骤(3),否则结束。
哈 希 查 找
顺序查找、对分查找、分块查找、二叉排序树查找:
都需进行一系列和关键字的比较确定被查元素在查找表中的位置,查找的效率依赖于查找过程中所进行的比较次数。
哈希查找:
哈希查找方法是利用关键字进行某种运算后直接确定元素的存储位置,所以哈希查找方法是用关键字计算元素存储位置的查找方法。
1.哈希表的建立
哈希表的建立:以线性表中的每个元素的关键字K为自变量,通过一种函数H(K)计算出函数值,然后将该元素存入H(K)所指定的相应的存储单元。
查找时,只要根据要查找的关键字用同样的函数计算出地址H(K),然后直接到相应的单元中去取所要找的元素。称函数H(K)为哈希(Hash)函数,按这个思想建立的表为哈希表。
对于哈希法,主要考虑两个问题:
(1) 构造一个合适的哈希函数。分析数据元素的关键字集合的特点,找出适当的函数H(K),使计算出的存储地址尽可能均匀地分布在哈希表中;同时也希望函数H(K)尽量简单,便于快速计算;哈希函数H(K)一般应是一个压缩映象函数,它应具有较大的压缩性,以节省存储空间。
常用的构造哈希函数的方法有:
① 数字分析法;
② 平方取中法;
③ 除留余数法;
④ 折叠法;
排 序
排序是计算机程序设计中的一种重要运算,它的功能是将一个数据元素的无序序列调整为一个有序序列。经排序的数据若按由大到小的顺序排列,称为降序;反之,若按由小到大的顺序排列,称为升序。
1、简单选择排序
简单选择排序的方法是在所有的记录中选出关键字最小的记录,把它与第一个记录交换存储位置,然后再在余下的记录中选出次小的关键字对应的记录,把它与第二个记录交换,依此类推,直至排序完成。
简单选择的时间复杂度是O(n2)。
2.直接插入排序
插入排序的基本思想是把记录逐一按其关键字的大小插入到已经排好次序的记录序列中的适当位置,直到全部插入完为止。这很象打扑克牌时,一边抓牌,一边理牌的过程,每抓一张牌就把它插到适当的位置上去。
设有n个记录(R1,R2,…,Rn),已划分为已排序部分和未排序部分,即插入Ri时,(R1,R2,…,Ri−1)是已排好序的部分,(Ri,Ri+1,…,Rn)属于未排序部分。用Ri依次与Ri−1,Ri−2,…,R1进行比较,找出Ri在有序子文件中的插入位置,将Ri插入,原位置上的记录至Ri−1均顺序后移一位。
直接插入排序是稳定的,其时间复杂度为O(n2)。
3.冒泡排序
冒泡排序的基本思想为:从R1开始,两两比较相邻记录的关键字,即比较Ri和Ri+1(i=1,2,…,n−1)的关键字大小,若逆序(如Ki>Ki+1),则交换Ri和Ri+1的位置,如此经过一趟排序,关键字最大的记录被安置在最后一个位置(Rn)上。然后再对前n−1个记录进行同样的操作,则具有次大关键字的记录被安置在第n−1个位置(Rn−1)上。如此反复,进行n−1趟冒泡排序后所有待排序的n个记录已经按关键字由小到大有序。
冒泡排序方法是稳定的,其在最坏情况下的时间复杂度为O(n2)。但由于冒泡排序能“判别”记录的状态,所以当待排序序列是基本有序的序列时,采用冒泡排序方法的效率是很高的。
4.快速排序
快速排序也称作划分交换排序,和冒泡排序同属于交换排序类型。它是目前内部排序中速度最快的排序方法,故称为快速排序,其平均时间复杂度为O(nlogn) 。它的基本思想是:在待排序的n个记录中任取一个记录R(通常为第一个),以该记录的关键字K为准,将所有剩下的n−1个记录划分为两个子序列,第一个子序列中所有记录的关键字均小于或等于K;第二个子序列中所有记录的关键字均大于K。
待排序记录数n较小:直接插入、简单选择
基本有序:直接插入、冒泡
快速排序:越乱越好
画一棵对20个记录进行对分查找的判定树,并求等概率情况下的平均查找长度
第三章 操作系统
计算机系统分层
操作系统的发展过程:
1.手工操作阶段
2.早期批处理阶段
3.执行系统阶段
4.多道程序系统
操作系统是计算机系统中的一个系统软件,它是这样一些程序模块的集合:它们能够有效地组织和管理计算机系统中的硬件与软件资源,合理地组织计算机工作流程,控制程序的执行,并向用户提供各种服务功能,使用户能够灵活、方便和有效地使用计算机。
操作系统一般分为三种基本类型:
即多道批处理操作系统、分时系统和实时系统。
1多道批处理操作系统
多道:计算机内存中同时可以存放多道作业
批处理:用户与作业之间没有交互作用,用户不能直接控制作业的运行,“脱机操作”
用户作业 外存缓存器 内存执行
用于计算中心等较大型计算机系统,目的是为了充分利用中央处理机及各种设备资源。
2分时系统
多道批处理系统能提高机器资源利用率,但用户不能与机器直接交互,对程序开发带来很大不变。
在一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户共享主机中的资源,每个用户都可通过自己的终端以交互方式使用计算机。
将CPU分割成很小的时间片轮流分配给多个用户,时间片分割得很小,如同自己独占一台计算机。
3实时系统
1)实时控制系统
把计算机用于生产过程的控制,要求实时采集现场数据,实时处理数据,进而自动控制执行机构,使某个参数按预定规律变化,以保证产品质量和提高产量。
用于武器的控制,如火炮的自动控制系统,飞机的自动驾驶系统,导弹的制导系统等。
(2)实时信息处理系统
由一台或多台主机通过通信线路连接成百上千个远程终端,计算机接收从远程终端发来的服务请求,根据用户提出的问题,对信息进行检索和处理,并在很短时间内为用户做出正确回答。如:飞机订票系统。
操作系统的功能和特征
1、操作系统的功能
(1)处理器管理
(2)存储管理
(3)设备管理
(4)文件管理
(5)用户接口
操作系统的特性:并发性,共享性,不确定性
存储管理
存储器管理分为实存储器管理和虚拟存储器管理。
存储器的分级结构:三级,高速缓存(cpu可访问),内存(cpu可访问),外存
用户的程序在运行时应存放在主存中,以便处理机访问。但是由于主存容量有限,所以把那些不马上使用的程序、数据放在外部存储器(又称次级存储)中。当用到时再把它们读入主存。
存储管理功能
(1) 在多个用户间分配主存-主存分配
(2) 映射逻辑地址为存贮地址-地址映射(转换)
(3) 对主存中信息提供保护-存储保护
(4) 扩充逻辑存储区-主存扩充
(1) 主存分配:
多道程序中,内存需要存放多个用户作业,因此内存分配要解决如何合理分配内存空间以保证
各个作业互不冲突,而且系统提供适当的分配算法,以提供内存的利用率和运行效率。
(2)地址转换或重定位
地址空间与存储空间
物理地址:(需要区分存贮器中不同的存贮单元 统一编号, 这些编号称为地址)
物理地址是主存的真实地址 ––– 绝对地址是:存储控制部件能够识别的主存单元编号(或字节
地址)。
名空间 ––– 存放源程序的空间。
地址空间 ––– 一个目标程序所占有的地址范围。
逻辑地址:又称相对地址,是指相对于某个基准量(通常用0)编址时所使用的地址,
相对地址常用于程序编写和编译过程中。
地址映射(重定位)
当用户程序要调入内存时,必须把相对地址转换为绝对地址,同时要包括对程序中与地址有关的指令进行修改,这一过程称为地址映射(重定位)
静态重定位
在程序装入时进行,通过处理机中一对界地址寄存器来实现。
物理地址=逻辑地址+下界地址
动态重定位 :
在程序执行过程中进行,当CPU访问内存指令时由动态变换机构自动进行地址转换。
(3) 存储保护:
设置两个界地址寄存器,分别用于存放正在执行程序的上界和下界。系统需对每条指令所访问的地址进行越界检查,如果发生越界,便发出越界中断请求,以停止该程序的执行。
(4) 主存扩充:
把内外存联合起来向用户提供一个容量比实际内存大得多的存储空间。通常采用的内存扩充技术有覆盖、交换和虚拟存储技术。
实存管理
虚拟存储管理
逻辑地址→虚拟地址 虚拟地址空间
主存地址→实在地址 实在地址空间
程序和数据所在的虚拟地址必须放入主存的实在地址中才能运行。因此要建立虚拟地址和实在地址的对应关系,这种地址转换由动态地址映象机构来实现。
1.分页存储管理
系统以页架为单位把内存分配给各作业,每个作业占有的内存无须连续,而且作业的所有页面也不一定同时都要装入内存。
2.分段存储管理
段
按模块分配存储空间,一个程序一般由若干个标准或非标准程序模块组成,分段管理把每个模块的地址空间称为段。每个段规定一个段号,每个段的地址空间都从“0”开始。
3.段页式存储管理
段页式管理是分页和分段管理结合的结果。
处理器管理
1.作业、程序与进程
作业是用户在一次算题过程中或一个事务处理中要求计算机系统所做工作的集合。
进程可以看作程序的一次执行,即是在指定内存区域中的一组指令序列的执行过程。
进程与程序的区别
区别:a.进程是程序的执行,是动态概念,程序是一组指令的集合,是静态概念。
b. 进程有生命过程的,进程的诞生(创建)和死亡(撤销),而程序没有,因此进程的存在是暂时的,程序的存在是永久的。
存储器管理目的:选择哪一个作业进入内存;如何在进程间分配处理器
处理器管理,又称为处理器调度,一般分为两级:
作业调度,又称高级调度或宏观调度。
功能:根据某调度原则,选取某些作业进入内存,为它们分配必要的资源,建立相应的进程,并当作业完成后做好一切善后工作。
进程调度又称为低级调度或微观调度。
功能:按照某种调度原则,实现处理器在各进程间的转换。
系统为每个进程建立一个进程控制块(PCB)。
PCB是进程存在的唯一标志。
PCB中的信息分为:
说明信息:进程名、优先数、当前状态;
保留信息:保留该进程由运行状态转入阻塞或就绪状态时当时各寄存器的内容,便于该进程重新进入运行时恢复当时各寄存器状况。
处理机的数目一般总是少于进程数,在单处理机系统中,只有一个进程可真正获得处理。
原语是机器指令的延伸,是用若干条机器指令构成的,用以完成特定功能的一段程序。为保证操作的正确性,原语在执行期间是不可分割的。
用于进程控制的原语有:
(1) 创建进程原语 (2) 撤消进程原语 (3) 挂起进程原语 (4) 激活进程原语
多道程序并发运行出现的问题
对资源的共享问题
相关进程间的制约问题
进程间的通信问题
进程的死锁问题
1.进程的同步与互斥
进程的“同步”是指两个事件的发生存在某种时序上的关系,如果系统中有若干个进程要共同完成某一任务,那么它们之间必须协调配合,这种进程间的协调配合就称为进程的同步
进程“互斥”是当进程要求共享系统中某些硬件或软件资源,而这些资源却又要求排他性使用时,这样往往引起由于多个进程竞争同一资源使运行结果出现问题。为了防止发生这种情况,必须把多个进程使用同一资源的过程“分离”开来,也就是互斥的使用该类资源。
2.解决同步与互斥的工具
信号量(P-V操作)
2.进程通信
负责进程之间的信息交换称为进程通信 (各进程为了保持联系而交换信息)。P-V操作也是一种通信方式,但只适合传递少量信息,效率较低,称为低级通信方式.除此之外还有较高效率,传递大批数据的高级通信方式.
(1)直接通信 一个进程直接发送一个消息给接收进程
(2)间接通信 进程不把消息直接发给接收者进程,而把消息放在某个双方共知的信箱中。
3.死锁
(1)死锁的原因和必要条件
死锁的定义:死锁是指计算机系统中进程所处的一种状态。即在系统中的一组进程,由于竞争资源而永远阻塞,称此时进程处于死锁状态
死锁产生的原因
系统资源不足
进程推进的顺序不当
死锁的必要条件
互 斥:所涉及的资源是非共享的
占有等待:进程在等待新资源时,继续占用已分配到的资源
不可剥夺:一个进程占有的资源不能被别的进程强行抢占
循环等待:一个进程获得的资源同时被另一个进程所请求,从而形成一个进程的循环链
解决死锁的方法:
死锁的预防
死锁的避免
死锁的检测和恢复
死锁定理:
系统在某一状态下死锁的充要条件是当且仅当某一状态下的进程-资源图是不可完全化简的。
死锁的恢复
资源剥夺法:强制性地从系统中撤消某些进程,并剥夺它们的资源给剩下的进程使用。这样被撤消进程前面已完成的工作全部损失了。
撤消进程法:使用一个有效的挂起和解除挂起机构来挂起一些进程,从挂起进程那里抢占资源以解除死锁。
设备管理
1.设备管理的功能
设备管理的功能是按用户需求制定分配和使用设备的策略,为I/O操作的进程分配一条传输信息的通路,最大限度的实行并行操作。
要求达到的目标是:(1)方便性(2)设备独立性(3)并行性(4)有效性与均衡性
2设备的简单分类
按设备的使用性质分:
独享设备
共享设备
虚拟设备
3.通道与中断
(1)循环测试I/O方式
(2)程序中断方式
(3)通道I/O方式
文件管理
文件的分类:
- 按用途分:系统文件,库文件,用户文件
(2) 按存取权限分:可执行、只读、读写、不保护
文件结构和存取方式
文件的逻辑结构
从用户的角度看到的文件面貌,也就是文件的记录结构。
(1) 顺序结构:一个逻辑文件的信息依次存于辅存的若干连续的物理块中。操作系统的用户接口
(2) 链接(或串联)结构
(3)索引结构(索引顺序结构)
操作系统的用户接口
程序一级的接口:在应用程序中以函数调用的方式来享用系统服务。
作业控制方面的接口:是用户在操作系统界面上以命令方式来操作和控制计算机的手段。
几种常用的操作系统接口:
Unix操作系统接口,shell外壳,实现用户与操作系统的交互。
DOS操作系统接口,为用户提供的界面主要是命令形式,通过命令用户与操作系统交互。
Windows系列操作系统接口,图形用户接口,界面友好,便于用户的使用。
1.操作系统的基本功能是什么?它包括哪些基本部分?
(1)处理器管理
(2)存储管理
(3)设备管理
(4)文件管理
(5)用户接口
构成部分:
(1)对CPU的使用进行管理的进程调度程序
(2)对内存分配进行管理的内存管理程序
(3)对输入输出设备进行管理的驱动程序
(4)对外存中信息进行管理的文件系统
2.试着说明虚拟机的概念及实现方法
在裸机外面每增加一个软件层之后就会编程一台功能更强的 机器,我们通常把这种计算机系统成为虚拟机
虚拟机的实现方法:在裸机上装上操作系统对机器进行首次拓展,再在操作系统的的基础上增加其他软件,这样就可以实现"虚拟机"
3.解释名空间,作业地址空间和存储空间的关系以及逻辑地址和物理地址的区别
存放源程序的空间称为名空间。
当汇编或编译程序将源程序转换成目标程序,一个目标程序所占有的地址范围成为地址空间,这些地址的编号是相对于起始地址而定的,一般定起始位零,称为逻辑地址或相对地址。
存储空间是指当目标程序装入主存后占用的一系列物理单元的集合,这些单元编号称为物理地址或绝对地址。
4.什么是重定位?静态重定位和动态重定位的区别是什么?各举一例说明
当用户程序要调入内存时,必须把相对地址转换为绝对地址。同时要包括对程序中与地址油管的指令进行修改,这一过程称为重定位。
静态重定位是在程序装入时进行,一般通过处理机中一对界地址寄存器来实现。
动态重定位是在程序执行过程中进行的,当处理器访问主存指令时由动态变换机构自动进行地址转换。
5.存储管理的功能是什么?为什么要引入虚拟存储器的概念?虚存的容量由什么决定?
存储管理的功能主要有:内存分配,地址转换,存储保护和内存扩充
虚拟存储器能提供给用户一个比实际内存大得多的存储空间,使用户在编制程序时可以不必考虑存储空间的限制。
虚存的容量受两个条件的约束:指令中地址场长度的限制,外存储器容量的限制。
6.处理器管理主要是解决什么问题?
在大型通用系统中,可能数百个批处理作业存放在磁盘中,又有数百个终端用户与主句连接,如何从这些作业中挑选一些作业进入主存运行,又如何在主存各进程间分配处理器,是操作系统资源管理的一个重要问题,处理器管理就是用来解决此问题的
7.什么是进程的同步和互斥?什么是临界区?
同步是指两个时间的发生存在某种时序上的关系,如果系统中有若干个进程要共同完成某一任务,那么他们仙姑之间必须协调配合。
互斥是指当多个进程要求共享系统中某些硬件或软件资源,而这些资源却又要求排他性使用时,这样往往引起由于多个进程竞争同一资源使运行结果出现问题。
如果在两个进程P1P2中加入P,V操作后,可以实现对公用变量count的互斥使用,其中P(s),V(s)之间的程序段称为临界区。
8.死锁产生的必要条件是什么?死锁的预防,避免和检测各有什么不同?各举出一种相应的办法?
死锁产生的必要条件是:1.所涉及的资源是非共享的,2进程在等待新资源时,继续占用已分配的资源3.一个进程战友的资源不能被其他进程占有,4.一个进程获得的资源同时被另一个进程所请求,从而形成一个循环链
死锁的预防是研究如何破坏产生死锁的必要条件之一,从而达到不使死锁发生的目的。死锁的避免和死锁的预防区别组要你在于,死锁的预防是严格破坏形成死锁的必要条件之一,使得死锁不在系统中出现。预防方法之一,采用假脱机技术将非共享设备变成共享设备来实现。
而死锁的避免并不严格限制必要条件的存在,因为必要条件存在并不一定产生死锁。而进程推进顺序不当,也可以导致系统发生死锁,因此死锁的避免是考虑万一当死锁有可能出现时,就小型的避免这种情况的最终发生。避免方法有相应的银行算法和方法
死锁的检测和恢复,这是一种变通的方法,它允许死锁的产生,但能在适当时间检测出来,并设法进行恢复。利用化简进程-资源有向图的方法来检测系统在某一特定状态时是否处于死锁状态
9.设备管理的功能是什么?怎么样把 一台物理设备虚拟为多台设备?
设备管理的功能:设备驱动程序,即插即用,通用即插即用,集中,同一管理,添加硬件
通过虚拟机软件,就可以在一台物理计算机上模拟出一台或多台虚拟的计算机
10.什么是记录,文件,文件系统
记录:文件由若干个记录组成,每一个记录是一些相关信息的集合
文件:在裸机上具有完整意义的数据或字符序列的集合
文件系统:负责服务和管理文件的机构
第四章 数据库
数据管理的三个阶段
1.人工管理阶段(20世纪50年代中期以前)
2.文件管理系统(20世纪50年代末~60年代中)
3.数据库系统(20世纪60年代后)
信息的三个领域
(1)现实世界
(2)信息世界
(3)数据世界
2.实体间的联系
(1)一对一联系
(2)一对多联系
(3)多对多联系
3.数据库组织
- 数据模型
(1)层次数据模型
(2)网状数据模型
(3)关系数据模型 - 数据库的结构
四个基本概念:数据,数据库,数据库管理系统,数据库系统
4.数据库设计 - 内容与步骤
(1)需求分析阶段
(2)逻辑结构设计阶段
(3)物理设计阶段
(4)数据库实施阶段
(5)数据库运行和维护阶段 - 需求分析
步骤:
(1)系统调查
(2)系统分析
(3)视图定义
关系数据库系统
关系数据库的特点
(1)数据结构简单
在关系模型中,实体和实体之间的联系均由关系(二维表)来表示。
(2)可以直接处理多对多的关系
不论实体间的联系是一对多还是多对多,在关系数据模型中均可用表格形式表示。
(3)能够一次获取多个记录数据
在关系数据库中,每一个查找命令可以得到满足该命令的所有记录。
(4)数据独立性较高
关系数据库中,用户一般只要指出他要存放的数据类型、长度等特性,而不必关心数据的物理存放。
(5)有较坚实的理论基础
关系数据库是以关系数学理论为基础,这样使关系模型的研制和应用设计有理论指导,保证数据库的质量。
基本概念和术语
- 关系
- 关键字
- 关系模式
- 关系模型
- 关系数据库
关系代数
关系模式的范式
第一范式(1NF)
定义:如果关系模式R的每个属性值都是不可再分的数据单位,则称R满足第一范式。
第二范式(2NF)
定义:如果关系模式R满足第一范式,且非主属性完全依赖于主属性(主关键字),则该模式满足第二范式。
第三范式3NF
定义:如果关系R满足第二范式,且每个非主属性均非传递函数依赖于主属性,则该关系满足3NF。
1.数据库系统的三级结构模式各起什么作用?
(1)用户级
又称外模式,这是从各个用户角度看到和使用的数据库,因此也称为用户视图,每个用户获准使用的部分数据称为子模式,这部分数据的逻辑结构称为局部逻辑结构。
(2)概念级
又称概念模式,是对数据库整体逻辑的描述,称为DBA视图,他是所有用户视图的一个最小集合,是对数据库整体逻辑的描述,故称为整体逻辑结构。
(3)物理级
又称内模式,是系统管理员对数据进行的物理组织,称为系统程序员视图,也称为数据的存储结构
2.试说明数据库设计的主要步骤,完成什么工作
(1)需求分析,对呗设计对象进行调查研究的基础上提出的对应关系的描述形式
(2)逻辑设计(3)物理设计
逻辑设计和物理设计实在需求分析的基础上将系统描述形式转化成数据库管理系统相适应的数据模型
(4)应用程序设计及测试(5)性能测试及企业确认(6)装配数据库
3.解释名词
关键字,候选关键字,主关键字:关键字是指在一个关系中有些属性那能唯一的识别的元组,具有唯一标识关系中的元组性或最小属性组,称为该关系的候选关键字
关系模式:一个关系的属性名表,即二维标的框架称为关系模式
关系模型:又称为关系数据库模式,一个关系模型可以有多个关系模式组成
关系数据库:对应于一个关系模型的额全部惯性的额集合称为关系数据库