2008年12月28日日曜日

软考学习笔记-数据库工程师第九章-SQL语言

软考学习笔记-数据库工程师第九章-SQL语言
第九章 SQL 语言

1、SQL是集数据定义和数据操纵为一体的数据库语言。

  数据定义子语言DDL,用来定义数据库模式。DDL包括数据库模式定义,数据库存储结构和存取方法定义,以及数据库模式的修改删除功能。

  数据定义子语言的处理程序也分为了数据库模式定义处理程序,和数据库存储结构和存取方法处理程序。前者接收用DDL表示的数据模式定义,翻译成内部表示形式,存储到数据字典中;后者接收数据库存储结构和存取方法定义,在存储设备上创建相关的数据库文件,建立物理数据库。

  数据操纵子语言,通常有这样几种操作:查询、插入、删除、修改。后三种应该可以都纳入更新的范畴。

  嵌入式SQL,宿主语言

2、SQL是一种通用的、功能强大的关系数据库语言,它的主要功能包括数据查询、数据操纵、数据定义和数据控制。

  SQL的特点有:
综合统一
高度非过程化
面向集合的操作方式
两种使用方式, 一是在终端上键入SQL命令直接操作数据库,另一种是将SQL嵌入到高级语言中去。
简洁、易用,完成核心功能只用了9个动词,包括了4类:数据查询(SELECT)、数据定义(CREATE、DROP、ALTER)、数据操纵(INSERT、UPDATE、DELETE)、数据控制(GRANT、REVOKE)。

  SQL支持关系数据库的三级模式结构,其中视图对应外模式,基本表对应模式,存储文件对应内模式。

  SQL的基本组成:DDL、DML、事务控制、嵌入式SQL和动态SQL、完整性、权限管理。

3、数据库定义

  (一)创建表: CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束]
[,<列名><数据类型>[列级完整性约束]]...
[,<表级完整性约束条件>]);

其中列级完整性约束条件有:NULL和UNIQUE。
  例9.1 建立一个供应商和零件数据库。其中供应商表S(Sno,Sname,Status,City)的属性分别表示供应商代码、姓名、状态、所在城市。“零件”表P(Pno,Pname,Color,Weight,City)的属性分别表示零件号、零件名、颜色、重量及产地。其中数据库要满足这样的要求:
1)供应商代码不能为空,且值是惟一的,供应商名也是惟一的;
2)零件号不能为空,且值是惟一的。零件名不能为空;
3)一个供应商可以供应多个零件,而一个零件可以由多个供应商供应。

  解:供应商与零件之间需要建立一个关系模式,二者之间是一个多对多的关系,新生成的关系模式的码应该是供应商的码和零件表的码,以及二者联系的属性构成。如SP(Sno,Pno,Qty) Qty表示数量。

  CREATE TABLE S(Sno CHAR(5) NOT NULL UNIQUE,
Sname CHAR(30) UNIQUE,
Status CHAR(8),
City CHAR(20)
PRIMARY KEY (Sno));


CREATE TABLE P(Pno CHAR(6) NOT NULL UNIQUE,
Pname CHAR(30) NOT NULL,
Color CHAR(8),
Weight NUMERIC(6,2),
City CHAR(20)
PRIMARY KEY(Pno));

CREATE TABLE SP(Sno CHAR(5),
Pno CHAR(6),
Qty NUMERIC(9)
PRIMARY KEY(Sno,Pno),
FOREIGN KEY(Sno) REFERENCES S(Sno),
FOREIGN KEY(Pno) REFERENCES P(Pno));

  (二)修改表和删除表

  ALTER TABLE <表名>[ADD<新列名><数据类型>[完整型约束条件]]
[DROP <完整性约束名>]
[MODIFY <列名><数据类型>]

  DROP TABLE <表名>

  (三)定义和删除索引

  数据库中的索引就是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的指针清单。作用如下:
通过创建惟一的索引,可以保证数据记录的惟一性;
加快数据检索速度;
加速表与表之间的连接,由其在实现数据的参照完整性方面有特别意义;
在使用ORDER BY ,GROUP BY语句时可以明显地减少计算时间;
使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。

  分为聚集索引和非聚集索引

聚集索引,对表的物理数据页中的数据按列进行排序,然后再重新存储到磁盘上,叶子节点中存储的是实际数据;
非聚集索引,具有完全独立于数据行的结构,不必对物理数据页中的数据按列排序,叶子节点存储的是组成非聚集索引的关键字和行定位器。

  建立索引:CREATE [UNIQUE][CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>]]...);

其中次序可选ASC,DSC,默认为ASC
UNIQUE表明此索引的每一个索引值只对应惟一的数据记录。
CLUSTER表示要建立的索引是聚簇索引,即索引项的顺序是与表中记录的物理顺序一致的索引组织。

  几个例子: CREATE UNIQUE INDEX S-SNO ON S(Sno);
CREATE UNIQUE INDEX P-PNO ON P(PNO);
CREATE UNIQUE INDEX SPJ-NO ON SPJ(SNO ASC,PNO DESC, JNO ASC)。

  删除索引: DROP INDEX <索引名>

  (四)定义、删除、更新视图

  视图的创建:CREATE VIEW 视图名 (列表名)
AS SELECT 查询子句
[WITH CHECK OPTION];

其中查询子句可以是任意复杂的select语句,但一般不能出现order by , distinct。
WITH CHECK OPTION,表示在对视图进行更新、插入或删除操作时,要保证满足子查询中的条件表达式。

例如  CREATE VIEW CS-STUDENT
AS SELECT SNO,SNAME,SAGE,SEX
FROM STUDENDS
WHERE SD=‘CS’
WITH CHECK OPTION;

其中使用了with check option,所以在对视图插删操作时,要保证SD=‘CS’的条件成立。

  视图的删除:DROP VIEW 视图名

4、数据操作,SELECT,INSERT,DELETE,UPDATE

  (一)SELECT基本结构
  SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]...
FROM <表名或视图名>[,<表名或视图名>]
[WHERE <条件表达式>]
[GROUP BY <列名 1> [HAVING <条件表达式>]]
[ORDER BY <列名 2> [ASC|DESC]...]

其中,子句顺序是:SELECT、FROM、WHERE、GROUP BY、HAVING和ORDER BY。HAVING只能和GROUP BY搭配使用。

SELECT对应关系代数运算中的投影运算;FROM对应笛卡尔积;WHERE对应选择。

  SELECT查询中没有全程量词,也没有逻辑蕴涵,但可以通过谓词转换来实现。?

  (二)简单查询
  (三)连接查询
   检索至少选修了课程号为C1和C3的学生号:SELECT Sno FROM SC SCX, SC SCY WHERE SCX.Sno = SCY.Sno AND SCX.Cno = 'C1' AND SCY.Cno = 'C3';

  (四)子查询与聚集函数, 子查询也叫嵌套查询。

例:检索选修课程名为MS的学生号和学生姓名。
SELECT Sno, Sname
FROM Students
WHERE Sno IN
(SELECT Sno FROM SC
WHERE Cno IN
(SELECT Cno FROM C WHERE Cname = 'MS'));
聚集函数:AVG, MIN, MAX, SUN, COUNT

使用谓词ANY和ALL必须同时使用比较运算符,其含义与等价的转换关系如下:
>ANY --- >MIN
>ALL --- >MAX
<ANY --- <MAX
=ANY --- IN
<>ALL--- NOT IN

几个例子:查询其他系比计算机系CS所有学生年龄都要小的学生姓名及年龄。
SELECT Sname, Sage
FROM Students
WHERE Sage < ALL
(SELECT Sage
FROM Students
WHERE SD = 'CS')
AND SD<>'CS';
用<MIN代替上面的<ALL:
SELECT Sname, Sage
FROM Students
WHERE Sage <
(SELECT MIN(Sage)
FROM Students
WHERE SD = 'CS')
AND SD<>'CS';

  (五)分组查询

GROUP BY 子句

HAVING 子句,如果在元组被分组之前需要按某种方式加以限制,使不需要的分组为空,可以在GROUP BY子句后面加一个HAVING子句。
注意:空值在任何聚集操作中都会被忽视,COUNT(*)是计算某个关系中所有元组数目之种,但COUNT(A)是计算A属性中非空的元组个数之和。

例:针对供应商数据库中的S、P、J。SPJ关系,查询哪一个工程至少用了3家供应商(包含3家)供应的零件的平均数量,并按工程号降序排列。
SELECT JNO,AVG(QTY)
FROM SPJ
GROUP BY JNO
HAVING COUNT(DISTINCT(SNO))>2
ORDER BY JNO DESC;

  (六)别名运算
  (七)字符串操作, 使用操作符LIKE的模式匹配。%匹配任意字符串,_ 可以匹配任意一个字符。

在Like中可以使用转义字符,将特殊字符当作普通字符处理,如反斜杠“\"。

  (八)集合操作, 保留字UNION,INTERSECT,EXCEPT分别对应并、交、差。保留字用于两个查询时,其两侧应用括号括起来。

例:学生和教师的关系模式如下,查询既是女研究生又是教师且工资大于1500元的名字和地址。
(SELECT Name, Address
FROM Students
WHERE SEX='女' AND Type='研究生')
INTERSECT
(SELECT Name, Address
FROM Teachers
WHERE Salary >=1500)

查询不是教师的学生:(SELECT Name, Address FROM Students)
EXCEPT
(SELECT Name, Address FROM Teachers)

  (九)视图的查询和删除

视图的查询:当查询视图表时,通常先将其转换成等价的对基本表的查询,然后执行查询语句。即系统先从数据字典中取出该视图的定义,然后与视图中的查询语句结合起来,形成一个修正的查询语句。

视图更新要遵守的规则:
从多个基本通过连接操作导出的视图不允许更新;
对使用了分组、集函数操作的视图不允许更新;
若视图是从单个基本表通过投影、选取操作导出的,则允许进行更新操作。

   WITH子句,将一个复杂的查询分解成一小视图??

  (十)插入、删除和修改语句

插入: INSERT INTO 表名(字段名[,字段名]...)
VALUES(常量[,常量]...);

删除: DELETE FROM 表名
WHERE 条件表达式;

修改: UPDATE 表名
SET 列名=值表达式
[WHERE条件表达式]

5、SQL中的授权

  数据库中的完整性是指数据库的正确性和相容性。

  (一)主键约束 PRIMARY KEY

完整性约束条件:完整性约束条件作用的对象有关系、元组、列3种,每种又分为静态、动态两类。

完整性控制:有3方面的功能,定义功能、检测功能、处理功能。这样来保证实现对数据的完整性控制。检查是否违背完整性约束的时机   有两个:立即执行约束和延迟执行约束。前者在一条语句执行完后立即检查,后者在整个事务执行完成后进行。

实体完整性(PRIMARY KEY子句),关系中只能有一个主键,声明主键的方法有两个,就是primary key放的位置不同。

如, CREATE TABLE Students
(Sno CHAR(8),
Sname CHAR(10),
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3),
PRIMARY KEY(Sno));

或 CREATE TABLE Students
(Sno CHAR(8) PRIMARY KEY,
Sname CHAR(10),
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3));

  (二)外键约束 FOREIGN KEY(参照完整性)

格式: FOREIGN KEY(属性名)REFERENCES 表名(属性名)
[ON DELETE[ CASCADE|SET NULL]]

ON DELETE CASCADE指明删除参照关系的元组时,同时删除参照关系中的元组。

  (三)属性值上的约束 NULL和CHECK

如果要求某属性为空,在定义时在数据类型的后面加上NOT NULL。
如, CREATE TABLE Students
(Sno CHAR(8),
Sname CHAR(10) NOT NULL,
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3),
PRIMARY KEY(Sno));


在Students表中,要求男生的年龄在15-25之间,女生的年龄在15-24之间。
如, CREATE TABLE Students
(Sno CHAR(8),
Sname CHAR(10) NOT NULL,
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3),
PRIMARY KEY(Sno))
CHECK(Sage >=15 AND ((SEX='M' AND Sage<=25) OR
(SEX='F' AND Sage<24)));

  (四)全局约束 CREATE ASSERTIONS

全局约束是指一些较复杂的完整性约束,会涉及到多个属性间的联系或多个关系间的联系。分为两种:基于元组的检查子句和断言。
1)使用CHECK子句对单个关系的元组值加以约束,可以在关系的定义中的任何地方加上CHECK及约束条件;

2)断言: CREATE ASSERTION <断言名> CHECK(<条件>)

例如,在教学数据库模式Students,SC,C中加一个约束,不允许男同学选修“张勇”教师的课。
CREATE ASSERTION ASSE-SC1 CHECK
(NOT EXISTS
(SELECT * FROM SC WHERE Cno IN
(SELECT Cno FROM C WHERE TEACHER='张勇')
AND Sno IN
(SELECT Sno FROM Students WHERE SEX='M')));

又如,在Students,SC,C中有一个约束,每门课最多允许50名男同学选修。
CREATE ASSERTION ASSE-SC2 CHECK
(50>=ALL(SELECT COUNT(SC.Sno)
FROM Students,SC
WHERE Students.Sno=SC.Sno AND SEX='M'
GROUP BY Cno));

  (五)授权与销权,DBMS数据控制应具有这样的功能,通过GRANT和REVOKE将授权通知系统并存入数据字典;当用户提出请求时,检查其授权情况。
授权语句格式:
GRANT <权限>[,<权限>]...
[ON<对象类型><对象名>]
TO <用户>[,<用户>]...
[WITH GRANT OPTION];

PUBLIC与WITH GRANT OPTION:PUBLIC参数可以将权限授给所有用户;后者使获得授权的用户还可以将此权限授给其它用户。

例如,将对供应商S、零件P及项目J的所有操作权限授给用户User1及User2。
GRANT ALL PRIVILEGES ON TABLE S, P, J TO User1,User2;

将S的插入权限授组User1,并允许将此权限授给其他用户。
GRANT INSERT ON TABLE S TO User1 WITH GRANT OPTION;

DBA把数据库SPJ中建立表的权限授给用户User1。
GRANT CREATETAB ON DATABASE SPJ TO User1;

收回授权语句格式:
REVOKE <权限>[,<权限>]...
[ON <对象类型><对象名>]
FROM <用户>[,<用户>]...;

例如, REVOKE ALL PRIVILEGES ON TABLE S , P, J FROM User1,User2;

REVOKE INSERT ON TABLE S FROM User1 WITH GRANT OPTION;

REVOKE SELECT ON TABLES S FROM PUBLIC;

REVOKE UPDATE(Sno) ON TABLE S FROM User1; --将权限的控制定位在某一个属性上

6、触发器,触发器是一种特殊类型的存储过程,它是通过事件触发而执行的。主要特点是,当被声明的事件发生时触发器被激活;触发器激活后不会立即执行,而是先测试触发条件;如果触发条件满足,则由DBMs执行与该触发器相连的动作。

  创建触发器,不同数据库使用的触发器语法不同。

  例:假定银行数据库关系模式为: Account(Account-no, branch-name,balance)
Loan(Loan-no, branch-name, amount)
depositor(customer-name, Account-no)
假定银行在处理透支时,不是将账户余额设成负值,而是将账户余额设置为零,并且建立一笔贷款,其金额为透支金额。这笔贷款的贷款号应该等该透支帐户的账户号。采用SQL-99标准创建触发器如下:

CREATE TRIGGER overdraft_trigger after update on Account
Refferencing new row as nrow
For each row
When nrow.balance<0
Begain atomic
Insert into borrower
(SELECT customer-name, Account-no
FROM depositor
Where nrow.account-no=depositor.account-no);
Insert into values
(nrow.account-no, nrow.branch-name, nrow.balance);
update account set balance=0
Where account.account-no=nrow.account-no
End

When nrow.balance<0是触发条件;
Begin atomic ... End子句用来将多行SQL语句集成为一个复合语句。其中前两条Insert into语句表示在borrower和loan关系中建立新的贷款业务,update语句用来将账户余额清零。
Referencing old row as 子句建立一个变量,用来存储已经被更新或删除的行的旧值。Referencing new row as 可以被update和Insert语句使用,可以存放经过更新的新值。
Referencing old table as 或Referencing new table as 子句可以用来指向临时表,使之容纳所有被影响的行。临时表不能使用before触发器,但可以用after触发器。

触发器在事件之前被激发,可以避免非法更新。

例9.45:仓库管理数据库中有如下关系,
inventory(item, level),表示仓库中某种商品的现有量。
minlevel(item, level),表示仓库中存有某种商品的量小量。
reorder(item, amount),表示某种商品小于最小量时要订购的数量。
orders(item, amount),表示定购某种商品的量。

CREATE TRIGGER reorder_trigger after update of amount on inventory --我怀疑amount应该是level
Referencing old row as orow, new row as nrow
For each row
When nrow.level <= (SELECT level
FROM minlevel
Where minlevel.item = orow.item)
And orow.level > (SELECT level
FROM minlevel
Where minlevel.item = orow.item)
Begin
Insert into orders
(SELECT item, amount
FROM reorder
Where reorder.item = orow.item)
End

  删除触发器: DROP TRIGGER {trigger}[,...,n]

软考学习笔记-数据库工程师第八章-关系数据库

软考学习笔记-数据库工程师第八章-关系数据库
第八章 关系数据库

1、关系数据库的基本概念

  属性与域

  第一范式条件1NF:在关系数据模型中,所有的域都应是原子数据。

  笛卡尔积:设D1,D2,...,Dn为任意集合,则定义D1,D2,...,Dn的笛卡尔积为:

D1*D2*...*Dn = {(d1,d2,...,dn)|di属于Di, i=1,2,...,n}
  其中每一个元素(d1,d2,...,dn)叫做一个n元组,元组的每一个值di叫做一个分量。笛卡尔积可用二维表来表示。

  例如:D1={0,1}, D2={a,b}, D3={c,d}, 求D1*D2*D3。

D1*D2*D3 = {(0,a,c), (0,a,d), (0,b,c), (0,b,d), (1,a,c), (1,a,d), (1,b,c), (1,b,d)}

D1 D2 D3
0 a c
0 a d
0 b c
0 b d
1 a c
1 a d
1 b c
1 b d

  笛卡尔积与关系:D1*D2*..*Dn的子集叫做在域D1,D2,..,Dn上的关系,记为R(D1,D2,..,Dn),称关系R为n元关系。关系中属性的个数称为元数,元组的个数称为基数。

术语对应: 属性---字段
关系模式-记录类型
元组---记录

  关系的一些名词:
目或度--常用R表示关系的名字,用n表示关系的目或度
候选码--能够做主码的属性或属性组都是候选码
主码---候选码中的一个
主属性--包含在个选码中的属性
外码---对于关系R来讲,外码就是指它的某个属性或属性组,不是该关系的码,而是其它关系的码
全码---一个关系的全属性称为这个关系的全码

  3种基本的关系类型:基本关系(即基本表或基表),查询表,视图表。

2、关系模式:关系的描述称之为关系模式,表示为R(U,D,dom,F)。通常简记为R(U)或R(A1,A2,..,An),Ai为属性名或域名,一般在主码属性下加下划线以标识。
  其中,R表示关系名,U表示属性名集合,D是属性的域,dom是属性向域的映像的集合,F是属性间数据的依赖关系的集合。

3、关系的完整性分为3类:

实体完整性,  关系的主属性不能为空值;
参照完整性,  设F是关系R的外码,与关系S的主码相对应,则F或均取空值,或等于S中某个元组的主码值。
用户定义完整性,反映某一具体应用涉及的数据必须满足的语义要求。

4、关系运算:关系运算的特点是操作对象和操作结果都是集合。关系数据语言分为3类,关系代数语言、关系演算语言、和具有前二者特点的语言(如SQL)。关系演算语言又分为元组关系演算语言和域关系演算语言。
  
  关系代数运算符有4类:集合运算符(并、差、交、笛卡尔积),专门的关系运算符(选择、投影、连接、除),算术比较符(大于、小于等),逻辑运算符(与、或、非)。

   并

差

广义笛卡尔积,两个元数分别是n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组,记作R*S。

投影,从关系R中选择出若干属性列A组成新的关系,记作PaiA(R)。

选择,是从关系的水平方向进行运算,是从关系R中选择满足给定条件的诸元组,记作   。

  扩展的关系运算符:

交,关系R与S具有相同的关系模式,关系R与S的交是由属于R同时属于S的元组构成的集合,记作   。

连接,是从两个关系R和S的笛卡尔积中选取满足条件的元组,可以认为笛卡尔积是无条件的连接。连接又可以分为3种:  连接、等值连接、自然连接。
 连接:
可以由基本的关系运算符笛卡尔积和选择导出:
等值连接:

自然连接:是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉。自然连接不仅要从关系的水平方向,而且还要从关系的垂直方向运算。

除,同时从关系的水平方向和垂直方向进行运算。给定关系R(X,Y)和S(Y,Z),X,Y,Z都是属性组。R除S应当满足元组在X上的分量值x的象集Yx包含关系S在属性组Y上投影的集合。

广义投影,就是带有条件的投影运算,记为             。

外连接, 连接的扩展,为了处理缺失的信息。分为3种左外、右外、全连接。以左外连接为例,取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值填充所有来自右侧关系的属性,构成新的元组,将其加入自然连接的结果中。

聚集函数,要注意一些聚集函数的表达方式。分组的表达方法。

5、元组演算

  元组演算是非过程化查询语言。它只描述所需信息,而不给出获得该信息的具体过程。元组表达式中的变量是以元组为单位的,其一般形式为{t|P(t)}。t是元组变量,P(t)是元组关系演算公式,公式是由原子公式组成的。

  原子公式,即原子命题函数。有3种形式。一种是R(t)。

  全称量词和存在量词。

  A=>B,表示若A为真则B为真。

6、域演算,在域演算中表达式中的变量是表示域的变量,可将关系的属性名视为域变量。一般表示为{t1,...,tk|P(t1,...,tk)},其中t1,..,tk是域变量。

  原子公式,有3种形式。一种是R(t1,..,ti,...,tk)。

7、函数依赖

依赖的闭包,属性的闭包

8、优化查询

9、规范化

10、模式分解

  无损连接,保持函数依赖

软考学习笔记-数据库工程师第七章-数据库技术基础

软考学习笔记-数据库工程师第七章-数据库技术基础
第七章 数据库技术基础

1、数据库系统DBS,是由数据库、硬件、软件和人员组成的。

  数据库DB

  软件包括操作系统、数据库管理系统DBMS和应用程序。

  数据库技术的发展经历了3个阶段:人工管理阶段、文件系统阶段、数据库系统阶段。

  文件系统的最大特点是解决了应用程序和数据之间的一个公共接口问题,使得应用程序使用统一的存取方法来操作数据。

  数据库系统与文件系统的区别是:数据的充分共享、交叉访问及应用程序的高度独立性。数据库对数据的存储是按照同一结构进行的,不同的应用程序可直接操作这些数据。

2、DBMS的功能,主要实现对共享数据有效的组织、管理和存取。有以下几个方面的功能:

  数据定义:DBMS提供数据定义语言DDL,用户可以对数据库的结构进行描述,包括外模式、模式和内模式的定义,数据库的完整性定义,安全保密定义等。这些存储在数据字典中,是DBMS运行的基本依据。

  数据库操作:数据操纵语言DML,实现对数据库中数据的基本操作,如检索、插、改、删。DML双分为宿主型和自含型。

  数据库运行管理:多用户环境下的并发控制、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理、事务管理和自动恢复都是DBMS的重要组成。

  数据组织、存储和管理:DBMS分类组织、存储和管理各类数据,包括数据字典、用户数据、存取路径等,并要确定以何种文件结构和存取方式在存储级别上组织这些数据。DBMS实现数据间的联系、数据组织和存储的基本目标是提高存储空间的利用率。

  数据库的建立和维护

  RDBS,关系数据库系统,实体与实体间的关系的集合构成一个RDBS,也有型、值之分。关系数据库的型称为关系数据库模式,是对数据库的描述。关系数据库的值也称为关系数据库,是关系的集合。统称为RDBS。

  OODBS,是面向对象的数据库系统。支持以对象形式进行数据建模,且要符合2个条件,首先要是一个DBMS,其次必须是面向对象的。

  ORDBS,对象关系数据库,提供了元组、数组和集合等更丰富的数据类型以及处理新的数据类型的能力。


3、数据模型的基本概念

  数据描述的三个领域:现实世界、信息世界、机器世界。

  现实世界,指客观存在的各种报表、图表、原始数据;在信息世界中数据库常用的术语有属性、实体、实体集和码;机器世界是按机器的观点对建模,主要使用的术语有字段、记录、文件和记录码。信息世界与机器世界的几个术语可以一一对应。

  数据模型的3要素:数据结构、数据操作、数据的约束条件。

  常用的数据模型分为概念型数据模型和基本数据模型。概念数据模型也称为信息模型,是按用户的观点对数据和信息建模,是从现实世界到信息世界的第一层抽象,强调语义表达功能,用于数据库设计,这类模型中最著名的是E-R模型。基本数据模型是按计算机观点对数据进行建模,用于实现DBMS。基本的数据模型有层次模型、网状模型和关系模型。目前随着新应用的发展,面向对象模型更广泛的被使用。

4、E-R模型,它所采用的3个主要概念是:实体、联系、属性。E-R模型只能说明实体间的语义联系。
  E-R方法: 矩形--表示实体
菱形----联系
椭圆----属性
双椭圆---多值属性
虚椭圆---派生属性
线段----将属性与相关实体或实体与联系连接起来
双线----表示一个实体全部参与到联系集中
双线矩形--弱实体

  扩充的E-R模型:增加了弱实体、特殊化、概括以及聚集等概念。

  弱实体,在现实世界中有一种联系代表实体间的ownership关系,即一个实体依赖于另一个实体而存在,这类实体被称为弱实体。
  特殊化,设有实体集E,如果S是E的某些真子集的集合,则称S为E的一个特殊化,E是Si的超类,Si称为E的子类。若两个子集Si与Sj没有交集,则S称为E的不相交特殊化,否则称为重叠特殊化。在扩充的E-R图中使用特殊化圆圈(而不是菱形)和连线的方式来表示超类-子类关系模型。超类到圆圈有连线,双线表全特殊化,单线表部分特殊化。子类用双竖边矩形表示。圆圈到子类的线用符号“U”标识为特殊化。圆圈内的"d"表示不相交特殊化,"O"表示重叠特殊化。

  从E-R模型向关系模型转换时,所有“实体”和“联系”都要转换成相应的关系模式。

5、层次模型,采用树型结构表示数据与数据间的联系,每个节点表示一个实体。根节点之外的结点都有且仅有一个双亲。
特点:记录间的联系通过指针实现,简单、效率高。
缺点:只适于表示1:n的联系。

  网状模型DBTG,采用网络结构表示数据与数据的联系。允许一个以上结点无双亲,也允许一个结点有多个双亲。

网状模型与层次模型的区别:
1)网状模型中子女结点与双亲结点的联系不惟一,需要为每个结点命名,见图示;
2)网状模型允许复合链,两结点间可以存在两种以上的联系;
3)网状模型不能表示记录之间的多对多的联系,解决办法是引入联结记录来表示多对多的联系,见图示。

特点是:更直接地描述现实世界,存取效率高;缺点是:结构复杂。

  关系模型,在关系模型中用表格结构表达实体集及实体集间的联系,其最大的特色是描述的一致性。关系模型就是若干个关系模式的集合。一个关系模式相当于一个记录型,对应于程序设计语言中的类型定义的概念。关系是一个实例,也是一张表,对应于程序设计语言中变量的概念。 区别: 与前两种模型的最大区别是使用主键而不是指针导航数据,表格简单直观。

  在关系数据库中,若关系模式中的每个关系的属性值均是不可分解的,则该关系模式属于--第一范式1NF,这也是关系数据库的最基本要求。

  关系代数运算是以关系作为运算对象的一组高级运算集合,关系定义为元素相同的元组的集合。因此,关系代数运算是以集合操作为基础的运算,其5种基本运算是并、差、笛卡尔积、投影和选择。

6、从数据库管理的角度看,数据库系统体系结构一般采用三级模式结构。外模式、概念模式、内模式。

  数据库的行和值:行,是指对某一数据的结构和属性的说明;值,是行的一个具体赋值。

  概念模式,也称模式,是数据库中全部数据的逻辑结构和特征的描述。它由若干个概念记录类型组成,只涉及行的描述,不涉及具体的值。概念模式不仅要描述概念记录类型,还要描述记录间的联系、操作以及数据的完整性和安全性。概念模式不涉及存储结构和访问技术等,因此做到了物理数据独立性。概念模式的数据定义语言称为“模式DDL”。

  外模式,也称用户模式或子模式,是用户与数据库系统的接口,是用户用到的那部分数据的描述。它由若干个外部记录类型组成,用户使用数据操纵语言DML对数据库进行操作。描述外模式的数据定义语言称为”外模式DDL“。

  内模式,也称为存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,定义所有的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。但是内部记录也不涉及物理记录,那是操作系统负责的相关机制。“内模式DDL”。

  总之,数据按外模式的描述提供给用户,按内模式的描述存储在磁盘上,而概念模式则提供了连接这两级模式的相对稳定的中间点,且使得两级模式的任一级的改变都不受另一级的牵制。

  数据库系统在三级模式之间提供了两级映像,这保证了数据库中的数据具有较高的逻辑独立性和物理独立性。“模式/内模式”,“外模式/模式”。

   数据的独立性包括数据的物理独立性和数据的逻辑独立性。物理逻辑性是指,当数据库的内模式发生改变时,数据的逻辑结构不变;逻辑独立性,是指用户的应用程序和数据库的逻辑结构相独立。

7、数据库系统的体系结构

  1)集中式数据库系统:不但数据是集中的,数据的管理也是集中的,就是说从形式的用户接口到DBMS核心都集中在DBMS所在的计算机上。
  2)C/S数据库体系结构:安排某些任务在服务器上执行,另一些任务在客户机上执行。数据库系统功能分为前端和后端。前端主要包括图形用户界面、表格生成和报表处理等;后端负责存取结构、查询计算和优化、并发控制以及故障恢复。前端与后端通过SQL或应用程序来接口。
  注:数据库服务器一般可分为事务服务器和数据服务器。其中事务服务器又被称为查询服务器,典型的事务服务器中有多个在共享内存中访问数据的进程,包括服务器进程、锁管理进程、写进程、监视进程和检查点进程。

  3)并行数据库系统:并行体系结构的数据库系统是由多个物理上连在一起的CPU组成,分为共享内存式多处理器和无共享式并行体系结构。前者多个CPU共享一个内存与磁盘接口,后者每个CPU都有自己的内存和磁盘。

  4)分布式数据库系统:分布式DBMS包括物理上分布、逻辑上集中的分布式结构和物理上逻辑上都分布的分布式数据结构2种。

  5)WEB数据库,又称为网络数据库,即网站上的后台数据库。

8、事务:是一个操作序列,这些操作要么都做,要么都不做。它是数据库环境中不可分割的逻辑工作单位。事务的4个特性ACID,原子性、一致性、隔离性、永久性。

9、数据库的4类故障:事务内部故障、系统故障、介质故障、计算机病毒。

  故障恢复的基本原理是“建立数据冗余”。建立冗余数据的方法是进行数据转储和登记日志文件。

  数据的转储分为:静态转储和动态转储、海量转储和增量转储。

  日志文件:DBMS在事务处理的过程中,把事务开始、事务结束以及对数据库的插入、删除和修改的每一步操作写入日志文件。当发生故障后,DBMS可以利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。DBMS可以利用日志文件来进行事务故障恢复和系统故障恢复,并可协助后备副本进行介质故障恢复。

  在发生数据库故障后,把数据库恢复到故障发生前的状态的方法:定期对数据库作后备文件;在进行事务处理时,对数据更新的全部有关内容写入日志文件;存储系统正常运行时,按一定的时间间隔,设立检查点文件,把内存缓冲区内容还未写入到磁盘中去的有关状态记录到检查点文件中;当发生故障时,根据现场数据内容、日志文件的故障前映像和检查点文件来恢复系统的状态。

  事务恢复的3个步骤:1)反向扫描文件日志,查找该事务的更新操作;
      2)对事务的更新操作执行逆操作;
