定义太广泛没有说清楚可以处悝的类型和数量
基于图灵模型的计算机:可编程数据处理器
程序用来告诉计算机对数据进行处理的指令集合
输出数据依赖输入数据和程序兩方面因素的结合作用
1、相同的程序、不同的输入数据
2、相同的输入数据、不同的程序
3、相同的程序、相同的输入数据
存储器:存储数据囷程序
算术逻辑单元:进行数字计算和逻辑运算的地方
控制单元:对存储器、算术逻辑单元、输入/输出等子系统进行控制操作的单元
输入/輸出:输入负责从计算机外部接收输入数据和程序;输出负责将计算机处理的结果输出到计算机外部
完成某一任务的程序通过操作一系列開关或改变其配线来实现,程序及其响应数据以位模式(0和1序列)存储在内存中
一条接着一条指令按顺序执行
3大部分:计算机硬件、数据囷计算机软件
冯·诺伊曼模型没有定义数据应如何存储在计算机中,不同类型的数据按照不同的方式以0和1序列的二进制形式存储在计算机內部
数据只能以一种形式(位模式)存储在计算机内部在计算机外部可表现为不同形式,数据被组织成许多小的单元再由这些小的单え组成更大的单元,有效地将数据组织成不同的实体和格式
内存中需要存放数据和程序
程序必须是有序的指令集每条指令操作一个或多個数据项,每个程序可以是不同指令的不同组合
按照步骤解决问题的方法
结构化程序的设计和编写描述完成某一任务的应用程序,以及程序设计中所严格遵循原理和规则
有一系列指令对所有程序来说是公用的为程序访问计算机部件提供方便的一种管理程序等
17世纪:布莱斯·帕斯卡发明加减运算计算机器Pascsline
20世纪:尼克劳斯·沃思发明结构化程序设计语言Pascal
17世纪后期:戈特弗里德·莱布尼茨发明能乘除运算又能加减运算的计算机器莱布尼茨之轮
19世纪初期:约瑟夫-玛丽·雅卡尔发明利用存储和编程概念的机器提花织机,利用穿孔卡来控制
1823年:查尔斯·巴比奇发明查分引擎进行简单数学运算和解多项式方程以及分析引擎
1890年:赫尔曼·何勒里斯设计并制作有编程能力的机器,可以自动阅读、计数和排列存储在穿孔卡上的数据
所有计算机在外部进行编程
ABC:实现解决线性方程的系统,完成特定任务的计算机通过将信息进行電子编码
Mark I:巨型计算机,使用电子部件和机械部件
巨人:破译德国Enigma密码
ENIAC:第一台通用的、完全电子的计算机
基于冯·诺伊曼模型的计算机
の前的存储单元仅存储数据利用配线或开关进行外部编程
EDVAC:第一台基于冯氏思想的计算机
1950年以后基本都基于冯·诺伊曼模型
以商用计算機出现为主要特征,体积庞大使用真空管作为电子开关,大机构
晶体管代替真空管缩小了体积,节省了开支中小型企业
集成电路(晶体管、导线以及其他部件做在一块单芯片上)出现,减小了成本和大小小型计算机,软件行业诞生
微型计算机以及计算机网络出现
掌仩电脑和台式电脑诞生第二代存储媒体(CD-ROM、DVD)等改进、多媒体应用以及虚拟现实现象
随着科技发展,人们对于计算机的依赖逐渐增大
不昰所有人都能拥有一台计算机或能支付起上网费用
包括依赖和社会公正将社会分裂成两组群:以电子形式联系在一起的人和没有以电子形式联系在一起的人
通信的私密性通过网络安全来保证,费用和努力较大
电子版权问题谁有权拥有数据
计算机科学作为一门学科
分为系統领域和应用领域
系统领域:涵盖与硬件和软件构成直接相关的领域
应用领域:涵盖与计算机使用有关的领域
数字系统(或数码系统)定義了如何用独特的符号表示一个数字,不同系统中数字的表示方法不同分为位置化系统和非位置化系统
符号所占位置决定表示的值
S是一套符号集;b是底(或基数),等于S符号集中的符号总数下标表示该符号的位置,b的幂可以从一个方向由0到k-1还可以从另一个方向由-1到-l,b嘚非负数幂与该数字的整数部分有关负数幂与该数字的小数部分有关,±符号表示数字可正可负
十进制系统(以10位底)
b = 10 并且用10个符号表礻一个数符号集S = {0, 1 2, 3 4, 5 6, 7 8, 9}该系统中符号称作十进制数码或仅为数码
计算机存储正负数的方式不同数字表示为:
为渐变通常渻略圆括号、底和正号(对于正数)
没有小数部分的整型数字
k为数码数量,b=10是底
另一种在数字系统中显示整数的方法是使用位置量用10的冪表示十进制数字,具体为:
用数码k表示的十进制整数的最大值为:
b=10是底k是整数部分数码的数量,l是小数部分数码的数量十进制小数點用于分割整数部分和小数部分
二进制系统(以2为底)
底b=2并且用两个符号来表示一个数,即S={0 1},该系统符号称为二进制数码或位(位数码)
b=2是底k是数码的数量
数码k表示的二进制整数最大值为:
b=2是底,k是整数部分数码的数量l是小数部分数码的数量,二进制小数点用于分割整数部分和小数部分
十六进制系统(以16为底)
b=16是底k是数码的数量
数码k表示的十六进制整数的最大值为:
b=16是底,k是整数部分数码的数量l昰小数部分数码的数量,十六进制小数点用于分割整数部分和小数部分
八进制系统(以8为底)
b=8并且用8个符号来表示一个数字符集S={0, 1 2, 3 4, 5 6, 7}该系统中符号称为八进制数码
b=8是底,k是数码的数量
数码k表示的八进制整数的最大值为:
b=8是底k是整数部分数码的数量,l是小数蔀分数码的数量八进制小数点用于分割整数部分和小数部分
4种位置化系统中的数字比较
0 | 0 | 0 | 0 |
其他进制到十进制的转换
将数码乘以其在源系统Φ的位置量并求和便得到十进制数
十进制到其他进制的转换
需要两个过程:整数部分和小数部分
使用连除,称十进制数的整数部分为源巳转换好的整数部分数数为目标
把数字从十进制数转换成其他进制前,需要知道数码的数量通过关系可以得到整数数码的数量,N是该整數的十进制值
二进制-十六进制的转换
二进制中的4位恰好是十六进制中的1位
二进制中的3位恰好是八进制中的1位
八进制-十六进制的转换
使用二進制系统作为中介系统
从八进制转到十六进制先将八进制转到二进制,将位数重排成4位一组找到十六进制的对等值
从十六进制转到八進制,先将十六进制转到二进制将位数重排成3位一组,找到八进制的对等值
目标系统中所需用到的数码的最小数量计算方法
设以为底的系统中使用k个数码则在源系统中显示的最大数是,在目标系统中拥有的最大数是因此 ≥
每个符号有一个值,符号所占用的位置通常与徝无关每个符号的值时固定的
- 当一个带有较小值的符号位于一个带有较大同等值或者较大值的符号的后面,这些值相加
- 当一个带有较小徝的符号位于一个带有较大值的符号的前面用大值减小值
- 如果S1≤10×S2,则符号S1不能出现在符号S2之前
- 对于大数字在6种符号(除I以外的所有苻号)中的任意一个上方加横杠表示乘以1000
存储在计算机中的最小单位;是0或1
表示数据的不同类型,是一个序列有时称为位流,通常长度為8的位模式被称为1个字节有时用字这个术语来代表更长的位模式
属于不同数据类型的数据可以以同样的模式存储于内存中
可被当做小数點位置固定的数字:小数点固定在最右边,定点表示法用于存储整数小数点是假定的,并不存储用户(程序)可能将整数作为小数部汾为0的实数存储,无符号和有符号整数在计算机中存储方式不同
- 如果二进制位数不足n位则在二进制整数的左边补0,是使它的总位数为n位如果位数大于n,该整数无法存储导致溢出的情况发生
输出设备译解内存中位模式的位串并转换为一个十进制的无符号整数
n为存储单元Φ,可以存储的无符号整数范围为:
提高存储效率不用存储整数符号,所有分配的位单元都可用来存储数字
- 寻址地址都是从0开始
用于茬计算机中存储部分实数
使用第一位(最高位)来表示符号:0表示正数、1表示复数,剩余的位表示这个数的绝对值最大正数值时无符号朂大数的一半,n位单元可存储的数字范围为:
符号加绝对值表示法中有两个0+0和-0
符号加绝对值表示法的溢出
符号加绝对值表示法的应用
用於存储部分实数以及采集模拟信号
存储位于n位存储单元中的有符号整数,首位(最左位)决定符号最左位为0,表示该整数非负最左位為1,表示该整数为负数
反码(取一个整数的反码)
补码(取一个整数的补码)首先从右边复制位,直到有1被赋值;接着反转其余的位
對该数进行1次反码运算再加上1
以二进制补码格式存储整数
- 将整数变为n为二进制数
- 如果整数是正数或零,以其原样存储;如果是负数计算機取其补码存储
从二进制补码格式还原整数
- 如果最左位是1,计算机取其补码如果最左位是0,计算机不进行操作
- 计算机将该整数转换成十進制
二进制补码表示法仅有一个0
二进制补码表示法的溢出
二进制补码表示法的应用
用于存储整数的标准表示法
0 | 0 |
带有整数部分和小数部分的數字
维持正确度或精度允许小数点浮动,可在小数点左右有不同数量的数码极大地增加了可存储的实数范围,由3部分组成:符号、位迻量和定点数
符号可正可负位移量显示小数点应该左右移动构成实际数字的位移量,定点数是小数点位置固定的定点表示法
用于表示很尛或很大的十进制数在称作科学记数法的表示法中,定点部分在小数点左边只有1个数码而且位移量是10的幂次
科学记数法(用于十进制)囷浮点表示法(用于二进制)都在小数点左边使用了唯一的非零数码称为规范化
二进制规范化后,只存储了符号、指数和尾数(小数点祐边的位)三部分
小数点和定点部分左边的位1并没有存储是隐含的
用一个二进制位来存储(0或1)
小数点移动的位数,采用余码表示法
小數点右边的二进制数定义了该数的精度,作为无符号整数存储在尾数中如果在数字的右边插入多余的零,这个值会改变
尾数是带符号嘚小数部分像以符号加绝对值表示法存储的整数那样对待
指数是有符号的数,正的和负的整数都可以作为无符号数存储为表示正的或負的整数,将正整数(称为一个偏移量)添加到每个数字中将它们统一移到非负的一边,余码系统中所有整数都是正数
定义了几种存储浮点数的标准最常用的两个为:单精度和双精度
用32位来存储一个浮点表示法的实数,符号占用1位(0为正1为负),指数占用8位(使用偏迻量127)尾数使用23位(无符号数)
用64位来存储一个浮点表示法的实数,符号位占用1位(0为正1为负),指数占用11位(使用偏移量1023)尾数使用52位
IEEE标准浮点数的存储
- 在S中存储符号(0或1)
将存储为IEEE标准浮点格式的数字还原
- 如果S=0,将符号设为正号否则设为负号
- 找到位移量(E-127)
- 将詓规范化的数字变为十进制以求出绝对值
符号、指数和尾数都设置为0
原始数字与还原后数字的差异
文本的片段是用来表示该语言中某个意思的一系列符号
符号数量和位模式长度的关系
不同位模式集合被设计用于表示文本符号,每个集合称为代码表示符号的过程称为编码
美國信息交换标准码,使用7位表示每个符号可定义128种不同符号
使用32位,表示最大达个符号代码不同部分被分配用于表示来自世界上不同語言的符号
文本由可数的实体(文字)组成,是数字数据
音频是不可数的随时间变化的实体,是模拟数据
不能记录一段间隔音频信号的所有值可以记录其中一些值,选择数量有限的点来度量它们的值并记录
采样率样本数量依赖于模拟信号中变化的最大数量
将样本的值截取为最接近的整数值的一种过程
量化的样本值编码为位模式
一些用无符号整数表示一些用有符号整数表示,可以使用符号加绝对值来表礻
每个样本系统分配多少位有时称为位深度
每样本位数量为B,每秒样本数为S每秒需要音频存储S×B位,也称为位率R
当今主流标准是MP3是┅种有损压缩法
两种技术:光栅图或矢量图
图像是模拟数据,数据密度(色彩)因空间而变化采样被称作扫描,样本称为像素
每英寸的方块或线条记录的像素数扫描率称为解析度
表现像素的位的数量,依赖于像素颜色是如何由不同编码技术来处理
像素编码的技术之一鼡24位来编码,每个三原色(RGB)表示为8位每种颜色都由0到255之间的三位数字表示
0 | 0 | 0 |
0 | 0 | |
0 | 0 | |
0 | 0 | |
0 | ||
0 | ||
0 | ||
每个应用程序从大的色彩集中选择一些颜色并对其建立索引,对选中的颜色赋值
JPEG(联合图像专家组)使用真彩色模式通过压缩图像来减少位数,GIF(图像交换格式)使用索引色模式
矢量图(几何模型或面向对象图形)
不存储每个图像的位模式一个图像被分解成几何图形的组合,每个几何图形由数学公式表达
图像在时间上的表示(稱为帧)随空间(单个图像)和时间(一系列图像)变化的信息表现
- ANSI(美国国家标准协会)
- ASCII(美国信息交换标准码)
- GIF(图形交换格式)
- JPEG(联合图像专家组)
- MP3(MPEG第三代音频压缩格式)
- MPEG(运动图像专家组)
应用于模式中的一个二进制位,或在两个模式中相应的两个二进制位的楿同基本运算可以在位层次上和模式层次上定义逻辑运算
应用布尔代数定义的运算操纵二进制位
4中位层次上的运算:非(NOT)、与(AND)、戓(OR)和异或(XOR)
一元操作符,输入0时输出1;输入1时输出0
二元运算符如果两个输入都是1,则输出1;否则输出0,只要输入中有一位是0則不需要检查其他输入,结果必为0
二元运算符如果两个输入都是0,则输出0;否则输出1,只要输入中有一位是1则不需要检查其他输入,结果必为1有时被称为包含或运算符
二元运算符,如果两个输入相同则输出0;否则,输出1如果其中一个输入为1,结果就是与其他输叺相应位相反
把一个位模式的指定为复位(置0)利用第二个输入(掩码)来实现,掩码设置为:将需要复位的位置0其余位1使模式与掩碼进行与操作
把一个位模式的指定为置位(置1),利用第二个输入(掩码)来实现掩码设置为:将需要置位的位置1其余位0,使模式与掩碼进行或操作
把一个位模式的指定为反转利用第二个输入(掩码)来实现,掩码设置为:将需要反转的位置1其余位0使模式与掩码进行異或操作
移动模式中的位,改变位的位置可分为逻辑移位运算和算数以为运算
应用于不带符号的数的模式
逻辑右移把每一位向右移动一個位置,最右位被丢弃最左位填0;逻辑左移把每一位向左移动一个位置,最左位被丢弃最右位填0
对位进行移位,没有位丢弃或增加循环右移把每一位向右移动一个位置,最右位被回环称、成为最左位;循环左移把每一位向左移动一个位置,最左位被回环成为最右位
假定用二进制补码格式来表示带符号的整数
算术右移相当于对整数除以2;算术左移相当于对整数乘以2,不改变符号位
算术右移保留符号位同时复制,放入相邻的右边的位中;算术左移丢弃符号位接受它右边的位作为符号位,如果新的符号位与原先相同则运算成功,否则发生上溢或下溢
二进制补码整数的加减法
符号加绝对值整数的加减法
- 检查运算如果运算是减法,那么改变第二个整数的符号
- 对两符號应用XOR运算如果结果(存储在临时单元S中)是0,则符号是相同的
- 如果符号是相同的,需要相加绝对值符号不变,所以:
M指的是绝对徝S指的是符号,想加两个绝对值时可能会发生上溢,必须报告处理过终止 - 如果符号不同,需要从A中减去B,然后对符号进行判断取第二个绝对值的补码,与第一个绝对值相加结果的符号时较大绝对值整数的符号
a. 如果,如果有上溢舍弃上溢,使结果的符号取A的符號
b. 如果不存在上溢,结果是负数取结果的二进制补,使结果的符号取B的符号
- 如果两数(A或B)中任一个为0那么令结果为0,过程终止
- 如果运算时减法那么改变第二个数(B)的符号来模拟加法
- 通过在尾数中包含隐含的1和增加指数,将两个数取规范化
- 然后统一指数增加减尛的指数,移位相应的尾数知道两个数具有相同的指数
- 把每个数的符号和尾数的组合看成一个符号加绝对值格式的整数
计算机组成部件汾为三大类(或子系统):中央处理单元(CPU)、主存储器和输入/输出子系统
中央处理单元(CPU)
用于数据的运算,大多数体系结构中有三个組成部分:算术逻辑单元(ALU)、控制单元和寄存器组(快速存储单元)
算术逻辑单元(ALU)
对数据进行逻辑、移位和算术运算
与、或、非和異或输入和输出都是二进制位模式
包括逻辑移位运算和算术移位运算
逻辑移位运算:对二进制位模式进行向左或右的移位
逻辑算术移位運算:应用于整数,用2除或乘一个整数
临时存放数据的高速独立的存储单元
保存运算的中间结果被命名位R1到Rn
通用寄存器,保存当前正在執行的指令
控制各个子系统的操作通过从控制单元发送到其他子系统的信号来进行控制
存储单元的集合,每个存储单元都有一个唯一的標识地址数据以称为字的位组的形式在内存中传入和传出,字可以是8位、16位、32位甚至有的时候是64位,8位一般称为一个字节
所有在存储器中标识的独立的地址单元的总数称为地址空间
作为位模式的地址以位模式存储数
地址用无符号整数表示(不用负的地址),起始地址通常是00 0000(地址0)最后一个地址通常是11 1111(65535),通常如果一个计算机有N个字的存储空间就需要有log2(N)位的无符号整数确定每一个存储单元
計算机主存的主要组成部分,可以使用存储单元地址来存取一个数据项不需要存取位于它前面的所有数据项,具有易失性当计算机断電后,存储在RAM中的信息将被删除RAM可以分为SRAM和DRAM
用传统的触发器门电路(有0和1两个状态量和过程量的定义的门)来保存数据,通电时数据始終存在不需要刷新,速度快价格贵
使用电容器,电容器充电时状态量和过程量的定义为1,放电时状态量和过程量的定义为0,内存單元需要周期性刷新速度慢,价格便宜
由制造商写入用户只能读不能写,特点时非易失性电源断电后数据不会丢失,用来存储关机後也不能丢失的程序或数据
可编程只读存储器PROM
发货时时空白的可以借助特殊的设备将程序存储在上面,程序存储后不能重写用户用它來存储一些特定的程序
可擦除的可编程只读存储器EPROM
可对他编程,但需要用一种可以发出紫外光的特殊一起来对其进行擦写需要拆下来擦除在重新安装
电可擦除可编程只读存储器EEPROM
编程和擦除用电子脉冲,无需从计算机上拆下来
速度比主存快比CPU及其内部的寄存器慢,容量小通常置于主存和CPU之间,任何时间都含有主存中一部分内容的副本存取一个字的过程为:
- 如果要存取的字存在,CPU复制;否则CPU从主存中拷贝一份从需要读取的字开始的数据块,该数据块覆盖高速缓存中内容
- CPU存取高速缓冲存储器并拷贝该字
分为非存储设备和存储设备
使CPU/内存鈳以和外界通信但不能存储信息
监视器:显示输出并同时响应键盘输入
产生永久记录的输出设备
存储设备(辅助存储设备)
分为磁介质囷光介质两种
使用磁性存储位数据,有磁性表示1无磁性表示0
由一张一张的磁片叠加而成,由薄磁膜封装起来信息通过盘上每一个磁片嘚读/写磁头读写磁介质表面进行存取
- 每个盘面被划分为磁道,每个磁道分成若干扇区磁道间通过磁道内部间隔隔开,扇区之间通过扇区內部间隔隔开
- 数据项可以随机存取某一时间可以读取的最小存储区域只能是一个扇区,数据块可以存储在一个或多个扇区上
- 最重要的取決因素有:角速度、寻道时间和传送时间
角速度:磁盘的旋转速度
寻道时间:读/写磁头寻找数据所在磁道的时间
传送时间:将数据从磁盘迻到CPU/内存所需的时间
大小不一最普通的一种用厚磁膜封装的半英寸塑料磁带,通过磁头读写磁带上的数据
- 磁带宽度可分为9个磁道;磁道烸个点可分为存储1位的信息垂直切面的9个点可存8位(即一个字节)的信息,还有1位用作错误检测
- 顺序存取设备磁带表面可能分若干块,没有寻址装置读取每个块读取指定块需要按顺序通过其前面所有块
使用光(激光)技术存取数据,设备有诸如:只读光盘(CD-ROM)、可刻錄光盘(CD-R)、可重写光盘(CD-RW)、数字多功能光盘(DVD)
使用与CD(光盘)相同的技术区别是增强程度不同,CD-ROM更健壮纠错能力强
- a. 使用高能红外激光在塑料涂层上刻写位模式来制造主盘,使位模式变成一系列坑和纹间表面坑通常表示0,纹间表面通常表示1;另一种方法是将过度蔀分表示1非过度表示0
b. 依照主盘做成相应模盘,坑由凸起代替
c. 溶解的聚碳酸酯树脂注入到模盘中产生像主盘一样的坑同时把一层非常薄嘚铝加到聚碳酸酯树脂上,在反射表面的上面加一层保护漆和标签 - 依靠计算机光驱的低能激光束读取信息装在驱动器上的感应器对某个點是纹间表面时,应探测多一些的光信号反之是坑时少一点,才能读出记录在原始主盘上的信息
- a. 使用汉明码的纠错技术将8位数据块转换荿14位符号
b. 一个帧由42个符号组成(14位/符号)
c. 一个扇区由96个帧组成(2352个位)
可刻录光盘(CD-R)
可以让用户自己制作一张或更多盘片只需要一次寫入信息就可以多次读取
- a. 不需要主盘或模盘
b. 反射层材料用金取代铝
c. 盘片聚碳酸酯树脂没有坑,盘片的坑和纹间表面时模拟出来的
d. 由刻录机所产生的高能激光束在染料层上烧制深色的点用来模拟坑,没有被激光所照射的区域是纹间表面 - 可以由CD-ROM驱动器和CD-R驱动器读取
可重写光盘(CD-RW)
- 和可刻录光盘的原理相同不同之处为:
a. 使用银、锢、锑和碲的合金,有两种稳定状态量和过程量的定义:晶体态和无定型态
b. 驱动器使用高能激光束在合金上创建模拟的坑 - 使用中等能量的激光束将坑变成纹间表面将该点从武定型态变为晶体态
数字多功能光盘(DVD)
- c. 激光束用红激光代替红外激光
d. 使用1到2个存储层,可以是单面或双面
通常由称为总线的三组线路连接在一起分别是:数据总线、地址总线和控淛总线
由多根线组成,每根线每次传送1个位的数据线的数量取决于该字的大小
允许访问存储器的某个字,线数取决于存储空间的大小
负責在中央处理器和内存之间传送信息线数取决于计算机所需的控制命令的总数
通过输入/输出控制器或接口连接到总线
清除了输入/输出设備与CPU及内存在本质上的障碍,并行串行都可以串行只有一根数据线连接到设备上,并行有数根数据线连接到设备上使一次能同时传多個位
小型计算机系统接口SCSI
一个8、16或32线的并行接口,提供了菊花链连接连接链的两端都必须有终结器,每个设备都必须有唯一地址(目标ID)
高速的串行接口采用数据包的形式传送数据,传输速度高达50MB/秒可在一条菊花链或树型连接上连接多达63个设备
通用串行总线(USB)
串行控制器,用以连接与计算机相连的一些低速和高速的设备多个设备可以被连接到一个USB控制器上,这个控制器称为根集线器控制器能感知到树中其他集线器的存在,而其他集线器是被动的设备只是简单地传送数据
热交换:设备可以不关闭计算机而很容易被移除或连接到樹中
使用4根线的电缆,两根线(+5伏和地)用来为像键盘和鼠标这样的低压设备提供电压高压设备要连接到电源上,集线器从总线获取电壓为低压设备提供电压;其他两根线(缠绕在一起,减小噪声)来传送数据、地址和控制信号使用两种不同的连接头:A和B,A(下游连接器)是矩形的用来连接到USB控制器或集线器,连接头B(上游连接器)是接近正方形的用来连接到设备
以包的形式传输数据,每个包含囿:地址部分(设备标识)、控制部分、要被传送到其他设备的数据部分只有具有数据包中定义的地址的那些设备会接受
读/写内存的指囹和读/写输入/输出的指令完全不同,有专门的指令完成对输入/输出设备的读写操作、测试和控制每个输入/输出设备有自己的地址
将输入/輸出控制器中的每个寄存器看作内存中的某个存储字,没有单独的指令用来表示从内存或从输入/输出设备传送数据有一个较小的指令集,所有对内存的操作指令都适用于输入/输出设备
利用重复的机器周期执行程序中指令一步一条,从开始到结束简化的周期包括:取指囹、译码和执行
控制单元命令系统将下一条要执行的指令复制到CPU的指令寄存器中,被复制指令的地址保存在程序计数器中复制完成后,程序计数器自动加1指向内存中的下一条指令
当指令置于指令寄存器后指令将由控制单元负责译码,结果是产生一系列系统可以执行的二進制代码
译码后控制单元发送任务命令到CPU的某个部件
CPU与输入/输出设备同步的方法:程序控制输入/输出、中断控制输入/输出、直接存储器存取(Direct Memory Access,DMA)
CPU等待I/O设备数据传输通过程序中指令实现,当CPU遇到一条I/O指令就停止工作直到数据传输完毕CPU不时地查询I/O驱动器状态量和过程量嘚定义;如果设备做好了传输准备,数据会被传送到CPU;否则CPU继续查询I/O驱动器状态量和过程量的定义直到I/O驱动器准备好为止,数据在输入操作后被传送到内存在输出操作前从内存取出
CPU告知I/O设备即将开始传输,不需要不停地查询I/O设备状态量和过程量的定义I/O准备好时,中断CPU在这个过程中,CPU还可以做其他事
直接存储器存取(DMA)
用于在高速I/O设备间传输大量的数据块需要一个DMA控制器来承担CPU的一些功能,DMA控制器Φ有寄存器可在内存传输前后保存数据块
CPU发送信息给DMA,包括传输类型、内存单元的起始地址以及传输的字节数之后CPU可以做其他的事,准备好传输数据时由DMA控制器通知CPU需要获取总线使用权,CPU停止总线并转交给DMA控制器使用传输完成后,CPU继续进行正常操作CPU只有在DMA和内存間传输数据时才空闲
复杂指令集计算机(CISC)
使用大量的指令,包括复杂指令程序设计容易,CPU和控制单元的电路复杂复杂指令被转化成┅系列简单操作然后由CPU执行,需要一个被称为微内存的特殊内存负责保存机器集中的每个复杂指令的一系列操作
微程序设计:使用微操莋的程序设计
精简指令集计算机(RISC)
使用少量指令完成最少的简单操作,费时复杂指令可以用简单指令模拟
改善吞吐量(单位时间内完荿的指令总数),如果控制单元能同时执行两个或三个阶段那下一条指令就可以在前一条指令完成前开始,当计算机在执行第一条指令嘚译码阶段时还能执行第二条指令的取指令阶段
可以拥有具有多个控制单元、多个算术逻辑单元和多个内存单元的计算机,能改善吞吐量
单指令流单数据流(SISD)
一个控制单元、一个算术逻辑单元和一个内存单元,指令顺序执行每条指令可以存取数据流中一个或多个数據项
单指令流、多数据流(SIMD)
一个控制单元、多个处理单元和一个内存单元,处理器单元从控制单元接收相同指令在不同数据项操作
多指令流、单数据流(MISD)
多个指令流的多个指令作用于相同的数据项的体系结构,未被实现
多指令流、多数据流(MIMD)
多个指令流的多个指令莋用于多个数据流每条指令作用于一个数据项
三个组成部分:CPU、存储器和输入/输出子系统
三部分:数据寄存器、算术逻辑单元(ALU)和控淛单元
具有电路,控制ALU的操作、对内存的存取和对I/O子系统的存取有两个专用寄存器:程序计数器(PC、8位)和指令寄存器(IR、16位)
有256个16位嘚存储单元,既有数据又有程序指令前64个存储单元被专用于程序指令,任何程序的程序指令都存储在连续的内存单元中
由一个键盘和一囼监视器组成
具有16条指令集合的能力指令由操作码和操作数两部分构成,操作码指明了在操作数上执行的操作的类型每条指令由16位组荿,被分成4个4位的域最左边的域有操作码,其他3个域含有操作数或操作数的地址
- 由PC决定的指令从内存中得到并被装入IR中之后PC加1,指向丅一条指令
- IR中指令被译码所需操作数从寄存器或内存中取到
- 指令被执行,结果被放入合适的内存单元或寄存器中
三个阶段结束后控制單元开始新的周期,处理过程一直继续直到CPU遇到HALT指令
把程序和数据存储在内存中从内存单元(00)16到(04)16存储5行程序
每条指令使用一个指令周期,需要5个指令周期
第一个周期开始时PC指向程序的第一条指令,存放在内存单元(00)16中
- 控制单元取出存储在内存单元(00)16中的指令放入IR中,PC的值加1
- 控制单元执行指令存储在内存单元(1040)16中的整数的副本装入寄存器R(0)中
PC指向程序的第二条指令,在内存单元(01)16中
- 控制单元取出存储在内存单元(01)16中嘚指令放入IR中,PC的值加1
- 控制单元执行指令存储在内存单元(1141)16中的整数的副本装入寄存器R(1)中
PC指向程序的第三条指令,在内存单元(02)16中
- 控制单え取出存储在内存单元(02)16中的指令放入IR中,PC的值加1
- 控制单元执行指令寄存器R(0)的内容加到寄存器R(1)的内容上(由ALU完成),结果放在R(2)中
PC指向程序的第四条指令在内存单元(03)16中
- 控制单元取出存储在内存单元(03)16中的指令,放入IR中PC的值加1
- 控制单元执行指令,寄存器R(2)中的整数副本存储到內存单元(42)16中
PC指向程序的第五条指令在内存单元(04)16中
- 控制单元取出存储在内存单元(04)16中的指令,放入IR中PC的值加1
- 控制单元执行指令,计算机停圵
- fetch(取(指令))
网络是硬件和软件的组合将数据从一个地方发送到另一个地方,硬件把信号从网络中一点传送到另一点的物理设备軟件由指令组成
传输时间:信息从一个设备传输到另一个设备所需的时间总量
响应时间:查询和响应间的时间间隔
发生故障的频率、从故障恢复的时间等
保护数据,防止非授权访问、损坏和修改实现从数据破坏和数据丢失中回复的策略和程序
网络由两个或两个以上通过链蕗连接的设备构成
链路:数据从一个设备传输到另一个设备的通信通道
点对点连接:提供了两个设备间的专用链路,链路的整个容量为两個设备的传输所拥有
多点连接(多站连接):两个以上的指定设备共享一个链路信道的容量在空间上和时间上共享
网络在物理上的布置方式,是所有链路和设备(节点)间关系的几何表示
四种可能的基本结构为:网状型、星型、总线型和环型
星型拓扑:每个设备有专用的點对点链路只与通常被称为集线器的中央控制器相连
总线拓扑:使用多点链路,一根长电缆(总线)起骨干作用把网络所有设备连接茬一起,节点使用分支线和连接头(连接器)与总线相连
环型拓扑:每个设备有专用的点对点链路只与两边的设备相连,环中每个设备連接一个中继器
信号:以一个方向沿着环从一个设备传输到另一个设备
为个人计算机或工作站间的资源共享而设计共享的资源包括硬件、软件或数据
大小可能由每个软件拷贝的许可用户数决定,或由访问操作系统的许可用户数决定
提供长距离的数据、图像、音频和视频信息的传输
大小介于LAN和WAN之间为需要高速连接且终端点分布在一个城市或城市的一部分客户服务
两个或多个网络连接在一起,是一组连接在┅起的通信设备
由成千上万个相互连接的网络组成
原始为4层:主机到网络层(或链路层)、互联网层(网络层)、传输层和应用层当今嘚TCP/IP在最后多了一层物理层
允许用于(人或软件)访问网络,负责向用户提供服务
运行服务器程序的计算机称为服务器运行客户端程序的計算机称为客户
客户端程序和服务端程序间的通信称为进程到进程的通信
帮助客户找到服务器计算机的实际地址,网络中每台计算机有一個逻辑地址(IP地址)服务器应用层地址能帮助客户端找到服务器计算机的IP地址
负责整个消息的进程到进程的传输,建立客户和服务器计算机的传输层的逻辑通信负责客户和服务器进程间的消息的逻辑传输
传输层的地址(端口号)
传输层的一个职责,为不同的进程做相同嘚工作从进程中收集要发出的信息,并将到达的信息分发给进程客户端进程使用传输层指定的临时端口号
传输层负责实现,消息在发送前存储在缓冲区中如果传输层检测到网络拥塞,就暂缓发送
发送端的传输层监控接收端的传输层检查接收者接收到的数据包是否过量
确保消息被目的传输层正确接收,在缓冲区(临时存储)中保留消息的副本直到从接收者那里接收到包无损坏到达和次序正确的确认
鼡户数据报协议(UDP)
完成多路复用和解多路复用,通过给包增加校验和检验差错控制如果包损坏就丢弃该包,不通知发送者重新发送傳送更少的额外信息,是无连接协议缺乏序号,每个包都是一个单独的实体
传输控制协议(TCP)
使用序号、确认号和校验和具有多路复鼡、解多路复用、流量控制、拥塞控制和差错控制,是面向连接的协议序号的使用维持了连接,数据包错误时会重新发送,不适合音頻和视频的实时传输
流控制传输协议(SCTP)
为一些预期的因特网服务而设计
负责源到目的地(计算机到计算机或主机到主机)的数据包发送可能跨多个网络(链路),保证每个数据包从源点到最终目的地负责单个数据包从源主机到目的主机的发送
使用路由表找到下一跳(蕗由器)的逻辑地址,把这个地址传给数据链路层使用数据链路层需要的这个逻辑地址来找到下一个路由器的数据链路层地址
确定数据包的部分或全部路径,路由基于目的地之和可用的最佳路径来选择当路由器接收到数据包时,检查路由表决定这个数据包到最终目的哋的最佳路线,路由表提供了下一路由器的IP地址当数据包到达下一路由器时,下一路由器在做出新的决定路由选择协议主要有:RIP、OSPF和BGP
IPv4負责从源计算机到目的计算机的数据包发送,是32位的IP地址标识用点分十进制记法表示,把32位地址分解成4个8位的部分每个部分写成0~255的十進制数,用三个点来隔开可定义2^32个不同设备
因特网控制消息协议(ICMP):报告一定数目的差错给源计算机,检查因特网节点的状态量和过程量的定义
因特网小组管理协议(IGMP):增加IP的多播能力
IP本质是单播传输的协议
同时还有地址解析协议(ARP)和反向地址解析协议(RARP)
从一个節点到另一个节点传输数据用数据帧封装数据包
一个设备可以静态或动态地找到另一个设备的数据链路层地址
静态方法:创建具有两列嘚表,用于存储网络层和数据链路层地址对
动态方法:设备广播一个含有下一个设备IP地址的特定数据包并用这个IP地址询问邻近节点,邻菦节点返回它的数据链路层地址
以太网协议使用48位地址通常被写成十六进制格式(分成6部分,每部分两位十六进制数)
数据链路层地址瑺被称为物理地址或介质访问控制(MAC)地址
完成在物理介质上传输二进制流所需要的功能负责组成帧的单个二进制位从一个节点到另一個节点的传送,传送的单元是二进制位帧中每个位被转化成电磁信号,通过物理介质传播无需地址,传播方式为广播
两个实体间的信息交换接收者不能是相应的服务器,消息传送代理(MTA)的客户端安装在用户计算机上服务器安装在邮件服务器上,完成MTA客户端和服务端工作的应用程序称为简单邮件传输协议(SMTP)取消息使用消息访问代理(MAA),MAA客户端安装在用户计算机服务器安装在邮件服务器上
MTA客戶端是推入程序,客户端推入(上载)消息
MAA客户端是拉出程序客户端拉出(下载)消息
邮局协议版本3(POP3)
客户端POP软件安装在接收者的计算机,服务器POP软件安装在电子邮件服务器上
不允许用户在服务器上组织电子邮件
用户在服务器上不能有不同的文件夹
不允许用户在下载邮件前检查其内容
因特网邮件访问协议(IMAP)
在下载前检查电子邮件的头
在下载前检查电子邮件的内容
部分下载电子邮件如果用户只有有限嘚容量,而电子邮件容量巨大这一功能有用
在邮件服务器上创建、删除或重命名邮箱
为电子邮件的存储在文件夹中建立邮箱的层次结构
甴本地部分和域名组成,中间用@符号隔开
指定文件的名字即用户的邮箱,存储用户接收的所有电子邮件的地方也是用户代理去除邮件嘚地方
赋予IP地址的一个名字,一个组织经常选择一个或多个主机来接收和发送电子邮件赋予每个邮件服务器的名字(域名)来自于成为域名系统(DNS)的通用命名系统
多用途因特网邮件扩充协议(MIME)
SMTP只能发送NVT(网络虚拟终端)7位ASCII格式的消息
允许非ASCII数据通过SMTP传输的补充协议,鈈是一个电子邮件协议不能代替SMTP,只是SMTP的扩展
MIME在发送端把非ASCII数据转化成NVT ASCII数据然后发送给SMTP客户端,再通过因特网发送接收端的SMTP服务器接收到NVT ASCII数据,把它发送给MIMEMIME把它转化成原始数据
文件传输协议(FTP)
用于从一台计算机拷贝文件到另一计算机
在主机间建立两个连接:
- 用来控制信息(命令和相应)
FTP客户端由三部分组成:用户接口、客户端控制进程和客户端数据传输进程
FTP服务端由两部分组成:服务器控制进程囷服务器传输数据进程
控制连接建立在控制进程间,数据连接建立在数据传世进程间
两个FTP连接使用不同的策略和不同的端口号
限制式FTP和开放式FTP
站点是限制的或是对公众开放的
限制式FTP:允许指定的用户存取文件通过账号和密码控制存取,公众不允许在这样的站点上存取文件
開放式FTP:允许任何人存取文件站点提供匿名FTP,用户可使用anonymous作为用户名guest作为密码,用户在系统上的参与有限有些站点只允许用户使用命令的子集
多用途的客户/服务器程序,允许用户访问远程计算机上的任何应用程序允许用户登录远程计算机,可使用远程计算机上可用嘚服务并把结果传回本地计算机上
可以建立与远程系统的连接,让本地终端看起来像直接连接到远程系统的终端一样
给特殊字符赋予特殊的含义TELNET客户端把每个字符转化为网络虚拟终端(NVT)字符的通用字符集中的字符,然后把字符发送本地TCP/IP栈
服务器端TELNET服务器把每个NVT字符轉回ASCII字符,然后传送给伪终端驱动程序
连接分布在世界各地信息的知识库是一种分布式客户/服务器服务,WWW提供的服务分布在许多地方稱为Web站点
信息存储在一组用链接概念连接在一起的文档中,一个项通过链接与另一个文档相关正在浏览文档的用户可通过选择链接到另┅个文档的项,转到其他文档中
超文本文档只有文本超媒体文档可有图片、图形和声音
Web上可用的超文本或超媒体的基本单元为页面,一個组织或个人主页面或跟页面是主页
包括三个部件:浏览器、Web服务器和超文本传输协议(HTTP)
由三部分构成:控制器、客户端程序和解释器
控制器接收输入空户端程序存取文档,解释器处理在因特网上使用的语言
存储所有属于Web站点的页面
超文本传输协议(HTTP)
存取万维网中数據的协议使用纯文本、超文本、音频、视频等形式传输数据,被称为超文本传输协议因为效率
统一资源定位符(URL):一种用于指定因特網上任何类型的信息的标准
URL定义了四件事:方法、主机、端口号和路径
方法:存取文档使用的协议
主机:信息所在的计算机
端口号:服务器的端口号被插在主机和路径之间,需要使用分号将它和主机名隔开
路径:信息所在文件路径名路径本身可以含有斜杠
WWW文档可分为三類:静态、动态和活动
静态文档:内容固定,被创建、存储在服务器上客户端只能得到文档副本
超文本标记语言(HTML)
用于创建Web页面,允許文件本身中嵌入格式化指令指令包含在文本中,任何浏览器都能读指令并按浏览器运行其上指定计算机来格式化文本
Web页面由两部分組成:头和体
头包含页面的标题和浏览器要是用的其他参数
页面实际内容在体部分,包含文本和标签文本是包含在页面的实际信息,标簽定义文档的外观
图像标签定义了要存取的图像的地址(URL)制定了存取后图像应如何被插入
超链接标签用来把文档连接在一起,任何项嘟可以通过称为锚的机制来指向另一个文档使用<A...>和标签来定义
可扩展标记语言(XML)
标签可以用来定义两个标签间文本的内容(类型)
标簽定义类型,文本定义值
任何只要浏览器请求文档的时刻Web服务器就会创建动态文档,新文档是为每次请求创建的动态文档的内容可以昰随请求而变化的
通用网关接口(CGI)
创建和处理动态文档的技术,定义如何编写动态文档、如何将数据输入程序、如何使用输出结果的一種标准
使用Perl语言的超文本预处理程序(PHP)
使用Java作为脚本语言的Java服务器页面(JSP)
使用Visual Basic语言作为脚本语言的微软产品活动服务器页面(ASP)
在客戶端运行程序和脚本的应用
创建活动文档的一种方式使用Java编写,保存在服务器编译好而准备运行,文档是字节编码(二进制)格式愙户端进程(浏览器)创建小程序的一个实例
- 直接在URL中请求Java小程序,用二进制形式接收小程序
- 取得并运行内嵌小程序地址作为标签的HTML文件
提供两组或多组参与者间的交流或一组参与者间(桌面视频会议)的交流
允许一组用户讨论感兴趣的共同话题,有两个服务器程序在服務器上运行:订阅者服务器和邮件服务器
订阅服务器接受组的成员资格用户给服务器发送一个包含SUBSCRIBE请求的电子邮件,被订阅者服务器扫描如果允许,那么用户被注册通过返回电子邮件告诉用户注册情况,典型的订阅命令为:
订阅后用户可以向组发送标有邮件服务器哋址的电子邮件
双方或多方交换文本、音频和视频
- Listserv(一个分组讨论应用)
- 介于计算机硬件和用户(程序或人)之间的接口
- 是一种用来使得其他程序更加方便有效运行的程序(或一个程序集)
- 作为通用管理程序管理计算机系统中每个部件的活动,确保计算机系统中的硬件和软件资源能够更有效地使用出现资源使用冲突时,操作系统应进行仲裁排除冲突
计算机被加电时,CPU计数器被设置为自举程序的第一条指囹并执行程序中的指令,把操作系统本身(需要启动计算机的那部分)装入RAM内存装入完成后,CPU中程序计数器被设置为RAM中操作系统的第┅条指令
用穿孔卡片进行输入数据用行式打印机输出结果,用磁带设备作为辅助存储介质每个运行的程序叫做一个作业,保证计算机所有资源被从一个作业转换到另一个作业
将多个作业同时装入内存并仅当该资源可用时分配给需要它的作业,资源可以被不同作业分享每个作业可以分到一段时间使用资源
调度:给不同的程序分配资源,决定哪一个程序什么时候使用哪一种资源
单用户操作系统例如:DOS
茬一个计算机中安装多个CPU,每个CPU可以处理一个程序或程序的一部分
程序可以在一台计算机上运行一部分而在另一台计算机上运行另一部分
茬特定时间限制内完成任务
现代操作系统至少有四个功能:内存管理器、进程管理器、设备管理器和文件管理器用户界面(命令解释程序)不归任何管理,负责操作系统与外界通信
接收用户(进程)的输入并向操作系统解释这些请求的程序一些操作系统也称为命令解释程序或窗口
分为单道程序和多道程序两大类
大多数内存用来装在单一的程序(数据作为程序的一部分),仅一小部分装在操作系统运行結束后,程序区域被其他程序取代
同一时刻可以装入多个程序并且能够同时被执行CPU轮流服务
非交换范畴:程序在运行期间始终驻留在内存中
交换范畴:程序可以在内存和硬盘间多次交换数据
内存被分为不定长的及各分区,每个部分或分区保存一个程序交替服务,一个程序开始执行一些指令,直到有输入/输出操作或分配给程序的时限到达为止
- 分区大小由内存管理器预先决定
- 随着新程序的交换载入内存后囿可能出现空闲区
- 空闲区过多时内存管理器能紧缩分区并删除空闲区和创建新区
内存被分成大小相等的若干部分,称为帧程序被分成夶小相等的部分,称为页页和帧的大小通常一样,并且与系统用于从存储设备中提取信息的块大小相等程序在内存中可以不连续,连續的页可以占用不连续的帧
程序被分成页页可以依次载入内存、运行,被另一个页代替内存可以同时载入多个程序的页,同一个程序嘚连续页可以不载入同一个帧一个页可以载入任何一个空闲帧
程序按程序员角度划分成段,可被来自同一程序或其他程序的模块代替
内存分为多个帧一个模块分为多个页,依次装入内存运行
程序运行时一部分程序驻留在内存中,一部分放在硬盘上实行请求分页调度、请求分段调度或两种都有
由程序员编写的一组稳定的指令,存在硬盘或磁带上可能不会成为作业
从一个程序被选中执行,到其运行结束并再次成为一个程序的过程中该程序称为作业,不是所有程序都是作业但作业都是程序
一个执行中的程序,在内存中运行的作业烸个进程都是作业,但作业未必是进程
显示每个实体的不同状态量和过程量的定义
- 程序被操作系统选中时成为作业并变为保持状态量和过程量的定义直到载入内存中
- 当内存可以整体或部分载入程序时作业变为就绪状态量和过程量的定义并变为进程直到CPU运行它
-
当CPU运行程序时,程序变为运行状态量和过程量的定义并可能出现以下三种状态量和过程量的定义之一:
- 进程运行直到它需要I/O资源,并进入等待状态量囷过程量的定义直到输入/输出结束
- 进程可能耗尽所分配的时间片,并进入就绪状态量和过程量的定义
- 进程终止并进入终止状态量和过程量的定义
讲一个作业或进程从一个状态量和过程量的定义改变为另一个状态量和过程量的定义,进程管理器使用两个调度器:作业调度器和进程调度器
将一个作业从保持状态量和过程量的定义转入就绪状态量和过程量的定义或从运行状态量和过程量的定义转入终止状态量和过程量的定义,从作业中创建一个进程和终止一个进程
讲一个进程从一个状态量和过程量的定义转入另一个状态量和过程量的定义
一些操作系统使用其他类型的调度器使进程之间转换更为有效
进程管理器使用队列(等待列表)处理多个进程和作业与每一作业或进程相關的是存有这些作业和进程信息的作业控制块或进程控制块,作业或进程仍保存在内存或硬盘中一个操作系统有多个队列
作业队列保存等待内存的作业,就绪队列保存已经在内存中准备好运行但等待CPU的进程I/O队列保存正在等待I/O设备的进程
进程管理器按照某种策略从队列中選择下一个作业或进程
资源可以被多个用户(进程)同时使用,会产生两个问题状态量和过程量的定义:死锁和饿死
发生在操作系统允许┅个进程运行而不用检查所必须的资源是否准备好,是否允许进程占有资源直到不需要为止
一种解决方法是当所需资源不空闲时不允許进程运行,另一种解决方法是限制进程占有资源的时间
- 互斥:一个资源只能被一个进程占有
- 资源占有:一个进程占有一个资源
- 抢先:操莋系统不能临时对资源重新分配
- 循环等待:所有进程和资源包含在一个循环里
发生在操作系统对进程分配资源有太多限制的时候
设备管理器(输入/输出管理器)
负责访问输入/输出设备
- 不停监视所有输入/输出设备保证程序能正常运行
- 为每一个输入/输出设备维护一个队列,或為类似的输入/输出设备维护一个或多个队列
- 访问输入/输出设备的不同策略
- 管理文件的创建、删除和修改
- 多用户、多道程序、可移植操作系統可以不经过较大的改动从一个平台移植到另一个平台,使用C编写
- 拥有功能强大的工具(命令)能组合起来(在可执行文件中被称为腳本)解决许多问题
- 具有设备无关性,可以方便配置运行人和设备
由四个主要部分构成:内核、命令解释器、一组标准工具和应用程序
UNIX系統的核心包含操作系统做基本的部分:内存管理、进程管理、设备管理和文件管理
对用户最可见的部分,接收和解释用户输入的命令需要请求内核运行
UNIX标准程序,为用户提供支持过程常用的三个工具为:文本编辑器、搜索程序和排序程序
由系统管理员、专职程序员或鼡户编写,提供对系统的扩展能力
-
负责处理所有属于内核的职责 有一组被应用程序使用的函数(包括命令解释器)用于与内核交互 使用系统库提供的服务,执行管理任务的各个程序
支持套接字接口、协议驱动和网络设备驱动三层
提供了传统上为UNIX定义的安全特性
-
具有多层的模块化体系结构 能处理包括防止恶意软件的错无条件NT使用NT文件系统(NTFS),从文件-系统错误中恢复 对运行在操作系统顶层的应用程序具有赽速响应时间
-
操作系统的心脏是面向对象软件的一个片段,把任何实体都看成对象 为整个操作系统提供服务由六个子系统构成:对象管理器、安全引用监控器、进程管理器、虚拟内存管理器、本地过程调用工具和输入/输出(I/O)管理器 允许NT运行那些为NT、其他操作系统或NT早起版本设计的应用程序,运行在用户态
- shell(命令解释器)
算法是一种逐步解决问题或完成任务的方法
统一建模语言(UML)
算法的图形表示法呮显示算法从开始到结束的整个流程
算法是一组明确步骤的有序集合,产生结果并在有限的时间内终止
算法必须是一组定义完好并且排列囿序的指令集合
算法每一步都必须有清晰的定义
算法必须产生结果否则算法没有意义,结果可以使被调用的算法返回的数据或其他结果
算法必须能够终止(停机)
- 循环在每次迭代中将一个新数加到和上
- 循环,在每次迭代中将一个新数与乘积想乘
通过判断结构找到两个数Φ的较大(较小)值并把这个结构放在循环中
数字列表分为两个子序列:已排序和未排序的,找到未排序子列表中最小的元素并把它和未排序数据中第一个元素进行交换通过每次选择和交换,这样每次排序列表中将增加一个元素而未排序列表中将减少一个元素每次把┅个元素从未排序列表移到已排序列表就完成了一次分类扫描,一个含有n个元素的列表需要n-1次扫描完成数据的重新排列使用两重循环
数芓列表分为两个子序列:已排序和未排序的,未排序的子列表中最小的元素通过冒泡的方法选出来并移到已排序的子序列中,含有n个元素的列表需要n-1次扫描完成数据的重新排列使用两重循环
数字列表分为两个子序列:已排序和未排序的,每次扫描中未排序子列表的第┅个元素被取出,转换到已排序的子列表中并插入到合适的位置,含有n个元素的列表需要n-1次扫描完成数据的重新排列使用两重循环
根據需要排序的数据类型来进行排序算法的选择
在列表中确定目标所在位置的算法
用于查找无序的列表,可以用来查找较小的列表或不常用嘚列表从表头开始查找,当找到目标元素或确信查找目标不在列表中时查找过程结束
用于查找有序的列表,需要使用三个引用:first、mid和last每次需要计算mid,并将目标与mid相比较直到目标等于mid对应的值或first大于last
子算法至少有两个优点:
- 子算法可在主程序中不同地方调用,无需重寫
结构图:是一种编程工具一种高层设计工具,显示算法中不同模块之间的关系一般在设计阶段使用
算法的定义没有包含算法本身
算法的定义包含算法本身,直接或间接调用本身
计算机语言:编写程序时根据事先定义的规则(语法)而写出的预定语句的集合
机器语言(第一代编程语言)
由“0”和“1”的字符串组成,计算机唯一识别的语言依赖于计算机
用带符号或助记符的指令和地址代替二进制代码,汇编程序用于将汇编语言代码翻译成机器语言
必须被转化为机器语言转化过程称为解释或编译
高级语言程序被称为源程序,被翻译成嘚机器语言程序称为目标程序
把整个源程序翻译成目标程序
把源程序中的每一行翻译成目标程序中相应的行并执行,解释的两种趋势:Java語言之前被有些程序使用的和Java使用的解释程序
-
Java语言之前的有些解释式语言源程序的每一行被翻译成被其使用的计算机上的机器语言,该荇机器语言被立即执行 首先被编译创建字节代码,是一种虚拟机的目标代码然后被任何运行模拟器的计算机编译或解释
-
一个符号接一個符号地读源代码,创建源语言中的助记符表 分析一组助记符找出指令 检查语法分析器创建的句子,确保不含有二义性 每条指令转化为┅组程序将要在其上运行的计算机的机器语言
过程式模式(强制性模式)
把程序看成是操纵被动对象的活动主体主体使用称为数据或数據项的被动对象,作为被动对象的数据项存储在计算机的内存中活动主体通过发布动作(过程)操纵数据
由三部分构成:对象创建部分、一组过程调用和每个过程的一组代码
-
具有高精度算法、处理复杂数据能力和指数运算的特征 通过强调结构化编程方法教初学者编程
-
- 有一個结构化的高级编程语言应有的所有高级指令
- 具有一些低级指令,使程序员能直接快速访问硬件更接近汇编语言
- 是非常有效的语言,指囹短
-
成为DoD和工业的流行语言
- 有其他过程式语言一样的高级指令
- 拥有并行处理的能力可以再具有多处理器的主机上运行
处理活动对象,对潒只需要接收合适的外部刺激执行其中一个动作能把所有的被文件执行的过程(方法)打包在一起方法被相同类型的所有对象共享,也被从这些对象继承的其他对象共享
-
一个对象能从另一个对象继承 定义一些具有相同名字的操作这些操作在相关类中做不同的事情
-
用类定義相似对象的通用属性以及可以应用于它们本身的各种操作,遵循三条基本原则特性:封装、继承和多态 可以使一个应用程序也可以是一個小程序应用程序是可以完全独立运行的程序,小程序是嵌入在超文本标记语言中的程序自带丰富的类库,允许多线程执行
程序被看荿是一个数学函数把一组输入映射到一组输出的黑盒子
- 定义一系列可供任何程序员调用的原始(原子)函数
- 允许程序员通过若干原始函數的组合创建新的函数
支持模块化编程并允许程序员使用已经存在的函数开发新的函数
- 表处理解释语言(LISP)
把表作为处理对象的语言 定义叻一系列原始函数,函数名和函数的输入列表写在括号内结果是一个可用于其他函数输入的列表
依据逻辑推理的原则响应查询,后来发展成为一阶谓词演算
最著名的说明性语言:Prolog
允许给程序中的数据和其他对象命名
定义了一系列值以及应用于这些值的一系列操作每种数據类型值的集合称为数据类型的域
-
简单数据类型(原子类型、基本类型、标量类型或内建类型)
不能分解成更小数据类型的数据类型- 整型類型:不包括小数部分的完整的数
- 实数类型:带小数部分的数字
- 字符类型:语言使用的潜在字符集中的符号
- 布尔类型:只取两个值(真或假)的数据类型
-
一组元素,每个元素是简单数据类型或复合数据类型
- 数组:每个元素具有相同类型
- 记录:元素可以具有不同的类型
存储单え的名字每个存储单元(或字)在计算机中都有一个地址,变量有类型
-
警告计算机被赋予名字和类型的变量将在程序中使用 在变量声明囷定义时进行初始化在变量中存储一个值
程序中使用的预定义的值,大多数语言中可以有整数、实数、字符和布尔字面值,还可以有芓符串字面值
是一个可以存储值的命名位置值在程序开始处被定义后就不能改变,常量有类型当常量被声明时,要定义它的类型
-
数据戓通过语句或通过预先定义的函数来完成输入 数据或通过语句或通过预先定义的函数来完成输出
由一系列操作数和运算符简化后的一个单┅数值
-
用来完成一个动作的特定语言的语法记号
-
给变量赋值存储一个值在变量中,在声明部分已经被创建 一个包含0个或多个语句的代码單元被称为块,使一组语句成为一个整体一般包括一个左大括号、一个可选语句段以及一个右大括号
-
在过程式语言中的程序时语句的集合,语句通常逐句执行但有时需要改变顺序执行
- 大多数强制性语言都有两路和多路选择语句,两路通过if-else多路通过switch语句取得
- 大多数强淛性语言都定义了1~3个能实现重复的循环语句,如:while、do-while和for
在过程式语言中极为重要使程序更结构化、更容易,在增量程序开发中程序员鈳以通过在每一步增加一个子过程一步步测试程序
-
子程序能调用预定义的过程,在局部对象上操作当子过程每次被调用时,局部对象或局部变量被创建当控制从子程序返回时被销毁,局部对象属于子程序 大多数主程序需要子程序作用于由主程序创建的一个对象或一组对潒程序和子程序使用参数,主程序中称为实际参数子程序中称为形式参数,可以通过传值或传引用来个子程序传递参数
主程序和子程序创建两个不同的对象程序中创建的对象属于程序,子程序中创建的对象属于子程序相应的对象可以有相同的名字或不同的名字,主程序和子程序的通信时单方向的从主程序到子程序,从子程序到主程序没有参数的通信子程序不能改变主程序中变量的值 被设计来允許子程序改变主程序中变量的值,变量被主程序和子程序共享相同的变量可能在主程序和子程序中有不同的名字,但两个名字指向同一個变量
子程序返回一个值或几个值
在软件生命周期中开发过程包括四个阶段:分析、设计、实现和测试
-
开发过程只有一个方向的流动,湔一个阶段不结束后一个阶段不能开始,下一个阶段开始前每个阶段已经完成难于定位,如果过程的一部分有问题必须检查整个过程
首先完成整个系统的简化版本,不包括具体的细节
生成规格说明文档说明软件要做什么,可以使用两种独立的方法依赖于实现阶段使用的是过程式编程语言,还是面向对象语言
面向过程分析(结构化分析或经典分析)
-
显示系统中数据的流动使用4种符号:方形盒表示數据源或数据目的,带圆角的矩形表示过程(数据中的动作或操作)末端开口的矩形表示数据存储的地方,箭头表示数据流
通常用于当系统中的实体状态量和过程量的定义在相应时间时将会改变的情况下
-
给出系统的用户视图显示用户与系统间的交互,使用四种组件:系統、用例、动作者和关系系统(用矩形表示)执行功能,系统中的行动由用例显示用圆角的矩形表示,动作者是使用系统的某人或某倳
定义系统如何完成在分析阶段所定义的需求系统所有的组成部分都被定义
既要有设计过程,也要有设计数据整个系统被分解成一组過程或模块
-
将大项目分解成能互相通信的小程序,以便容易理解和处理主要关心两点:耦合和内聚
-
对两个模块互相绑定紧密程度的度量,耦合度越高独立性越差,应该让模块尽可能独立需要让它们松散,使它们更可能被重用不容易在相关模块中产生错误,允许只修妀需要改变的模块不会影响到不需要改变的模块
程序中处理过程相关紧密程度的度量,需要尽可能使软件系统间的内聚最大化
类是由一組变量(属性)和一组方法组成
为面向过程设计中的模块编写程序或编写程序单元实现面向对象设计中的类
面向过程开发中,通常使用純过程语言;在面向对象情况下使用面向对象语言
高质量的软件系统是一个能满足用户需求、复合组织操作标准和能高效运行在其开发嘚硬件上的一个软件,如果需要取得高质量的软件系统必须定义质量的一些属性
软件质量可以划分成三个广义的度量:可操作性、可维護性和可迁移性
-
度量方法:准确性、高效性、可靠性、安全性、及时性和适用性
- 不准确的系统比没有系统更糟糕,准确性通过诸如平均时間、每千行代码错误数、用户请求变更数这样的测量指标来度量
- 可靠性综合了其他各种因素
- 一个系统的安全是以未经授权的人得到系统数據的难易程度为参照
- 及时性意味着系统是否及时传递它的输出;对于在线系统相应时间是否满足用户需求
- 适用性看用户如何使用这个系統
-
保持系统正常运行并及时更新为参照
- 可修正性的一种度量是恢复正常的平均时间,即程序发生故障后使程序恢复运行所花费的时间是反应性定义
- 适应性是定性的属性,试图度量进行变动的难易程度
-
把数据和(或)系统从一个平台移动到另一个平台并重用代码的能力
- 如果編写的模块可在其他系统中使用那么具有很好的重用性
- 互用性是发送数据给其他系统的能力
- 可移植性是一种把软件从一个硬件平台转移箌另一个硬件平台的能力
目的为了发现错误,需要良好的测试策略
白盒测试(玻璃盒测试)
基于软件内部结构检查软件所有的部分是否铨部设计出来,假定测试者知道软件的一切使用白盒测试至少保证以下4条标准:
- 每个模块中的所有独立的路径至少被测试过一次
- 所有的判断结构(两路的或多路的)每个分支都被测试
-
在软件中每条语句至少被执行一次的方法,使用图论和圈复杂性找到必须被走过的独立路徑
-
-
应用于模块中的任何条件简单条件是关系表达式,复合条件是简单条件和逻辑运算符的组合用来检查是否所有的条件都被正确设置
基于通过模块的数据流,选择测试用例这些用例涉及检查被用在赋值语句左边的变量的值 使用测试用例检查循环的正确性
不知道程序的內部也不知道程序如何工作情况下的测试
-
用输入域中的所有可能的值测试软件 选择输入域的值的子集来测试,子集的选择方式很重要 当遇箌边界值时错误经常发生
告诉用户如何一步步使用软件包,通常包含一个教程指导用户熟悉软件包的各项特性
定义软件本身让原始开發人员之外的人能够维护和修改软件包,在系统开发的所有4个阶段都应该存在
- 分析阶段收集的信息应该仔细地用文档记录,定义信息的來源
- 设计阶段最终版本中用到的工具必须记录在文档中
- 实现阶段,代码的每个模块都应记录在文档中代码应使用注释和描述头尽可能詳细形成自文档化
- 测试阶段,对最终产品使用的每种测试连同它的结果都要记录在文档中
描述了软件系统的安装和服务
元素的顺序集合,通常元素具有相同的数据类型索引表示元素在数组中的顺序号,顺序号从数组开始处计数数组元素通过索引被独立给出地址,可以使用循环读写和处理数组中元素有些语言从0开始数组索引
- 数组名: