计算机科学导论
第一章.绪论
1.1图灵机
数据存储在内存里(存储单元)。
阿兰 图灵在1937年提出的设想。
1.2 冯 诺伊曼计算机
数据和程序都存储在计算机存储器里。
4个子系统:存储器,算术逻辑单元(ALU),控制单元,输入/输出。
1.3计算机组成部分
计算机硬件,数据,计算机软件。
第二章.数字系统
数字系统(数码系统)定义了如何用独特的符号来表示一个数字。
2.1位置化数字系统
2,8,10,16进制。
2.1.1 进制(2,8,10,16)以及他们的互相转换
计算机存储正负数的方式不同
2.2非位置化数字系统
不用再计算机中
第三章.数据存储
计算机中使用“多媒体”来定义包含数字、文本、音频、图像、视频的信息
3.1数据类型
数据:数字,文本,音频,图像,视频。
位(bit)是存储在计算机中的最小单位;0或1。
位模式:为了表示数据的不同类型,多个位组成一个位模式,是一个序列,也称为位流。
长度为8的位模式称位1字节。
字:指代更长位模式,比如可以表示1个字 = 2字节 或 1个字 = 4字节 等等
3.2存储数字
存储整数
存储整数:使用定点表示法存储在内存中。
定点表示法:小数点固定再最右边,小数点是假定的,并不存储。
无符号表示法
无符号整数是只包括零和正数的非负整数。(能存0到2n-1个),可以提高存储效率。
符号加绝对值表示法
存储整数中并不常用。
最左位定义整数的符号。(0为正1为负)
能存-(2n-1 -1)到+(2n-1 -1)。
在符号加绝对值表示法中有正负两个0。
二进制补码表示法
最左位决定的符号。(0为正1为负)
最左位为1,存取补码(取反加1)。最左位为0,不操作。
用的最多(存储有符号整数)
存储实数
定点表示法
(带有很大整数部分或者小数部分的实数不应该用定点表示法)。
浮点表示法
组成:符号,位移量,定点数。
规范化:在小数点左边使用了唯一的非零数码。
第四章数据运算
数据上的运算可以分为三大类:算术运算,位移运算,逻辑运算。
4.1逻辑运算
0”代表逻辑“假”,“1”代表逻辑“真”,使用布尔代数的定义去操作二进制位
位层次上的逻辑运算:非,与,或,异或(相同输入得0,不同输入得1)。
模式层次上的逻辑运算:多位模式(n位模式),运算与位层次相同。
使指定的位复位:非,与,或,异或操作。用掩码,使其复位。
4.2移位运算
逻辑移位(运用于不带符号位的数的模式),
循环移位,
算术移位(假定模式运用于二进制补码格式表示的带符号位的整数)。左移*2,右移/2。
4.3算术运算
加减乘除适用于整数和浮点数。
第五章.计算机组成
计算机组成可以分为三大类(子系统):中央处理单元(CPU),主存储器,输入/输出子系统。
5.1中央处理单元
组成:算术逻辑单元(ALU),控制单元,寄存器。
5.1.1 算术逻辑单元(ALU)
对数据进行三大运算:算术运算,位移运算,逻辑运算。
逻辑运算:非,与,或,异或操作,输入输出都为二进制模式。
移位运算。
算术运算。
5.1.2寄存器
寄存器是用来存放临时数据的高速独立的存储单元。
数据寄存器:(R1~RN)表示。
指令寄存器: IR表示。
程序计算器:PC表示。
5.1.3控制单元
控制各个子系统的操作,控制是通过从控制单元到其他子系统的信号来进行。
5.2主存储器
它是存储单元的集合,每一个存储单元都有唯一的标识,称为地址。
存储器的类型:RAM,ROM.
5.2.1 RAM(随机存储器)
特点:易失性。计算机断电后存储在RAM上的信息将被删除。
静态RAM(SRAM)
动态RAM(DRAM)
5.2.2 ROM(只读存储器)
特点:非易失性。计算机断电后数据不会丢失。
5.2.3 存储器的层次结构
(塔尖)寄存器,高速缓冲存储器,主存(塔底)。
高速缓冲存储器:存取速度快于主存,慢于CPU的寄存器。容量较小,常置于CPU和主存之间。
5.3输入/输出子系统
非存储设备使得CPU/内存可与外界通信,但不能存储信息。(键盘,监视器,打印机)
存储设备(辅助存储设备):磁介质和光介质。
磁介质存储设备:磁盘,磁带。
光介质存储设备:CD-ROM,CD-R,CD-RW 光盘等。
5.3子系统的互联
5.3.1 CPU和存储器的连接
CPU和存储器之间通常由称位总线的三组线路连接:数据总线,地址总线,控制总线。
5.3.2 I/O设备的连接
输入/输出设备不能直接与连接在CPU和内存的总线相连。
输入/输出设备通过输入/输出控制器或接口的器件连接到总线上。每一个输入/输出设备都有一个特定的控制器。
控制器(接口):为了清除输入/输出设备与CPU以及内存本质上的障碍。
控制器(接口)类型:
SCSI(小型计算机系统接口):菊花链连接,连接链的两端都必须有终结器。
火线:一种高速串行接口,和SCSI相比,不需要终结器。
USB(通用串行总线):串行控制器,根集线器下可以是集线器也可以是设备。
5.3.4输入/输出设备的寻址
通常CPU使用相同的总线在主存和输入/输出设备之间读写数据,唯一不同的是指令。
有两种方法用来对输入/输出设备进行寻址:I/O独立寻址和I/O存储器映射寻址。
I/O独立寻址:例如Read 103读取内存数据,Input 103读取输入/输出设备中的数据。
I/O存储器映射寻址:输入/输出设备占用内存的地址。
5.4机器周期
CPU利用重复的机器周期来执行程序中的指令。
取指令,译码,执行。
简单计算机使用机器周期(取指令、译码和执行)
取指令阶段:其地址由PC决定的指令从内存中得到,装入IR中,然后PC加1,指向下一条指令
译码阶段:IR中的指令被译码,所需的操作数从寄存器或内存中取到执行阶段:指令被执行,结果被放入合适的内存单元或寄存器中
一旦第三个阶段结束,控制单元又开始新的机器周期,现在PC是指向下一条指令的,处理过程一直继续,直到CPU遇到HALT指令。
第六章.计算机网络和因特网
6.1 网络
LAN(局域网):私有网络。一台主机向另一台主机发送的数据包中包括源主机和目标主机的地址。
WAN(广域网):点对点广域网(一对一)和交换广域网(通过交换机)(几个点对点广域网通过开关连接产生的结合体)。
局域网将主机相连,广域网则将交换机、路由器或调制调节器之类的连接设备互连
互联网:两个或多个网络互相连接时,它们构成一个互联网(网际网)。
因特网:成千上万个互联网络组成因特网。骨干网,ISP(因特网服务供应商)(供应商网络),网络客户,由内向外。
6.1.2协议分层
协议分层:简单的通信可能只需要一条简单的协议,当通信变得复杂,可能需要将任务分配到不同的协议层,那么在每一个协议层都需要一个协议
协议定义了发送器,接送器以及所有中间这边必须遵守以保证有效地通信的规则。
协议分层可以将大任务简化成几个更小、更简单的任务
优点:可以将服务和实施分开,每层使用更低层的服务,并向较高一层提供服务
6.1.3 TCP/IP协议族
TCP/IP(传输控制协议/网际协议)。
TCP/IP协议族是一个分层协议,由特定功能的交互式模块组成,层次这个术语说明每一个高层协议都基于一个或多个底层协议提供服务
分层架构:应用,传输,网络,数据链路,物理层。(自顶向下)。
每个设备涉及的层组都由其在网络上扮演的角色所涉及的层组决定,两台主机涉及5个协议层,源主机A在应用层创建消息通过协议层向下发送到物理层,目标主机B在物理层接收消息,通其他协议层发送至应用层
路由器只涉及3个层,路由器只用来路由,没有传输层和应用层
链路层开关只涉及2个层:数据链路层和物理层
任何涉及两步校验的通信需要两个地址:源地址和目标地址
每个协议层都需要一组地址,但物理层不需要地址,因为物理层的数据交换的单位是位,无法得到地址
应用层:使用名称来定义提供服务的站点,如jzstudio.com或邮箱地址等
传输层:地址被称为端口号,端口号作用是在源和目标之间定义应用层程序,通过各程序的本地地址
来区分多个同时运行的本地程序
网络层:在整个因特网范围是全球化的,独一无二地定义了该设备与因特网的连接
链路层:有时称为MAC地址,每个链路层地址在计算机网络中定义一个特定的主机或路由器
6.2应用层
应用层向用户提供服务,通信由逻辑连接提供。
协议族的最高层,只接收服务,可以轻易去除。
6.2.1应用层模式
C/S(客户机-服务器模式):传统模式。服务器(集群)必须一直在运行,服务器比较昂贵,(WWW(web),HTTP,FTP,SSH等使用)。
P2P(端到端模式):新模式。个人和个人。安全可能存在问题。
6.2.2标准化C/S应用:万维网和超文本传输协议
万维网(WWWW或仅web):具有连接分布在世界各地的文档中的存储库。
客户端(浏览器)
组成:控制器,客户端协议,解释器。
服务器:服务器存储网页,每当请求到达时,相应的文档会发送给客户端。
统一资源定位器(URL):网页需要唯一的标识符来将它们和其他网页分开。网页一般需要四个标识符:协议,主机,端口,路径。
超文本传输协议(HTTP):服务器使用的客户端端口号为80.
6.2.3 文件传输协议
文件传输协议(FTP)是TCP/IP协议提供的标准协议,用于从一台计算机复制文件到另一台计算机。
客户端:用户接口,控制进程,数据传输进程。
服务器:控制进程,数据传输进程。
控制连接在FTP会话中一直打开,数据连接用完就关,多个文件时,就关完再开。
命令和数据的分开传输使得FTP效率更高。
6.2.4 TELNET
终端网络:最早的远程登录协议之一。
以明文的方式发送数据,包括密码,不安全。
6.2.5 安全外壳(SSH)
可以用作多个目的(如远程登录和文件传输)的安全应用程序,最初是为了替代TELNET。
6.2.6 域名系统
使用IP地址唯一的标识主机与网络之间的连接,但更愿意使用名字而不是数字化的地址,需要将名称映射到地址的目录系统。
命名空间:IP地址是唯一的,所以需要名称也是唯一的。
第一部分定义组织本质,第二部分定义组织的名称,第三部分定义组织中的部门。
6.2.7 端到端(P2P)模式
特点:
• 不需要一个一直运行并等待客户端程序连接的服务器程序
• 终端可以同时提供服务也可以接收服务
• 易于扩展,不需要专门的服务器,分散服务器压力,成本低
• 安全性相对要差
• 适应性差,并不是所有的应用都可以使用端对端模式
6.3传输层
传输层是一个过程间连接。是TCP/IP协议族的核心部分。
6.3.1传输层服务
传输层的第一个义务是提供进程间通信。
一个进程是使用传输层服务的应用层实体(运行中的程序)。
端口号:是用于区分进程。在TCP/IP协议中范围是0~65535(16位)。
6.3.2 传输层协议
用户数据报协议(UDP):是不可靠的无连接传输协议。
UDP数据包也叫用户数据报,有大小为8字节的头,存储在总长度位65535字节的IP数据包中,所以协议较短。
传输控制协议(TCP):是面向连接的可靠协议。
TCP将一些字节组合成叫段的数据包,在段之前加上一个头(目的是方便控制)20~60字的头。发送至网络层进行传输,都装在IP数据包里。
面向连接的可靠协议,明确定义了连接设施、数据传输和连接拆卸段以提供面向连接的服务
TCP使用序列号来定义段的顺序,序列号与的每一段的字节数有关
段: TCP协议将一些字节组合成一个叫做段的数据包,在每一段之前加上一个头(目的是方便控制),并将这些段发送到网络层进行传输,这些段都封装在IP数据报里。
6.4 网络层
负责源主机到目的主机的数据传输
所有的路由器都涉及网络层
6.4.1网络层提供的服务。
1:打包:在源主机的网络层数据包中封装有效负荷(从上一层接收的数据),并且从来自目的主机网络层的数据包中解封有效负荷。
•负责将数据包从发送者送至接收者,同时保证数据包的内容不被改变
•传输层的有效负荷可以封装在几个网络层数据包中
2:数据包传递
是无连接且不可靠的。
3:路由
网络层为将数据包从源主机传输到目的主机负责
网络层在可能的路由路线中找到最优路线,需要一些特定的策略来定义最优路线
6.4.2网络层协议
网络层有很多协议,但最主要的协议是网际协议(IP协议),其他协议都是辅助协议,帮助IP完成职责
两类网络协议:IPv4和IPv6
6.4.2.1 IPV4协议
第4版网际协议(IPv4)
IPv4地址:用来标记每个设备和互联网之间的连接的标识符,也叫作网络地址,是一种32位的地址,唯一但又通用地定义了主机或路由器与网络之间的连接
IP地址是连接的地址而非主机或路由器的地址,当一个设备移到另外的网络中,它的IP地址可能会改变
Pv4地址是独一无二的,每个地址定义一个且只有一个与网络之间的连接,如果一个设备(如路由器)有多个网络连接,那么就有多个IPv4地址。
IPv4地址的三种表示法:
以二进制表示法,带点的十进制表示法,十六进制表示法。
IPv4地址的分级:
地址的第一部分叫做前缀,定义网络
地址的第二部分叫做后缀,定义节点(设备和网络的连接)
前缀和后缀的长度取决于网络(组织)的站点
IPv4数据报
IP使用的数据包叫做数据报,数据报是一种长度不一的数据包
数据包包括两部分:
头:长度是20~60字节,包含路由和传递时必要的信息
有效负荷(数据)
6.4.2.2 IPv6协议
第6版网际协议(IPv6)
扩大IPv4的地址空间,同时重新设计IP数据包的格式,并修改一些辅助性协议
为了防止地址耗尽,IPv6使用128位来定义任何连接到网络中的设备
地址显示为二进制或冒号十六进制的格式
二进制用于计算机的存储
十六进制用于人们的使用
IPV6地址分级:站点(组织)、子网、连接(到主机的连接)
6.5数据链路层
TCP/IP协议没有定义数据链路层中的任何协议
源和目标主机只包含一个数据链路层,每个路由器有两个数据链路层
6.5.1节点和链接
节点:主机和路由器
链接:节点之间的网络看作链接
虽然应用层,传输层,网络层的通信都是端到端的,但数据链路层的通信是节点对节点的。
连接节点的链接不是LAN就是WAN。
6.5.1.1 LAN(有线和无线)
局域网可以是有线或无线网络
有线LAN:以太网
以太网的发展经历了4个阶段:标准以太网(10Mbps,每秒一千万位)、快速以太网(100Mbps)、千兆以太网(1Gbps)和万兆以太网(10Gbps),数据数率(每秒传输的位数),每一阶段都增加了10倍
这些位不是一个接一个发送的,每组数据都被打包起来称为帧
帧:包含负荷(数据)、源地址(6字节)、目的地址(6字节)、数据类型(2字节)、循环校验位(4位,校验数据完整性)
无线LAN
使用空气作为传输媒介,通过电磁波传播
有两种技术:无线以太网和蓝牙
无线以太网(WiFi,wireless fidelity)定义了两种服务:基本服务集(BSS)和扩展服务集(ESS)
蓝牙
用于连接不同功能的设备,如电话、笔记本、照相机、打印机等
蓝牙发覆盖范围有限
应用:无线鼠标、无线键盘、蓝牙音箱等
6.5.1.2 WAN(有线和无线)
有线WAN
点对点有线WAN
拨号上网服务
拨号网络或连接使用电话网络提供的服务来传输数据
对数字化数据通信的需求导致了拨号调制解调器的发明
调制调节器:信号调制器和信号解调器,调制器通过数据制造信号,解调器从调制信号中恢复数据
数字用户线路(DSL)在传统调制解调器达到它们的最高数据速率后,电话公司开发出的另一种技术,来提供高速网络连接
DSL技术是一系列通过不同的首字母区分的技术(ADSL、VDSL、HDSL和SDSL),这个系列通常用xDSL表示(x用A、V、D、S来表示)
ADSL(非对称数字用户线路):在下游方向(从网络到居民)比在上游方向(从居民到网络)提供更快的速度
应用:有线电视网络。
无线WAN
WiMax(全球互联接入)
是DSL或通过电缆连接因特网的无线版,它提供两种服务(固定WiMax)将主要工作站与固定工作站或移动电话之类的移动工作站相连接
应用:手机网络,卫星网络。
6.6物理层
从数据链路层接收的位转换成用于传输的电磁信号,信号通过媒介进行传输
6.6.1 数据与信号
在物理层的通信是节点对节点的,但是节点交换的是电磁信号
数据可以有两种形式:模拟的和数字的。
模拟数据:这个词指连续的信息,比如人声。
数字数据:呈现的是离散的值。它们可以转换成数字信号或者调制成用来通过媒介进行传输的模拟信号。
6.6.2 数字化传输
计算机网络是为将信息从一点发送到另一点而设计的。这个信息需要转换成数字信号或模拟信号来进行传输。
数数转换技术:将数字数据转换为数字信号的方法
模数转换技术:将模拟数据转换为数字信号的方法
6.6.3 模拟传输
数字化传输是令人满意的,但是它需要一个专用通道,模拟传输是当我们没有专用通道时的唯一选择。
数模转换技术:基于数字数据的信息改变模拟信号的某个特征的过程
模模转换技术:基于模拟数据的信息改变模拟信号的某个特征的过程
6.6.4传输介质
在物理层产生的电子信号需要传输介质来从一端传输到另一端。传输介质通常在物理层之下,并且受到物理层的直接控制。
传输介质大致定义为任何可以将信号从源传输到目标的介质
在电信中,传输介质分为两大类:
导向介质:双绞线、同轴电缆、光纤
无导向介质:自由空间(电磁波)
第七章 操作系统
计算机系统由两个主要部分组成:硬件和软件
硬件:计算机物理设备
软件:使硬件能够正常工作的程序集合
操作系统:控制计算机系统用户对硬件的访问
应用程序:使用计算机硬件来解决用户问题
定义:操作系统是计算机硬件和用户(程序和人)的一个接口,它使得其他程序更加方便有效地运行,并能方便地对计算机硬件和软件资源进行访问
操作系统的两个主要目标:有效使用硬件,有效使用资源。
7.1 自举系统
操作系统负责把其他程序装入内存,以便运行,但是操作系统本身也是程序,也需要装入内存和运行,这个问题如何解决?
使用ROM技术把操作系统存储(由制造商完成)在内存中,即可解决。
7.2操作系统的演化
批处理系统,分时系统,个人系统,并行系统,分布式系统,实时系统。
7.2.1批处理系统
早期的操作系统,用穿孔卡进行输入数据,行式打印机输出结果,磁带作为存储设备
每一个要运行的程序叫做一个作业
它们保证计算机所有资源从一个作业转换到另一个作业
7.2.2分时系统
为了有效的使用资源,多道程序的概念被引入。它可以将多个作业同时装入内存,并且仅当该资源可用时分配给需要它的作业。
多道程序的分时概念:资源可以被不同的作业分享。每个作业可以分到一段时间来使用资源。
调度:给不同的程序分配资源并决定哪一个程序什么时候使用哪一种资源
进程:一个作业是一个要运行的程序,一个进程则是在内存中等待分配资源的程序
7.2.3个人系统
当个人计算机产生后,需要有一类适合这类计算机的操作系统,于是,单用户操作系统应运而生,如DOS(磁盘操作系统)
7.2.4并行系统
在同一计算机中安装了多个CPU,每个CPU可以处理一个程序或者一个程序的一部分,意味着很多任务可以并行处理而不再是串行处理,当然比单CPU的操作系统复杂得多。
7.2.5分布式系统
网络和互联网的发展,扩大了操作系统的内涵,一个运行的作业可以由相隔千里的多台计算机共同完成
程序可以在一台计算机上运行一部分而在另一台计算机上运行另一部分
7.2.6实时系统
指在特定时间限制内完成任务
7.3组成部分
现代操作系统至少具有以下4种功能:存储管理,进程管理,设备管理,文件管理
7.3.1用户界面
用来接收用户(程序)的输入并向操作系统解释这些请求的程序
一些操作系统(如Unix、Linux)的用户界面,被称作命令解释程序(Shell),在Windows中则称为窗口
7.3.2内存管理器
操作系统按照内存管理可以分为分为两大类:单道程序和多道程序
7.3.2.1单道程序
单道程序:大多数内存用来装载单一的程序,整个程序装入内存运行,运行结束后,
程序区域由其他程序取代
问题:
程序必须能够载入内存,如果内存容量比程序小,程序无法运行
当一个程序正在运行时,其他程序不能运行,一个程序经常需要从输入设备得到数据,并且把数据发送至输出设备。但输入/输出设备的速度远远小于CPU,当输入/输出设备运行时,CPU处于空闲状态,而此时其他程序不在内存中,CPU不能为其服务,性能很低
7.3.2.2多道程序
多道程序:同一时刻可以装入多个程序到内存,并且能同时被执行CPU轮流为其服务
多道程序的分类
非交换:程序在运行期间始终驻留在内存中
7.3.2.2.1分区调度
内存被分为不定长的几个分区,每个分区保存一个程序,CPU在各个程序间交替服务
每个程序完全载入内存,并占用连续的地址,分区调度改进了CPU的执行效率,但还有以下问题:
分区大小必须由内存管理器预先决定,分区小了程序装不进,分区大了出现空闲区
即使分区在刚开始分配合理,但随着新程序的交换载入内存后可能出现空闲区
当空闲区过多时,内存管理器能够紧缩分区并删除空闲去和创建新区,但会增加系统额外开销
7.3.2.2.2分页调度
分页调度:内存被分成大小相等的若干个部分,称为帧,程序被分为大小相等的部分,称为页,通常帧和页的大小一样
程序在内存中不必是连续的
问题:分页调度在一定程度上提高了效率,但整个程序任然需要全部载入内存运行
交换:在运行过程中,程序可以在内存和硬盘之间多次交换数据
7.3.2.2.3请求分页调度
请求分页调度:程序被分成页,但页可以依次载入内存运行和替换,程序不需要全部载入内存
来自同一个程序的连续页可以不必载入同一个帧,一个页可以载入任何一个空闲帧
7.3.2.2.4请求分段调度
请求分段调度:程序通常由主程序和子程序组成,程序将按程序员的角度划分为段,它们载入内存中执行,然后被来自同一程序或其他程序的模块所替代
7.3.2.2.5请求分页和分段调度
请求分页和分段调度:结合了两者的优点以提高系统效率。
一个段可能太大而不能载入内存中的空闲区,内存可以分成很多帧,一个模块可以分成很多页,依次装入内存执行
虚拟内存:在请求分页调度和请求分段调度时,一部分程序驻留在内存中,一部分程序则放在硬盘上
7.3.3进程管理器
程序、作业和进程
程序:是由程序员编写的一组稳定的指令,存在磁盘上,它可能会也可能不会成为作业
作业:从一个程序被选中执行,到其运行结束并再次成为一个程序的这段过程中,该程序称为作业
进程:是一个运行中的程序,该程序开始运行但还未结束,只要作业装入内存就成为进程
调度器:将一个作业或进程从一个状态改变为另一个状态,进程管理器使用了两个调度器
作业调度器:将一个作业从保持状态转入就绪状态,或从运行状态转入终止状态
进程调度器:将一个进程从一个状态转入另外一个状态。
7.3.4队列
队列:很多作业和进程相互竞争计算机资源,为处理多个进程和作业,进程管理器使用队列(等待列表)
与每个作业或进程相关的是存有这些作业和进程信息的作业控制块和进程控制块
队列中存的不是作业和进程本身,而是作业块或进程块,作业或进程仍保存在内存或硬盘中
操作系统可以有多个队列,如作业和进程在三个队列里循环:作业队列、就绪队列、和I/O队列
作业队列:保存等待内存的作业
就绪队列:保存已在内存中准备好运行但在等待CPU的进程
I/O队列:保存正在等待I/O设备的进程(可以有多个I/O队列)
进程管理器可以用多种策略从队列中选择下一个作业或进程执行,可以是先入先出(FIFO)、最短时间优先、最高优先级等
7.3.5进程同步
进程同步
所有进程管理的思想都是使的拥有不同资源的不同进程同步,只要资源可以被多个进程同时使用,那么它就可能有两种有问题的状态:死锁和饿死
7.3.5.1死锁
发生在操作系统允许一个进程运行,而不用首先检查它所需资源是否准备好,是否允许这个进程占有资源直到它不需要为止
死锁解决方案:
方案一:当所需资源不空闲时,不允许进程运行
方案二:限制进程占有资源的时间
死锁的4个必要条件
互斥:一个资源只能被一个进程占用
资源占用:一个进程占有一个资源,即使在获取其他资源之前无法使用它
抢先:操作系统不能临时对资源重新分配
循环等待:所有的进程和资源包含在一个循环里
只要破坏其中一条,可以避免死锁
7.3.5.2饿死
当操作系统对进程分配资源有太多限制时,该进程可能饿死
7.3.6 文件管理器
文件管理器控制对文件的访问。
7.3.7设备管理器
设备管理器负责访问输入/输出设备。
7.3.8主流的操作系统
Unix、Linux、Windows
第八章 算法
算法的概念
非正式定义:是一种逐步解决问题或完成任务的方法,按照这种定义,算法完全独立于计算机系统
计算机专家为结构化程序或算法定义了三种结构,这种想法认为程序必定是由顺序、判断(选择)和循环组成,已经证实其他结构是不必要的
算法的表示:
UML(统一建模语言)是算法的图形表示法,使用图的形式掩盖了算法的所有细节,只显示算法从开始到结束的整个流程
伪代码是算法的一种类似英语的表示法,现在还没有伪代码的标准
子算法:结构化编程的原则要求将算法分成几个单元,称为子算法。
递归:是自我调用的过程
迭代的定义:
更正式的定义:算法是一组明确步骤的有序集合,它产生结果并在有限的时间内终止
算法必须是一组定义良好(最优算法)且有序的指令集合
第九章 程序设计语言
计算机语言是指编写程序时,根据事先定义的规则(语法)而写出预定语句集合
机器语言:计算机发展早期,唯一的 程序设计语言是机器语言,每一台计算机有其自己的机器语言,这种机器语言由0和1序列组成
计算机唯一能识别的语言是机器语言
机器语言缺点:依赖于计算机,编写程序容易出错
汇编语言:带符号或助记符的指令和地址代替二进制码的机器语言,这些语言首先被称为符号语言,这些助记符语言后来被称为汇编语言
汇编语言最终要翻译成机器语言执行
高级语言:汇编语言虽然提高了编程效率,但仍然需要程序员在所使用的硬件上花大量的精力,为了提高程序员编程效率,促进了高级语言的发展
高级语言可以移植到不同的机器上
高级语言和汇编语言有一个共性:必须转化为机器语言,这个转化过程称为解释或编译
翻译:
编译:编译程序(编译器)通常把整个源程序翻译成目标程序
解释:有些计算机语言使用解释器把源程序翻译成目标程序
解释是指把源程序中的每一行翻译成目标程序中相应的行,并执行它的过程
解释中的两种趋势
在Java语言之前被有些程序使用的解释
Java使用的解释
翻译过程
编译和解释的不同在于,编译在执行前翻译整个源代码,而解释一次只翻译和执行源代码中的一行,但编译和解释都遵循相同的翻译过程
计算机语言可以分成4种模式:过程性(强制性),面向对象,函数式,说明式。
第十章 软件工程
软件工程是建立在这样一个基础上,即利用合理的工程方法和原则来获得在真实机器上工作的可靠软件
开发过程模型
开发过程包括4个阶段:分析、设计、实现和测试
最常见的两种开发过程模型
瀑布模型:开发过程只有一个方向的流动,这意味着前一个阶段不结束,后一个阶段不能开始
增量模型(迭代模型):软件的开发要经历一系列步骤。开发者首先完成整个系统的一个简化版本,这个版本表示了整个系统,但不包括具体的细节
第十一章 数据结构
第十二章 抽象数据类型
第十三章 文件结构
文件存储在辅助存储设备或二级存储设备中,如磁盘和磁带等
在设计一个文件时,关键问题是如何从文件中检索信息(一个特定的记录),有时需要一个接一个处理记录,有时需要快速存取特定数据
存取方法
顺序存取
如果需要顺序存取记录(一个接一个,从头到尾),使用顺序文件结构
EOF:文件末尾标志
随机存取
如果需要存取某一个特定记录而不用检索之前的所有记录,则使用随机存取的文件结构
有两种文件结构都允许随机存取:索引文件和散列文件
索引文件由数据文件组成,它是带索引的顺序文件,索引本身非常小,只占两个字段:顺序文件的键和磁盘的相应记录的地址
散列文件用一个数学函数(散列函数/哈希函数)来完成映射,用户给出一个键(key),函数将键映射成地址
散列文件无需额外的索引文件
第十四章 数据库
数据存储在传统上是使用单独的没有关联的文件,称为平面文件
定义:数据库是一个组织内被应用程序使用的逻辑相一致的相关数据的集合
DBMS(Database Manager System)是定义、创建、维护数据库的一种工具,DBMS允许用户来控制数据库中数据的存取
DBMS由5部分组成
硬件:物理上存取数据的计算机硬件
软件:用户存取、维护和更新物理数据的实际程序
数据(库):数据是独立于软件的一个实体
用户:最终用户:数据库管理员DBA和普通用户。应用程序
规程
数据库管理系统建立了三层体系结构:内层、概念层和外层
内层:决定了数据在存储设备中的实际位置,处理底层的数据存取方法和如何在存储设备间传输字节,内层直接与硬件交互
概念层:定义数据的逻辑视图DBMS的主要功能(如增删改查)都在该层,概念层是中介层,使得用户不必与内层打交道
外层:直接与用户(最终用户或应用程序)交互,将来自概念层的数据转化为用户熟悉的格式和视图
在数据库发展史中,使用过三种数据库模型
层次模型
网状模型
关系模型
关系的特征
名称:每种关系都有唯一的名称
属性:关系中的每一列都称为属性,属性在表中是列的头,关系中属性的总数称为关系的度
元组:关系中的行叫做元组,元组定义了一组属性值
结构化查询语言(SQL):SQL是ANSI/ISO用于关系数据库上的标准化语言,是一种描述性的语言
关系的操作:插入、删除、更新、选择/查询、投影、连接、并、交、差。
实体关系模型(ERM,Entity Relationship Model):定义了需要维护的实体以及实体的属性,实体和实体之间的关系
实体关系图(E-R图):使用图形的方式来表示ERM
矩形:表示实体集
椭圆形:表示属性
菱形:表示关系集
线:连接属性和实体以及连接实体集和关系集
第十五章 数据压缩
数据压缩:通过部分消除数据中内在的冗余来减少发送或存储的数据量
压缩方法分为无损压缩和有损压缩
[外链图片转存中…(img-TQPl1y04-1707899271919)]
三种无损压缩方法:游程长度编码、赫夫曼编码、LZ算法
游程长度编码:用来压缩由任何符号组成的数据,当数据中由0和1表示时十分有效
思想:将数据中连续重复出现的符号用一个字符和这个字符重复的次数来代替,如AAAAAAAA用A08来代替