3)继续反向扫描日志文件,查找该事务的其他更新操作,并作同样的处理,直到事务的开始标志。

  在SQL中定义事务的语句有3条:BEGIN TRANSACTION;COMMIT;ROLLBACK。

10、并发控制

  并发操作带来的问题是数据的不一致性,有3种:丢失更新、不可重复读、读脏数据。主要原因是事务的并发操作破坏了事务的隔离性。
  并发控制的主要技术是封锁,有2种封锁类型:排他锁(又称为X锁或写锁),共享锁(又称为S锁或读锁)。

   排他锁:特征是独占性;共享锁:特征是共享可读,在锁释放前该数据对象不可写。

  三级封锁协议:一级封锁协议是指事务在修改数据前对其加X锁,直到事务结束才释放,这样就解决了丢失更新的问题;
 二级封锁协议是指在一级封锁协议的基础上,事务T在读取数据R之前先对其加S锁,读完后立即释放S锁,这样就解决 了读脏数据的问题;
 三级封锁协议是指在一级封锁协议的基础上,事务T在读取数据R之前先对其加S锁,直到事务结束时释放S锁,三级封 锁协议能够解决丢失更新、读脏数据、不可重复读这3个问题。

  活锁与死锁

  并发调度的可串行性:一个正确的多个事务并发执行,当且仅当其结果与某一次序串行地执行它们时的结果相同,则这种调度策略是可串行化的调度。可串行性是并发事务正确性的准则,一个给定的并发调度,当且仅当这旨可串行化的才认为是正确的调度。

  两段封锁协议:是指事务必须分两个阶段对数据进行加锁和解锁。事务在第一个阶段只能获得封锁,在第二个阶段只能释放锁。

  封锁的粒度:封锁对象的大小称为封锁的粒度。封锁的对象可以是逻辑单元也可以是物理单元。

  事务的嵌套:事务是不能嵌套的,这样就违背了事务的原子性。相当于当且仅当当前没有事务在运行时,程序才能执行BEGIN TRANSACTION操作。

11、数据库安全性:为保护数据库,我们要在多个层次上采取安全性措施。
数据库系统层次;操作系统层次;网络层次;物理层次;人员层次。

  数据库的完整性:是指数据的正确性和相容性(有效性)。这包括用户定义完整性、参照完整性、实体完整性。实体完整性规则指主码的任何组成部分都不可以是空值,引用完整性规则则不允许引用不存在的实体。

  授权:read, insert, update, delete ;index, resource, alteration, drop 。后者操作的对象是涉及数据库模式的表、表属性及索引。

  权限授予图:表现授权从一个用户到另一个用户的传递。用户具有授权的条件是,当且仅当存在从授权图的根到代表该用户节点的路径。为安全着想,我们要求授权图中的所有边都必须是某条从DBA开始的路径的一部分。

  角色:在数据库中建立一个角色集,将权限授予角色,通过为用户授予角色实现赋权的管理。

  审计追踪:它是一个记录对数据库所有更改的日志。可以在关系更新操作上定义适当的触发器来建立一个审计追踪。很多的数据库系统都提供了内置机制来建立审计追踪。

12、数据仓库DW(Data Warehouse):在数据库基础上产生的能满足决策分析需要的数据环境。

  数据仓库的基本特征:数据是面向主题的,数据是集成的,数据是相对稳定的,数据是反映历史变化的。

  数据仓库的数据模式:星型模式,雪花模式,事实星型模式。典型的数据仓库具有为数据分析而设计的模式,使用OLAP工具进行联机分析处理。其数据通常是多维的,包括维属性和度量属性。包含多维数据的表称为事实表。
一个事实表、多维表以及从事实表到多维表的参照外码的模式,称为星型模式;
更复杂的数据仓库含有多级维表,这种模式称为雪花模式;
复杂的数据仓库也可能含有不止一个事实表,这种模式称为事实星型模式。

  数据仓库的体系结构:它通常采用三层结构,底层为数据仓库服务器、中间层是OLAP服务器、顶层为前端工具。

底层的数据仓库服务器一般是一个关系数据库系统。中间层的OLAP可以是关系型OLAP(即扩充的DBMS)也可以是多维的OLAP服务器。顶层的前端工具是各种查询、报表、分析、挖掘工具。

  从结构的角度看,有3种数据仓库模型:企业仓库、数据集市、虚拟仓库。

数据集市是企业范围数据的一个子集;虚拟仓库是操作型数据库上视图的集合。

13、数据挖掘:从海量数据中挖掘信息的技术。支持DM的3种基础技术是海量数据搜索、强大的多处理器计算机、数据挖掘算法。几中常用的数据挖掘技术是:人工神经网络、决策树、遗传算法、近邻算法、规则推导。

  数据挖掘与数据仓库的关系:数据仓库不仅是集成数据的一种方式,而且它的OLAO联机分析功能还为数据挖掘提供了一个很好的操作平台。

  与传统数据分析工具比较,数据挖掘工具更注重于预测未来的情况。

  数据挖掘技术的应用过程:确定挖掘对象,准备数据,建立模式,数据挖掘,结果分析,知识应用。

将数据转换成一个分析模型,建立一个真正适合挖掘算法的分析模型是数据挖掘的关键。

14、SQL语言中不提供地使用索引的功能,这支持了物理数据的独立性。

软考学习笔记-数据库工程师第六章-多媒体基础

软考学习笔记-数据库工程师第六章-多媒体基础
第六章 多媒体基础

1、媒体可分为感觉媒体、表示媒体、表现媒体、存储媒体、传输媒体。通常所说的媒体包括两个含义:一是指信息的物理载体;二是指承载信息的载体,即信息的表现形式,即CCITT定义的存储媒体和表示媒体。其中的表示媒体又可以分为3种:视觉类、听觉类、触觉类。

  多媒体体就是指多种信息载体的表现形式和传递方式。

  超文本是一种文本管理技术,它以结点为单位组织信息。结点、链和网络是超文本的3个基本要素。

  超媒体,具体表现为用超文本方式组织和处理多媒体信息。

2、声音3要素:音强、音调、音色。音色由混入基音的泛音所决定。人耳听觉范围是20HZ-20KHZ。

  声音信号的数字化:取样-量化法。有3个步骤,即取样、量化、编码。

  波形声音,是一个用来表示声音强弱的数据序列,它是由模拟声音经采样、量化和编码后得到的一种数据格式。

  有3种声音编码方法:波形编码,参数编码,混合编码。

  声音合成,分为语音合成和音乐合成。

  MIDI,是乐器数字接口的缩写,目前已成为数字音乐的国际标准。它规定了乐器间及与计算机进行数据传输的协议规范。

  声音文件的格式:Wave,Module(.mod)记录音色样本,MPEG(mp3),RealAudio(.ra),MIDI,Voice(.voc)每个voc文件由文件头块和音频数据块组成,Sound(.snd),Audio(.au),AIF,CMF。

3、色彩3要素:亮度、色调、色饱和度。

  彩色空间:指彩色图像所使用的颜色描述方法。RGB彩色空间,用于计算机显示器;CMY彩色空间,是相减混色,典型应用有油墨、颜料;YUV彩色空间,Y表示亮度,U,V是两个色度变量,典型应用有电视图像。

  图形与图像:图形是用一系列计算机指令来描述和记录的一幅图的内容,典形应用有矢量图;图像是用像素点来描述的图。图形采用光栅化(即点阵化)技术可以转换为图像,图像采用图形跟踪技术可以转化为图形。

  现实图片数字化过程为采样-量化-编码。

  图像的主要属性包括分辨率、像素深度、真/伪彩色。像素深度指存储每个像素所使用的位数。真彩色,图像的每个像素的颜色由R、G、B三个基色分量所决定。伪彩色,是在生成图像时对图像中的不同色彩采样并生成一个彩色查找表,图像的每像素值存储的是色彩的索引。

  图像的无损压缩方法有:行程编码RLE、增量调制编码、霍夫曼编码。增量调制法只记录每行上第一个像素的值,其后的像素只记录与行首记录的增量。霍夫曼法是根据像素出现的频率定义像素编码,进而生成该图像的霍夫曼码表。

  图像的文件格式:BMP深度可选且不做压缩,GIF采用了无损压缩,TIFF适用于扫描仪和桌面出版,PCX像素深度可选且使用RLE编码,PNG是 gif的替代品,JPEG采用有损压缩,Target彩色丰富供专业用户使用,WMF保存的是函数调用信息(windows),EPS是 PostScript图形打印机专用,DIF是AutoCAD格式,CDR。

4、电视信号通过光栅扫描的方法显示到屏幕上,彩色电视采用相加混色,使用RGB作为三基色。

  几种视频文件格式:GIF;Flic(.FLI/.FLC)一种彩色动画文件格式,使用RLE和Delta算法编码;AVI支持256色和RLE压缩;QuickTime;MPEG是运行图像压缩算法,方法是单位时间内采集并保存第一帧信息,然后只存储其余帧对第一帧发生变化的部分,进而实现压缩 (平均压缩比50:1);RM一种新型流式视频文件格式。

  MPEG-4是一套多媒体通信标准,主要由音频编码、视频编码、数据平面、描述符接口、缓冲共管理和实时识别等部分构成。
  MPEG-1应用于电视图像和伴音信息的通用编码;
  MPEG-2应用于高数据速率数字存储媒体的电视图像和伴音编码;
  MPEG-7是一套多媒体内容描述符接口标准。

5、虚拟现实技术的特征:多感知,沉浸感,交互,构想。

  大概有4种虚拟现实技术:桌面虚拟现实,完全沉浸的高级虚拟现实,增强现实性的虚拟现实,分布式虚拟现实系统。

6、VCD上的数据文件是以MPEG-1标准的格式存储的,它将图像分为了3种:帧内图像、预测图像和插补图像构成。其中帧内图像采用JPEG压缩方法来去掉冗余信息,也称作空间压缩。预测图像使用的帧间编码模式,也称作时间压缩。

  对动态图像进行压缩处理的基本条件是:动态图像中帧与帧之间具有相关性。

  动态图像有3个基本特点:具有时间连续特性,具有实时性,帧与帧之间具有相关性。相关性是指动态图像的连续前后两帧信息变化很小的特点。

  人们把无损压缩称为熵编码。

  CD盘光道的结构与磁盘的磁道不同,它的光道不是同心圆,而是螺旋型光道,一张CD的光道大概有5公里。光盘的随机存储性变得较差。

  DVD盘是将光盘间距缩小,将记录信息的最小凹凸坑长度缩小,以提高存储容量。因此DVD刻录机和播放机需要采用波长更短的激光,同时为提高接收盘片反射光的能力,要增大光学物镜数值孔径。

  MIDI文件包含音符、定时和16个通道的演奏定义。

  脉冲编码调制是最简单、最基本的一种波形编码。

  如果两种色光混合而成白光,则这两种色光互为补色。 红色+青色 = 绿色+品红 = 蓝+黄 = 白色

  使用RGB3:3:2表示一个像素时,像素深度为8,即3+3+2。如果使用RGB8:8:8表示一个像素,那么像素深度为24。

  图像分辨率,是指组成一幅图像的像素密度,即用每英寸多少点(dpi)表示数字化图像的大小,也用水平和垂直的像素表示。例如用200dpi来扫描一幅2*2.5英寸的照片,则可以得到400*500的图像。

  视盘与CD盘的信息存储和读出原理有结构一样,但视盘是以模拟量的方式记录视频信号的。激光束读取视盘上信息的方向是从盘的内圈向外圈读的。

软考学习笔记-数据库工程师第五章-网络基础知识

软考学习笔记-数据库工程师第五章-网络基础知识
第五章 网络基础知识

1、网络的拓朴结构

  计算机网络拓朴主要是指通信子网的拓朴构型。网络拓朴影响着网络的性能,以及整个网络的设计、功能、可靠性和通信费用

  总线结构:只有一条双向通路,便于采用广播式传送信息;总线拓朴结构属于分布式控制,无须中央处理器,结构简单;节点的增删和位置的变动容易,扩充性能好;节点的接口通常采用无源线路,可靠性高;设备少价格低,安装使用方便;但因为电气信号通路多,干扰较大,对信号的质量要求高。负载重时线路的利用率低。网上的信息延迟不确定,故障隔离和检测困难。

  星状结构:维护容易,配置灵活;故障隔离和检测容易;网络延迟时间短节点与中央交换单元直接连通,各节点之间的通信必须经过中央单元转换;网络共享能力差;线路利用率低,中央单元负荷重。

  环状结构:环形网中信息流动方向是固定的,两个节点间只有一条通路,路径控制简单;有旁路设备,节点一旦发生故障,系统自动旁路,可靠性高;信息要串行穿行多个节点,传输效率低,系统响应速度慢;环路封闭,扩充较难。

  树状结构:是总线结构的扩充形式,主要用于多个网络组成的分组结构中。

  分布式结构:无严格的布点规定,各节点之间有多条线路相连。有较高的可靠性,资源共享方便,网络响应时间短;因为节点与多个节点相连,故节点的路由选择和流量控制难度大,管理复杂;硬件成本高。

2、网络的协议和标准

  一个网络协议主要包括3个要素:语法、语义和时序。协议是一组约定的规则,它有助于通信实体间的相互理解和正确通信。协议中有3个要素,其中语法定义数据的表示形式;语义则能使数据管理所需的信息得到正确理解;时序则规定了通信应答信号之间的间隔和先后关系。

  在IEEE802局域网标准中只定义了物理层和数据链路层。其中又把数据链路层分为了逻辑链路控制LLC和介质访问控制MAC。

  以太网IEEE802.3采用的是带冲突检测的载波监听多路访问协议技术CSMA/CD。802.3,802.3u,802.3z。

802.3u采用非屏蔽双绞线,并使用与802.3一样的介质访问控制(MAC)层;802.3z对MAC规范进行了重定义,并重定义了物理层标准。

  令牌环网IEEE802.5,FDDI类似于令牌环网协议,但是采用双环技术。

  PPP协议,具备用户验证能力,可以解决IP分配。PPP和其他协议共同派生出了PPPoE和PPPOA,主要用于ADSL。

  ADSL,非对称用户数据线,速率上行1M下行8M,把线路按频段分成语音、上行和下行3个信道。

  数字专线DDN,综合业务数字网ISDN

  帧中继FR,双工并保持顺序不变。是一种基于可变帧长的数据传输网络。适用于带宽需求64K-2M,通信距离较长,数据有突发性时。

  异步传输模式ATM,是一种面向分组的快速分组交换模式,使用异步时分复用技术,将信息流分割成定长的信息元。共有4层,用户层、ATM适配层、ATM层、物理层。有2种连接类型,永久虚电路和交换虚电路。

  TCP/IP协议是internet协议的核心,分为5方面:逻辑编址、路由选择、域名解析、错误检测、流量控制及对应用程序的支持。

  TCP/IP分层模型由4层组成,应用层(FTP,telnet,smtp,nfs,snmp)、传输层(TCP,UDP)、网际层(IP,icmp,arp,rarp)、网络接口层(802.3,802.5,FDDI,ppp)。

  TCP/IP的传输层任务是提供应用程序之间的通信服务,这种通信又叫端到端的通信。网际层又叫IP层,它接收传输层的请求,传送某个具有目的地址信息的分组。网络接口层又称为数据链路层。

3、构建网络

  网络互联的设备有:中继器(及集线器)、网桥(及交换机)、路由器、网关。

  在构建一个网络的过程中,主要考虑服务器、客户机、网络设备、通信介质、、网络软件等,以及协议的选择和设备的连接方式。

4、关于IP地址

  IP地址分为5类:A,B,C,D,E。

   A类网络地址占有1个字节,定义最高位为0来标识此类地址。余下7位为真正的网络地址,支持1-126个网络。第一个字节的10进制表示为000-127。后面3个字节作为主机地址,提供2^24 - 2个端点的寻址。

   B类网络地址占有2个字节,定义最高位为10来标识此地址。余下14位为真正的网络地址,第一个字节的10进制表示为128-191。

   C类网络地址占有3个字节,定义最高位为110来标识此地址。余下21位为真正的网络地址,第一个字节的10进制表示为192-223。

   D类网络地址用于组播,定义最高位为1110来标识此类地址。第一个字节的10进制表示为224-239。

   E类网络地址为实验保留,定义最高位为1111来标识此类地址。第一个字节的10进制表示为240-255。

  可变长子网掩码VLSM,就是在IP地址后面加上“/网络号及子网络号编址比特数”。如:193.168.125.0/27,就表示前27位为网络号。

5、网络的信息安全:主要就是信息的存储安全和传输安全。信息的存储安全包括信息的使用安全(用户的标识与验证、用户存取权限限制、安全问题跟踪),计算机病毒的防治,系统安全监控,数据的加密,防止非法攻击。

  WindowsNT的网络结构中,包括的两个接口是NDIS和TDI。通过边界定义了各个层次间的统一接口,两个主要的边界层为NDIS和TDI。
NDIS,网络设备接口规范;
TDI,传输驱动程序接口。

  防火墙技术经历了包过滤、应用代理网关和状态检测三个发展阶段。

  包过滤路由器是最简单常用的防火墙。一般工作在网络层,对经过网络的信息进行分析并按策略进行限制,其核心是包过滤的算法设计。优点是速度快、实现方便;缺点是安全性差、兼容差,日志记录能力差。

  双宿主主机防火墙,由具有两个以上网口的堡垒主机构成,通过代理服务器软件从一个子网访问另一个子网。优点是加强了日志功能;缺点是若堡垒主机被攻破意味着失去了网络的安全。

  屏蔽主机网关防火墙,是由过滤路由器和应用网关组成。过滤路由器的作用是进行包过滤;应用网关的作用是代理服务。共建立了两道安全屏障。优点是安全性高;缺点是配置复杂。

  被屏蔽子网防火墙,由两个包过滤路由器和一个应用网关(堡垒主机)组成。两个包过滤路由器中间形成一个DMZ区。

6、重发器也称为中继器或转发器,是一种在物理层上互联网段的设备。

  网关也称为信关,工作在应用层,实现网络间协议转换的功能,也被称为协议转换器。

  Kerberos是分布式环境下的身份认证系统。为了防止relay攻击,它使用了一次性的ticket和时间戳。常用的数字证书格式有PGP和X.509证书。

  SSL是要建立一条安全的连接。是传输层安全协议。
 
  HTTPS用于安全地传送单个报文,属于应用层协议。

  SOCKS5是增加了认证功能的SOCKS协议。SOCKS用于代理基于TCP/IP的网络应用。SOCKS服务器端实现于应用层,SOCKS客户机实现于应用层和传输层之间。协议的作用是在两个没有直接IP联系的主机之间实现通信。

  SNMP是一种广泛使用的网络管理协议,用来收集网络上设备信息。其对应的管理信息库为MIB-2。

7、OSI参考模型的三个主要概念是Service, Interface, Protocol。
OSI/RM中的1-3层负责通信功能,称为通信子网。5-7层属于资源子网的功能范围,称为资源子网层。传输层起着承接作用。
  物理层,只是为它的上一层提供一个物理连接,在这一层数据还没有被组织;
  数据链路层,负责两个相邻结点间的线路上无差错地传送以帧为单位的数据,并进行流量控制。数据链路层要负责建立、维持和释放数据链路的连接;
  网络层,为传输层提供端到端的交换网络数据传送功能,屏蔽传输细节,为传输层建立、维持和拆除一条或多条通信路径。在这一层帧被组成数据包;
  传输层,为会话层提供透明可靠的数据传输服务,保证端到端的数据完整性。选择网络层的最适宜服务,提供建立、维护、拆除传输链接的功能。在这一层传输的是报文;
  会话层,为表示层实体提供建立、维护、结束会话连接的功能。完成通信进程的逻辑名字与物理名字间的对应,提供会话管理服务;
  表示层,为应用层提供能解释所交换信息含义的一组服务,提供格式化的表示和转换数据服务,数据的压缩、解压、加密和解密工作也是由表示层完成;
  应用层,提供OSI用户服务,提供网络与用户应用软件间的接口服务。

8、ISDN为了使通信网络内部的变化对终端用户是透明的、不可见的,它必须提供一个标准的用户接口。

  宽带ISDN可以提供许多业务,其中会议电视属于会话型业务。窄带ISDN向用户提供基本速率144Kb/s的基本速率接口BRI,和速率2Mb/s的一次群速率接口PRI。

  双绞线多用于10BASE-T和100BASE-T的以太网中,一段双绞线的最大长度为100m,只能连接一台计算机。双绞线的每端需要一个RJ45插头,各段双绞线通过集线器相连,利用双绞线最多可连接64个结点到中继器。

  屏蔽双绞线STP,非屏蔽双绞线UTP。10BASE-T, 10BASE-F的最后一个字母是以线缆类型命名的,T表示双绞线,F表示光纤。

  以太网遵循IEEE802.3标准。采用粗缆的标准称为10Base5,规定每段粗缆的长度不超过500米。采用细缆的标准称为10BASE2,工作距离为185米。否则要使用重发器(即中继器)相连。整个网的长度不能超过2500米。若超过该长度则要分成两个网,网间使用网桥相连。这是在数据链路层的连接。

  千兆以太网支持3种传输介质。多模光纤工作距离为500米,单模光纤的工作距离为2000米;宽带同轴电缆的工作距离只有25米;5类UTP双绞线仍然是最大传输100米。

  符合以太网标准的物理地址采用连续编码方法,它使用的地址长度是48bit。

  域名解析的两种主要方式是反复解析和递归解析。

  从网络高层协议角度看,网络攻击可以分为服务攻击与非服务攻击。

  防火墙一般可提供4种服务,它们是服务控制、方向控制、行为控制和用户控制。

  防火墙是一种被动的网络安全措施。

软考学习笔记-数据库工程师第四章-程序设计语言基础

软考学习笔记-数据库工程师第四章-程序设计语言基础
第四章 程序设计语言基础

1、程序设计语言的基本概念

  低级语言和高级语言

  编译程序和解释程序:解释程序会直接解释执行源程序或者将源程序翻译成某种中间表示形式后再执行。
编译程序则会将源程序翻译成目标语言程序,然后在计算机上运行目标程序。

二者的根本区别是,在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不参加目标程序的执行过程;而在解释方式下,解释程序和源程序要参与到程序的运行过程中,运行程序的控制权在解释程序。解释器翻译源程序时不生成独立的目标程序,而编译器则需将源程序翻译成独立的目标程序。

  程序设计语言的定义:一般地,程序设计语言涉及3个方面,语法、语义和语用。语言的实现有个语境问题,包括编译环境和运行环境。

2、程序设计语言的分类:按程序设计方法的不同分为4种。分别是命令式程序设计语言和结构化设计语言、面向对象的程序设计语言、函数式程序设计语言、逻辑型程序设计语言。

  命令式程序设计语言:它是基于动作的语言,也称为过程式语言。随着函数、库、模块的使用,出现了结构化程序设计技术。在结构化程序设计中任何程序段的编写都基于3种基本结构,就是顺序、选择、循环。典型的实例有Pascal,C。

  面向对象的程序设计语言:面向对象的语言一般包括这3个概念,对象、类、继承。对象是人们要研究的任何事物,它具有状态和操作;类是由用户定义的数据类型,它将具有相同状态、操作和访问机制的多个对象抽象成一个对象类,属于这种类的一个对象叫作类实例或类对象,类代表一般而该类的一个对象代表具体;继承,类与类之间可以组成继承层次,以达到概念复用和代码重用。

  函数式程序设计语言:是一种面向值的语言,其基本概念来自LISP。主要应用于符号数据处理,如微积分、数理逻辑、游戏推演以及人工智能。

  逻辑型程序设计语言:是陈述式语言,其基本概念来自PROLOG,不是严格的通用程序设计语言。PROLOG的基本运算单位是Horn子句。主要用在人工智能领域,也用在自然语言处理、数据库查询、算法描述等,尤其适合作为专家系统的开发工具。

  FORTRAN是世界上最早出现的高级程序设计语言,是由一个主程序或一个主程序与若干个子程序组成,且都是独立的程序单位;

  COBOL是一种面向事务处理的高级语言,主要用于情报检索、商业数据处理等管理领域;

  ALGOL是另一个较早出现的高级语言,是一个分程序结构语言,每个分程序由begin和end括起来;

  PASCAL语言体现了结构化程序设计风格,将分程序和过程这两个概念合并为“过程”。一个PASCAL程序本身可看成是一个操作系统所调用的过程;

  C语言在系统应用和实时处理应用中成为主要的开发语言;

  C++中最主要的是增加了类机制,成为一种面向对象的设计语言,并最大限度的与C兼容;

  JAVA是一种新型的面向对象的Internet编程语言,扩充了对分布式及C/S结构的支持,是一种强类型语言,隐含了指针以避免由于指针引起的问题;

  LISP是基于表处理的函数语言,该语言中的程序和数据的形式是等价的,数据结构可以作为程序执行,程序也可以作为数据修改

3、程序设计语言的基本成分:包括数据、运算、控制和传输。

  数据成分,是程序操作的对象,具有存储类别、类型、名称、作用域和生存期等属性,使用时要为它分配内存空间。常量、变量、全局量、局部量。

  运算成分,指明允许使用的运算符号及运算规则。

  函数:函数的定义,函数的声明,函数的调用。函数的定义包括函数首部和函数体。函数应先声明后引用。函数调用时实参与形参间交换信息的方法有传值调用和引用调用两种。

传值调用中,若函数调用时以实参向形式参数传递相应类型的值,这种方式下,形式参数将不能向实际参数返回信息;除非使用用指针作形参,在调用时先对实参进行取地址运算,然后将实参地址传递给指针形参,这样才可以实现被调用函数对实际参数的修改。

4、汇编程序的基本原理

  汇编语言是面向机器的符号化程序设计语言。计算机需要使用汇编程序对汇编源程序进行翻译才能运行。一般汇编语言都提供指令语句、伪指令语句、宏指令语句进行编程。
指令语句, 又称机器指令语句,汇编后能产生相应的机器代码,可以被CPU直接识别执行。
伪指令语句,指示汇编程序在汇编源程序时完成某些工作,如给变量分配存储单元地址,给某个符号赋值。
宏指令语句,允许用户将多次重复使用的程序段定义为宏,宏指令语句就是对宏的引用。

  指令语句与伪指令语句的区别:指令语句经汇编后将产生相应的机器代码,而伪指令语句不产生机器代码;指令语句是在程序运行时完成,而伪指令语句只能在源程序被汇编时完成。

  汇编程序:它的基本工作是将每一条可执行汇编语句转换成对应的机器指令;处理源程序中出现的伪指令和宏指令。汇编程序一般需要扫描源程序2次才能完成翻译过程,第一次主要是计算符号的值,第二次才产生目标程序。

5、编译程序的工作阶段,编译程序的过程分为6个阶段,另有2个辅助的管理程序。分为是:词法分析、语法分析、语义分析、中间代码生成器、代码优化、目标代码生成6个阶段和符号表管理、出错处理程序。中间代码的特征是与具体的机器无关。

  代码优化和中间代码生成两个阶段并不是每种编译程序都必须的。

  语法分析中的预测分析法是自顶向下的一种语法分析方法。

  编译器在语义分析阶段进行表达式的类型检查及类型转换。

  编译过程的各个阶段都会涉及到表格管理和出错处理。

软考学习笔记-数据库工程师第三章-操作系统知识

软考学习笔记-数据库工程师第三章-操作系统知识
三、操作系统知识

1、操作系统的定义:是管理计算机中各种软件、硬件资源的程序和相关文档的集合,是一种系统软件。

  操作系统能有效的组织和管理系统中的各种软、硬件资源,合理地组织计算机工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。

  操作系统的两个重要作用:
 通过资源管理,提高系统的使用效率;
 改善人机界面,向用户提供友好的工作环境。

  操作系统的4个特征:并发性、共享性、虚拟性、不确定性。

  操作系统的5个管理功能:进程管理、文件管理、存储管理、设备管理、作业管理

  操作系统的分类:
批处理系统,计算机自动、顺序地执行作业流产生的每一个作业,以节省人工操作时间和提高机器的使用效率。分为单道批处理系统和多道批处理系统。优点是同一批内的各作业次次执行,改善了cpu,io的使用效率,提高了吞吐量。缺点是磁盘需要人工装卸,作业需要人工分类,监督程序易受用户程序破坏,缺少交互性。

分时系统, 具有如下特征:多路性、独立性、交互性、及时性。

实时系统,分为实时控制系统和实时信息处理系统。主要特点有:快速的响应时间、有限的交互能力、高可靠性

网络操作系统,使得计算机更有效地共享网络资源,为网络用户提供所需各种服务的软件和有关协议的集合。

分布式操作系统,是由多个分散的计算机经网络连接而成,各主机无主次之分。为分布式计算机配置的操作系统称为分布式操作系统。
微机操作系统
嵌入式操作系统

2、研究操作系统的观点
资源管理的观点:从这种观点看,操作系统的管理对象是计算机系统的资源,操作系统则是管理计算机系统的程序集合。这种观点是在共享的前提下以资源分配、使用和回收为出发点,考虑操作系统各部分程序的功能和算法。

虚拟机的观点:操作系统加裸机构成虚拟计算机。虚拟机的观点是从功能分解的角度出发,考虑操作系统的结构,将操作系统分成若干层次,每一层完成特定的功能。

3、顺序程序执行时的特征:顺序性、封闭性、可再现性;

  并发程序执行时的特征:非封闭性、程序和机器执行程序的活动不在一一对应、并发程序间的相互制约性。

  引入进程的原因:由于程序并发执行破坏了程序的封闭性和可再现性,使得程序和执行程序的活动不在一一对应,此时用静态的程序概念已经不能描述系统中程序动态执行的过程,所以引入了进程。

4、进程的定义:就是程序的一次执行,该程序可以和其它程序并发执行。

  进程的组成:进程通常是由程序、数据及进程控制块(PCB)组成的。
进程的程序部分是进程执行时不可修改部分,它描述了进程需要完成的功能;
进程的数据部分是进程的可修改部分;
进程控制块是进程的描述信息和控制信息,是进程存在的惟一标志。

进程和程序的区别是:进程具有状态而程序没有。

5、进程的状态及状态间的切换

  三态模型:运行、就绪、阻塞。

  五态模型:新建态、终止态、运行、就绪、阻塞。

  新建态:对应于进程刚刚被创建时还没有被提交,并等待系统完成创建进程的所有必要信息的状态。整个过程分为两个阶段,一是为一个新建进程创建必要的管理信息,另一是让进程进入就绪状态。因为有了新建态,操作系统可以根据系统的性能和主存的容量限制而推迟新建态的提交。

  终止态也分为两个阶段,一是等待操作系统进行善后处理,另一是释放主存。

  具有挂起状态的进程状态:当系统资源不能满足所有进程的运行要求时,必须将某些进程挂起,放在磁盘对换区,暂时不参加调度,以平衡系统负载。有这样几个状态:活跃就绪、静止就绪、活跃阻塞、静止阻塞。

6、进程的控制,就是对系统中所有进程从创建到消亡的全过程实施有效的控制。操作系统的内核为系统实现进程控制和存储管理提供了有效的控制机制。
大多数操作系统内核均包含支撑功能和资源管理功能。
支撑功能:中断处理、时钟管理、原语操作。
原语是由若干条机器指令构成的,用于完成特定功能的一段程序。内核在执行某些基本操作时往往是通过原语操作实现的。原语在执行过程中不可分割。内核中包含的原语有进程控制、进程通信、资源管理等。

资源管理功能:进程管理、存储器管理、设备管理。

7、进程间通信
进程间的同步:一般来说,一个进程相对于另一个进程的运行速度是不确定的,即进程是在异步环境下运行。每个进程都以各自独立的不可预知的速度向前推进,但相互合作的进程需要在某些确定点上协调它们的工作,当一个进程到达了这些点后,除非另一进程已完成了某些操作,否则就不得不停下来等等这些操作结束。
进程间的互斥:在多道程序系统中,各进程可以共享各类资源,但有些资源一次只能供一个进程使用,称为临界资源(critial resource)。同步是进程间的直接制约问题,互斥是进程间的间接制约问题。

临界区(critial section)是对临界资源实施操作的那段程序。互斥临界区管理的原则为:有空即进、无空则等、有限等待、让权等待。

8、整形信号量与PV操作

  整形信号量是一个整形变量,根据控制对象的不同赋不同的值。信号量分为两类:
公用信号量:实现进程间的互斥,每个相关进程即可对它施行P操作也可以进行V操作,初值为1或资源的数目;
私用信号量:实现进程间的同步,只有一个进程可以对它施行P操作,其它进程只能做V操作,初值为0或某个正整数。

  信号量S的物理意义:S>=0表示某资源的可用数,S<0则其绝对值表示阻塞队列中等待该资源的进程数。

  PV操作是实现进程同步与互斥的常用方法。PV操作是低级通信原语,其中P操作表示申请一个资源,V操作表示释放一个资源。

  P操作定义:S:=S-1,若S>=0,则执行P操作的进程继续执行;否则若S<0,则该进程为阻塞状态,并将其插入阻塞队列。
  V操作定义:S:=S+1,若S>0,则执行V操作的进程继续执行;否则,若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,执行V操作的进程继续执行。

  利用PV操作实现进程的互斥:令信号量mutex的初值为1,当进入临界区时执行P操作,临界区时执行V操作。
P(mutex)
临界区
V(mutex)

  怎样利用PV操作实现进程的同步:可用一个信号量与消息联系起来,当信号量的值为0时表示希望的消息未产生,当信号量的值为非0时表示希望的消息已经存在。假定用信号量S表示某条消息,进程可以通过调用P操作测试消息是否到达,调用V操作通知消息已准备好。最典型的是单缓冲区的生产者和消费者的同步问题。如果采用PV操作来实现进程PA和进程PB间的管道通信,并且保证这两个进程并发执行的正确性,则至少需要2个信号量,信号量的初值分别为0、1。


9、高级通信原语,因为PV操作不足以描述复杂的进程间的信息交换,所以引入高级通信原语。

  高级通信原语有这么几种:共享存储系统、消息传递系统、管道通信。

  进程通信有直接和间接两种方式。间接方式是以信箱以为媒介。

10、管程(monitor):另一种同步机制,采用资源集中管理的方法,将系统中的资源用某种数据结构抽象地表示出来。由于临界区是访问共享资源的代码段,因而建立一个管程来管理进程提出的访问请求。采用这种方式对共享资源的管理就可以借助数据结构及在其上实施操作的若干过程来进行。对共享资源的申请和释放可以通过过程在数据结构上的操作来实现。

11、进程调度,在某些系统中一个作业从提交到完成需要经历高、中、低三级的调度。
高级调度(又称长调度、作业调度或接纳调度),它决定输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。
中级调度(又称对换调度),它决定处于交换区中的哪个就绪进程可以调入主存,以便直接参与CPU的竞争。
低级调度(又称进程调度),它决定处于主存中的哪个进程使用CPU。

  调度方式,是指当有更高优先级的进程来到时如何分配CPU。调度的方式分为可剥夺式和不可剥夺式两种。

  常用的调度算法:先来先服务,主要用于宏观调度,有利于长作业,有利于CPU繁忙的作业;
  时间片轮转,主要用于微观调度,提高了并发性和响应时间,最终提高了资源利用率;
  优先级调度, 分为静态和动态两种;
  多级反馈调度,是在时间片轮转和优先级算法的基础上改进得到。其特点是:照顾了短进程以提高系统吞吐量,照顾I/O型进程以获得较好的I/O设备利用率并缩短响应时间,不必估计进程的执行时间和动态调节优先级。

12、死锁:就是指两个以上的进程相互请求对方已经占有的资源时而导致无法继续运行下去的现象。

  几种会产生死锁的情况:进程推进程顺序不当,同类资源分配不当,PV使用不当。

  进程资源有向图:由方框、圆圈和有向边3部分组成。其中资源用方框表示,进程用圆圈表示。在方框中每一个小圆圈代表一个资源。有向边分别代表请求资源和分配资源。

  死锁产生的原因:因为竞争资源或进程推进顺序非法。进程推进顺序仍是关于进程请求和释放资源的顺序。

  死锁产生的4个必要条件:互斥条件、请求保持条件、不可剥夺条件、环路条件。
互斥是说进程对所要求的资源有排它性控制。请求保持是说进程断续地请求资源,但后续的资源被阻塞。环路是指在发生死锁时在进程资源有向图中,每个进程都占有了下一个进程请求的一个或多个资源。

  死锁的4种处理:鸵鸟策略;
预防策略,即破坏死锁产生的4个必要条件之一;
避免策略,即精心分配资源,主动回避死锁;
检测与解除死锁

13、线程 
  传统的进程有两个基本属性,即可拥有资源的独立单位,和可独立调度、分配的基本单位。引入线程后,将传统进程的两个属性分开,线程作为可独立调度和分配的基本单位,进程作为独立拥有资源的单位。因此,用户可以通过创建线程来完成任务,以减少程序并发执行时的时空开销。

14、存储器的结构:(寄存器)--缓存-主存-辅存。

  虚拟地址,又称为逻辑地址、相对地址、程序地址。它是从0号单元开始编址,并顺序分配所有的符号名所对应的地址单元,它不是主存中的真实地址。
  地址空间,又称逻辑地址、虚地址。
  存储空间,又称物理地址空间,是物理地址的集合。相对地址空间通过地址再定位机构转换到绝对地址空间。

  重定位:程序的逻辑地址被转换成主存的物理地址的过程称为地址重定位。分为静态重定位和动态重定位。

静态地址重定位的优点是无需硬件地址变换机构的支持,它的缺点是必须为程序分配连续的存储区域且执行期间不能扩充不能移动并难以共享;
动态地址重定位要依赖于硬件的地址变换机构。它解决了静态重定位的各种缺点。

  进行存储管理的目的是:对主存空间进行分配和管理;主存扩充;存储保护;提高空间的利用率。
主存扩充技术,通过交换和覆盖实现,其中交换是由操作系统实现,覆盖是由操作系统提供覆盖机制但由用户进行控制。

15、分区存储管理,按分区方式的不同分为固定分区、可变分区、可重定位分区。

可变分区有4种请求和释放分区的算法:最佳适应算法、最差适应算法、首次适应算法、循环首次适应算法。

为减少分区碎片而使用的可重定位算法,基本思想是移动所有已分好的分区,使其靠拢成为连续区域。

  分区保护管理:有2种方法。一是“上界/下界寄存器”,另一种是“基址/限长寄存器”的方法。其中上界寄存器和基址寄存器都是放的作业的装入地址。下界寄存器放作业的结束地址,限长寄存器放作业的长度。因此调入作业所需要的物理地址必需满足:

 上界寄存器<=物理地址<=下界寄存器
   或 基址寄存器<=物理地址<=物理地址+限长寄存器

  分区管理方案是解决多道程序共享主存的可行方案,但它要求用户的程序必须装入地址连续的空间中。

16、页式存储管理

  分页原理:将一个进程的地址空间划分成若干大小相等的区域,称为页。相应地将主存空间划分成与页相同大小的若干物理块,称为块或页框。在为进程分配主存时,将进程中若干页分别装入多个不相邻的块中。

  地址结构由2部分组成:页号+页内地址

  页表:又称为页面映射表。作用是实现从页号到物理块号的地址映射。

  快表:是页表方式的改良,是在地址映射机构中增加一个联想存储器(是由一组高速存储器组成),这就是所谓的快表。它用来保存当前访问频率最高的少数活动页的页号及相关信息。 另外还有一种方法是增加高速寄存器来保存页表,但这样的成本太大。

  两级页表机制:是为了减少页表占用的连续地址空间,而提出的方法。使用两级或多级页表机制来存储页表。

17、分段存储管理
  
  原理:在分段式存储管理系统中,为每个段分配一个连续的分区,而进程中的各个段可以离散地分配到主存的不同分区中。在系统中为每个进程建立一张段映射表,简称段表。每个段在表中占有一个项,记录该段在主存中的起始地址(基址)和段的长度。进程在执行时,通过查段表来找到每个段所对应的主存区。因此,段表实现了逻辑段到物理主存区的映射。

  分段系统的地址结构:段号(名)+段内地址

  特点:段是信息的逻辑单位,因此分段的一个突出优点是易于实现段的共享,即若干个进程共享一个或多个段,而且对段的保护也很简单。在分页系统中,虽然也能实现程序和数据的共享,但远不如分段系统方便。

  段页式存储管理,原理是先将主存划分为大小相等的存储块(页框),再将用户程序按程序的逻辑关系分为若干个段,为每个段命名,然后将每个段划分为若干个页,以页架为单位离散分配。
  
  段页式系统的地址结构:段号+段内页号+页内地址

18、虚拟存储管理

  程序的局部性:时间局限性和空间局限性。前者指程序中的某条指令或某个存储单元一旦被执行或访问,则在不久的将来可能会再次发生(因为程序中存在着大量的循环操作);后者指一旦程序访问了某个存储单元,则不久的将来该存储单元附近的存储单元也最有可能被访问(因为程序是顺序执行的)。

  虚拟存储器,从用户的角度看,是这样一个系统,它所具有的主存容量比实际主存容量大得多。它是根据局部性原理,在一个作业运行之前只把部分程序和数据装入主存,其余部分留在磁盘上。如果要访问的页或段未在主存中(称为缺页或缺段)则将它们调入主存。

  虚拟存储器的实现:
请求分页系统,它是在分页系统的基础上,增加了请求调页和页面置换功能后所形成的页式虚拟存储系统。

请求分段系统,它是在分段系统的基础上,增加了请求调段和段置换功能后所形成的段式虚拟存储系统。

请求段页式系统,它是在段页式基础上,增加了请求调页和页面置换功能后所形成的段页式虚拟存储系统。

  其中请求分页系统是目前常用的一种虚拟存储器方式。其页面置换算法的好坏直接影响系统性能,不当的置换算法可能会导致系统“抖动”。常用的页面置换算法有:最佳置换算法、先进先出置换算法、最近最久未使用置换算法和最近未用置换算法。

  虚拟存储器的特征:离散性、多次性、对换性、虚拟性。工作集的概念是指在某段时间间隔里,进程实际要访问的页面的集合。
  虚存容量不是无限的,它受主存和外存可利用的总容量限制;虚存还受计算机总线地址结构限制。虚存的扩大是以牺牲CPU工作时间和主存与外存交换时间为代价的。虚存是由操作系统调度,采用主存外存交换技术,各道程序在必须使用时调入主存,不用的程序则调出主存。

19、设备管理,包括各种设备分配、缓冲区管理和实际物理I/O设备操作,通过管理达到提高设备利用率和方便用户使用的目的。

  设备的分类
按数据组织分为:块设备 ,如磁带、磁盘
字符设备,如打印机、交互式终端
按资源分配分为:独占设备,如打印机
共享设备,如磁盘
虚拟设备,如利用假脱机技术将一台独占设备变为多个用户共享的逻辑设备。
按数据传输速率:低速设备,如键盘、鼠标
中速设备,如打印机
高速设备,如磁盘

  设备管理的目标是如何提高设备的利用率,为用户提供方便统一的界面。
  设备管理的任务是保证在多道程序环境下,当多个进程竞争使用设备时,按一定策略分配和管理各种设备,控制设备的各种操作,完成I/O设备与主存之间的数据交换。

20、I/O软件

  IO设备管理软件分为4层:由低到高为中断处理程序--设备驱动程序--与设备无关的系统软件--用户级软件

  设备驱动程序是直接同硬件打交道的软件模块,它与IO设备的硬件结构有密切的联系。它的任务就是接受来自与设备无关的上层软件的抽象请求,进行与设备有关的处理。

  设备的IO方式:
通道 , 使数据的传输独立于CPU,CPU只须向通道发出IO命令,由通道完成IO任务后再向CPU发出中断信号。
DMA ,  是指数据在主存和IO设备之间直接传送,CPU只需要在首尾做些处理。
缓冲技术,缓冲区技术可提高外设利用率,使外设尽可能处于忙状态。分为硬件缓冲(由硬件寄存器实现)和软件缓冲(由操作系统实现)。缓冲技术的优点是:可以缓和CPU与IO设备间速度不匹配的矛盾;减少CPU的中断频率,放宽对中断响应时间的限制;提高CPU和IO设备之间的并行性。

21、Spooling技术

  Spooling是外围设备联机操作的简称,又称为假脱机系统。Spooling实际上是用一类物理设备模拟另一类物理设备的技术,是使独占使用的设备变成多台虚拟设备的技术,是一种速度匹配技术。
  Spooling由预输入程序、缓输出程序、井管理程序、输入井输出井组成。

  Spooling系统中拥有一张作业表来登记进入系统的所有作业的作业名、状态、预输入表位置等信息。每个作业拥有一张预输入表来登记该作业的各个文件的情况,包括设备类、信息长度及存放位置等。(包括图)

  输入井中的作业有4种状态:提交、后备、执行、完成。

22、磁盘调度,分为移臂调度和旋转调度两种。并且是先进行移臂调度,然后再进行旋转调度。因为访问磁盘最耗时的是寻道时间,所以磁盘调度的目标是减少磁盘的平均寻道时间。

  磁盘驱动调度, 常用的磁盘调度算法有先来先服务FCFS、最短寻道时间SSTF、扫描算法SCAN(又称为电梯调度算法)、单向扫描调度算法CSCAN、N-Step-SCAN算法(磁臂粘着)、FSCAN算法。

  FCFS的优点是简单,缺点是平均寻道时间太长;SSTF的优点是每次的寻道时间最短,缺点是不能保证平均寻道时间最短,且有高度局部化的倾向,会推迟某些请求以致引起饥饿;SCAN的优点是避免了饥饿现象,缺点是可能有个别请求被严重延迟;C-SCAN为的是避免SCAN的缺点

  旋转调度算法, 该算法用来计算,当移动臂定位后,有多个进程等待访问该柱面时,这些进程的访问顺序。系统应该选择延迟时间最短的进程对磁盘的扇区进行访问。

23、文件:具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。文件是一种抽象机制,它隐藏了硬件和实现细节。
  文件管理系统:就是操作系统中实现文件统一管理的一组软件和相关数据的集合,是专门负责管理和存取文件信息的软件机构,简称文件系统。
  文件系统的功能:按名存取、统一的用户接口、并发访问和控制、安全性控制、优化性能、差错恢复。

  文件的结构和组织:文件的结构是指文件的组织形式。从用户的角度看到的文件组织形式称为文件的逻辑结构;从实现的角度看文件在存储器上的存放方式,称为文件的物理结构。

  文件的逻辑结构分为2类:一是有结构的记录式文件;另一是无结构的流式文件。

  文件的物理结构,决定了文件的逻辑块号到物理块号的转换方式。常见的物理结构有:连续结构(顺序结构)、链接结构、索引结构、多个物理块的索引表(链接、多重索引表、unix的索引结构)。索引顺序文件既适合于交互方式应用,也适合于批处理方式应用。

  文件目录,就是文件控制块的有序集合。文件控制块FCB是用于描述和控制文件的数据结构。常见的目录结构有3种:一级目录结构,二级目录结构,多级目录结构。

  文件的存取方法有顺序和随机两种。
 
  磁盘分配表,就是外存进行空间管理的数据结构。

  常用的空闲空间管理方法:位示图、空闲表法、空闲链表及成组链接法。

  文件的使用:文件系统为每个文件与该文件在磁盘上的存放位置建立了对应关系。文件系统通过用户给出的文件名查找对应文件的存放位置并读出内容。在多用户环境下,操作系统为每个文件建立和维护关于访问权限等方面的信息。为此操作系统在操作级和编程级为用户提供文件服务。

  文件共享:是指不同用户使用同一文件。有多种共享形式,采用文件名与文件说明分离的目录结构有利于实现文件共享。

  在Unix系统中允许多用户基于索引结点的共享,或利用符号链接共享同一个文件。基于索引结点的共享方式又有静态共享和动态共享两种方式。这样子,会在打开文件表、系统打开文件表、内存i结点表及磁盘间形成一副关系图。这种关系图在辅导教材的155页的几个例子中有图解,可以体味。

  符号链接会增加系统的读盘次数,而硬链接的共享文件的目录文件表目中已包括了共享文件的索引结点号。

  文件保护:文件系统对文件的保护采用存取控制方式进行。存取控制就是不同的用户对文件的访问规定不同的访问权限。常用的存取控制方式有,存取控制矩阵、存取控制表、用户权限表、密码。

  存取控制矩阵,就是一个二维矩阵,一维列出全部用户,另一维列出全部的文件,每个矩阵元素表示某个用户对某个文件的存取权限。
  存取控制表,就是按用户对文件的访问权力的差别对用户进行分类,该存取控制表可存放在每个文件的文件控制块中。UNIX使用的这种方式,用9位二进制数表示三类用户对文件的存取权限,该权限存在文件索引节点的di_mode中。
  用户权限列表,以用户或用户组为单位将用户可存取的文件集中起来存入表中,表中的每个条目表示该用户对相应文件的存取权限。这相当于把存取控制矩阵简化为一行。

  系统的安全性:分为4个级别,系统级、用户级、目录级和文件级。

  文件系统的可靠性:转储与恢复,日志文件,文件系统的一致性。

24、作业,是系统为完成一个用户的计算任务所做的工作总和。作业中的每个步骤又称为作业步。

  作业控制:分为脱机控制和联机控制两种方式。在脱机控制中用户必须使用作业控制语言(JCL)编写作业说明书,并同作来一同提高给系统

  作业控制块JCB:是记录作业各种有关信息的登记表。JCB是作业存在的惟一标志,其中包括用户名、作业名和状态标志等信息。JCB被用于在输入井中形成作业后备队列。

  作业的4种状态:提交、后备、执行和完成。注意它们的状态转换图。

  作业调度算法:先来先服务算法、短作业优先、响应比高者优先、优先级、均衡调度算法。其中响应比是取值于“作业响应时间除以作业执行时间”,作业响应时间是作业时间与作业等待时间之和。

  作业周转时间 = 作业完成时间-作业提交时间 ,N个作业的平均周转时间就是取N个作业的周转时间平均值。
  作业带权周转时间 = (作业完成时间-作业提交时间)/ 作业执行时间

25、UNIX操作系统

  UNIX系统的结构:它是一种多用户、多任务的分时操作系统,一般由存储管理、进程管理、设备管理和文件系统管理几个部分组成。

  unix文件系统的目录结构是树形带交叉勾连的,根目录记为"/"。目录是一个包含目录项的文件。进程可以通过系统调用访问文件。unix文件系统的布局如图所示:        
|引导块|超级块|索引结点区|数据存储区|

  Unix进程的组成:由控制块PCB、正文段和数据段组成。

  Unix进程的控制:有一个进程控制子系统,提供了如fork,exec,exit,wait,signal,kill,msgsnd,msgrcv等系统调用,以完成进程的同步、通信、存储及调度。

  Unix进程的调度:采用优先数算法,进程的优先数随进程的运行情况而变化。

  Unix进程的存储:早期采用对换技术;高版本的Unix的主存管理采用的分页式虚拟存储机制,以对换技术作为辅助手段。

  Unix的设备管理:Unix上包括两类设备,即块设备和字符设备。Unix设备管理有这样的特点,
  块设备与字符设备具有相同的层次结构(对它们的控制方法和所采用的数据结构、层次结构相同);
  将设备作为一个特殊文件并赋予一个文件名(文件存取与对设备的使用,具有了统一的接口);
  采用完善的缓冲区管理技术(预先读、异步写、延迟写)。

26、Windows操作系统

  Windows的体系结构:通过硬件实现了核心态和用户态两种特权状态。核心组件使用了面向对象的设计原则,一般不能直接访问某个数据结构中由单个组件维护的消息,这些组件只能使用外部接口传送参数访问或修改这些数据。

  Windows的核心态模块有:核心、执行体、硬件抽象层、设备驱动程序、图形引擎。

  Windows的文件系统:NTFS使用64位簇进行索引,NTFS的特征有可恢复性、安全性、大磁盘和大文件、多数据流和通用索引功能。

  在Windows中进程是资源分配的单位,并将进程作为对象来进行管理。Windows的线程是内核线程,是处理机的调度单位。

  存储管理,Windows默认使用二级页面表结构来转换物理地址和虚拟地址。

  Windows的设备管理,建立了广义的资源管理概念,并统一地用对象模型来描述和规范化,大大降低了系统的复杂性。在输入输出上,建立了一个一致的高层界面--IO设备虚拟界面。将所有的读写数据看成直接送往虚拟文件的字节流。