资源描述
计算机软件技术基础
1 计算机软件系统综述
1.1 计算机与计算机系统
计算机系统由硬件与软件组成
1.计算机的工作方式是全自动的,2.动作按指令进行;3。步骤由程序指挥
1.2 软件系统
计算机软件系统一般分为两大类:系统软件和应用软件
1.2.1 系统软件
系统软件是为充分发挥计算机的效率、方便用户使用和管理计算机系统,由计算机厂商提供的软件(程序)总称。
一、系统软件及其功能
1、提高硬件使用效率
2、提供通用服务功能
3、提供通信与控制功能
4、保护数据和程序等信息,并支持系统的正确与安全
5、预防故障,处理异常
6、提供软件编制环境
7、提供高效方便操作计算机的功能
二、系统软件的种类
1、控制软件:管理与控制作业、任务、资源、数据等
2、通信软件:网络通信
3、语言处理程序:将源程序翻译成机器码
4、服务程序:文字处理,编辑
5、数据库管理程序:对文件、数据进行统一格式化管理,使数据共享
6、软件编辑器
1.2.2 应用软件
一、公共应用软件
1、 数据处理软件:数值分析、数据统计与分析
2、 图形图象、文字、音频视频处理
3、 搜索与查询
4、 自然语言处理、专家系统、人工智能
5、 CAX
二、按行业、业务分类的应用程序
金融、财务、设计、教育等
1.3 计算机主要系统软件功能
1.3.1 操作系统
操作系统是计算机的最基础、核心软件,其主要目标是:
1、 发挥计算机的工作效率
2、 解决高速CPU与低速外设的速度配匹问题
3、 多用户公用一计算机设备
主要功能:
1、CPU管理;2、内存管理;3、文件管理;4、设备管理;5、作业管理与控制
操作系统分类:批处理、分时、实时
1.3.2 数据库管理系统
数据库管理系统是人们将计算机处理与管理大量数据的重要成果
数据库系统由硬件、软件、数据库和数据库管理员组成。
数据库系统中的核心软件是数据库管理系统(DBMS)。
DBMS提供两种数据语言:数据描述或定义语言(DDL:Data Description Language)和数据操作语言(DML:Data Manipulation Language)
DDL:实现数据的逻辑模型到物理模型的映射和数据访问规则
DML:实现对数据的操作(数据的插入、删除、修改、检索和并发访问处理)
1.3.3 软件支持系统
主要由以下三类应用软件组成:
1、 系统测试和诊断程序:测试硬件故障
2、 程序编制与调试软件:行编辑器Edlin,C编辑器等
3、 软件开发支持工具:软件包、系统设计工具(UML)
1.4 计算机语言与语言处理程序
1.4.1 计算机语言概述
计算机语言分两类:与计算机硬件系统紧密相关的低级语言(如机器语言和汇编语言)和与硬件系统无关的高级语言(如C、Basic、Fortran、Java)。
1.4.2 语言处理程序概述
将源程序处理成计算机能够执行的程序称为语言处理
汇编语言处理
汇编语言源程序→汇编(汇编语言)→机器语言
高级语言源程序,两种处理方式:编译系统和解释系统
1、编译处理程序
高级语言源程序→编译程序(编译系统)→目标程序→连接→机器语言
2、解释
交互式执行。
源程序+初始数据→解释(程序)系统→结果
1.5 微型计算机常用软件
1.5.1 系统软件
一、操作系统
DOS:MS-Dos,PC-Dos,CCDOS,UCDos
Windows
二、语言处理
C、Basic、Fortran、Java、ProLog
三、数据库管理系统
FoxBase、FoxPRo
MS SQL Server Oracle Sybase DB2 Informix
四、服务性软件
编辑软件、调试软件、工具性软件
1.5.2 应用软件
一、文字处理
Word WPS
二、图形
AutoCAD、UG、Pro\E 、P-CAD(电路设计)
三、工具软件
PC Tools
四、综合性应用软件
Office
1.6 计算机软件的发展与未来
汇编语言阶段→高级语言阶段→操作系统→网络与数据库
未来:分布、智能
1.7 计算机安全与保护
软件版权保护
软件信息的安全
一、计算机病毒的特征
1、 破坏性;2、传染性;3、隐蔽性;4、针对性
二、病毒的种类
1、 机型:微机、工作站、小型机
2、 破坏性:良性与恶性
3、 连接方式:操作系统、外壳型、入侵型和源码
4、 感染的文件类型:磁盘引导区、可执行文件(EXE、SYS、COM)
5、综合性病毒
三、病毒寄生方式
三种寄生位置:磁盘引导区、可执行文件和其他文件
三种连接方式:替代方式(部分或全部替代原程序)、链接方式(前、后或中间)和插入(插入源程序中,编译后成为同一代码程序)
四、破坏作用
1、 屏幕显示异常(出现不正常信息,异常显示)
2、 运行异常(速度下降、死机、不能启动)
3、 蜂鸣器异常
4、 磁盘存储异常(不能识别磁盘设备、存储空间下降)
5、 文件异常(文件大小异常、文件名无法识别)
6、 打印异常(不能联机,打印非正常字符)
五、病毒的防治
1、管理手段(制度)
2、防病毒软件
3、杀病毒软件
2 操作系统
2.1 概述
是计算机系统最基本的系统软件。运行在裸机之上,是硬件与其他所有软件的接口,是计算机系统管理与控制中心。对计算机系统的功能进行扩充。
2.1.1 操作系统的功能特征
三个方面的功能:
l 控制和管理计算机系统的硬件与软件资源,使之能协调地最大效果的发挥作用;
l 提供策略,合理地组织计算机系统的工作流程,提高计算机处理能力与效率;
l 为用户使用计算机系统提供方便的接口。
上述三方面的功能反映了对计算机系统功能的三种不同的观点。即:
1、资源管理的观点:静态观点。硬件资源与软件资源,硬件资源包括处理器、内存储器和外设等。软件资源包括各种数据信息文件与作业(用户程序文件)。因此,操作系统的作用是对处理器、内存储器、外设、文件与作业进行有效的调配和管理,称为操作系统的5大管理功能。
2、 虚拟计算机的观点:由于用户不可能直接使用裸机,操作系统为用户提供了各种方便的使用与操作计算机系统的接口,并扩充的计算机系统的功能和性能。
3、 进程的观点:动态的观点。进程是指计算机工作时为完成某一特定的任务(如控制作业、输入输出等)而独立运行的程序。操作系统的功能就是由进程和对进程进行管理、协调组成。因此,操作系统的作用是协调、控制进程的运行,实现资源共享和作业的并发执行。
2.1.2 操作系统的分类
针对处理不同作业,操作系统类别很多,目前主要有:
一、批处理系统
将用户的作业成批地提交给计算机,操作系统会负责管理、组织和调度作业的执行。根据对作业的控制机制的不同,有单道批处理和多道批处理系统之分:
1、 单道批处理系统:也根据提交的时间,按时间顺序对作业进行处理,同时只能处理一个作业。也称为顺序批处理系统。
2、 多道处理系统:作业不仅可以成批地提交给计算机系统,在内存中可以同时运行多个作业。
批处理系统需要解决对作业的组织、控制、调度、连接、输入输出等控制问题。对作业的吞吐量大,处理效率高。但在作业运行过程中,用户与计算机系统不能交互。因此,批处理系统适合于时间要求不太严、作业运行步骤规范、程序无重大错误的作业。
二、分时系统
每一个用户通过各自的终端向系统提交请求,系统按一定的次序把CPU的时间按时间片分配给每一个用户,处理各自的作业。
分时系统的特点是多路线、交互性、独立性和及时性。
由于分时系统同时几十、甚至上百个用户的作业,在一个时间片段内又不一定可能处理完作业,因此需要采用对换方式对作业进行储存。而不可能将内存储器无限增大,一般采用磁盘进行对换空间。
三、实时系统
实时能够及时响应随机发生的外部请求并以足够的速度完成请求处理。其特点是及时性、高可靠性。
实时系统实用于实时过程的控制、实时通信和实时管理的场合。
四、网络操作系统
计算机网络是通过通信设备将物理上分布的具有独立功能的计算机系统连接起来,实现信息交换和资源共享,并能进行相互操作和协调处理的计算机系统。实现上述功能需要一种软件系统进行处理,完成这种处理的软件系统就是网络操作系统。
网络操作系统是在原来各自独立计算机操作系统的基础上,按网络功能要求协调各自操作系统之间联系的操作系统。
网络操作的主要功能包括:网络管理、通信、资源共享、系统安全和网络服务。
五、分布式操作系统
也是一种网络操作系统,与网络操作系统的区别是分布式操作系统对对分布系统中所有资源负责管理、协调、分配和调度。原有的各自的操作系统失去作用。
六、PC操作系统
是一种单用户、交互式微机操作系统。由于是属于个人专用,功能方面相对其它系统上简单。但用户接口和操作方式方面更为方便。
2.1.3 操作系统的硬件支持
操作要实现并行与共享,必须要有相应的硬件支持。一般有两种硬件支持:
一、特权指令与处理机状态
处理机有两种指令:特权指令和非特权指令。特权指令是操作系统专用,如启动设备、设置时钟、清除内存等指令。特权指令不允许用户使用。
二、中断
由于某种原因,处理机暂时中止执行现行程序并转去执行其它程序。当条件具备后,被中断的程序根据操作系统的安排又恢复执行,这样一个过程称为中断。
引发中断的原因称为中断源。
发生中断时被中止程序的暂停点称为断点;CPU转去执行中断的处理称为中断响应;处理中断源的程序称为中断处理程序。
中断分两大类:硬件中断和程序中断
程序中断有两种:一种是由于程序出错产生;另一种是人为安排执行中断指令产生的
硬件中断和第一种程序中断叫强迫中断,第二种程序中断叫自愿中断。
中断处理过程分为四个阶段:中断现场保护、分析中断源确定中断原因、执行中断处理程序、恢复中断程序的现场。
2.2 进程管理
进程管理(处理机管理):是一种最重要资源管理,主要作用是把处理器的时间合理地分配给各个进程。
2.2.1 进程的概念
一、进程
进程是操作系统中可以并行工作的基本单位,也是操作系统进行调度与分配资源的基本单位。
从静态看,进程是由程序、数据和必要的控制信息组成;
从动态看,进程是具有独立功能的程序的关于某个数据集合的一次运行活动。
进程与程序的关系:
1、 程序是指令的集合,进程是一系列指令的执行
2、 程序是静态的,进程是动态的,一个进程可以执行一个或几个程序,一个程序可以由多个进程组成。
3、 程序存储在介质上,进程占用CPU
4、 程序的存在是永久性的,而进程有一定生命期
二、进程的特点
进程具有以下特征:
1、 动态性:是程序的一次执行过程。由系统创建并独立运行。运行过程可以被挂起,也可被恢复。
2、 并发性:不同进程的执行在时间上可以重叠,即进程可以交叉执行。
3、 异步性
进程按照各自独立的、不可预知的速度执行。
三、进程的状态及相互转换
在多道程序中,进程的并发性,存在对资源的争夺,因此,进程之间存在制约的关系。
进程有三种状态
1、运行状态
当前,进程获得CPU,程序在CPU上运行。在同一时刻,只有一个进程处理运行状态。
2、就绪状态
进程已具备运行条件,但没有获得CPU。
3、等待(阻塞)状态
也成为挂起状态,进程还不具备运行条件。
三种状态关系可用下图表示 P24
运行
等待
就绪
获得CPU
等待事件发生
等待事件消失
CPU时间到
四、进程控制块
为了对进程进行管理,系统在创建进行时会为进行设置一个进程控制块----PCB。进程撤消,系统收回进程块,进程消失。
PCB包括两部分内容:
一是进程的调度信息:进程标识号、优先级、存储信息、状态及队列指针等;
二是进程的运行信息(现场信息):保留进程由运行状态转入就绪或等待状态时的各种寄存器的数据,如程序状态字、时钟、界地址寄存器、运算寄存器、通用寄存器等数据。
2.2.2 进程通信
进程通信是指进程之间的信息交换。由于进程的独立性、并发性和共享性,进程之间既有联系,又相互制约。主要体现在进程之间的互斥与同步。
一、临界资源
不能同时提供两个或以上个进程使用的资源称为临界资源。如打印机、绘图仪、磁带机等硬件资源或某些数据、表格等软件资源。进程中,访问临界资源的那段程序称为临界区。
二、进程的互斥
当一个进程进入临界区使用临界资源时,另一个进程必须等待,直到被占用的临界资源被释放为止。这种现象称为进程互斥。
进程的互斥就是保证不会出现两个或两个以上的进程同时进入临界区。
要实现进程的互斥,必须采用统一调度和协调措施。并遵循下列原则:
1、当没有进程进入临界区时,任何一个要求进入临界区的进程应立即得到满足。
2、当已有进程进入临界区时,其它任何一个要求进入临界区的进程都必须等待。
3、进程进入临界区的要求必须在有限时间内得到满足。
有多种实现进程的互斥方法,其中P、V操作法是目前普遍使用的一种方法。
1、信号量
信号量是一个特殊的整型变量,表示系统中某种资源的数目。用S表示。
当S>0,S表示可以利用资源数目
当S<0,S绝对值表示处于等待该资源状态的进程数目。S值由P、V操作改变。
2、P和V操作
P、V操作都是一种不可分割的原子操作,也称通信原语。原子操作一旦执行在结束之前是不能在中断的。原子操作一般是由若干条机器指令构成的一段程序。
设信号量为S,某个进程的P操作定义如下:
P(S):
S: =S-1
如果执行P(S)操作后,S≧0,说明具备该进程所需要的资源,则进程可以执行。否则,资源不具备,进程被阻塞,进入等待队列。
某个进程的V操作定义如下:
V(S):
S: =S+1
如果执行V(S)操作后,S﹥0,说明具备该进程所需要的资源,则进程可以继续执行。否则,资源不具备,从信号量等待队列中移出一个进程,使其由等待状态变为就绪状态。
设S为一信号量,其初值为1,则A、B两进程竞争进入临界区的程序为:
参见P25
三、进程的同步
1、进程同步概念
进程同步是指系统中两个以上进程共同完成同一个任务,它们相互合作、协调运行。
如A、B两进程共同完成一个打印任务,A进程将计算结果数据送入缓冲区,为B进程提供打印数据,B进程完成打印。
若A进程计算完并将结果送入缓冲区后,应向B进程发送一个信号,B进程受到信号后,从缓冲区取出数据并打印。若缓冲区有数据,A进程不能将数据送入。当缓冲数据被打印完后,B进程应向A进程发送一个信号。
二、同步的实现
利用P、V操作可以实现进程之间的同步。
设有两个进程,A是计算进程、B是打印进程,其信号量分别为SA、SB(私有)
SA表示缓冲区中需要打印的数据,SB表示缓冲区中需要打印的数据是否被取走。
A进程执行时,对SA 执行一次V操作,即SA ++,在执行B进程之前,对SA执行一次P操作,即SA--,若SA<0,表示缓冲区无数据打印,若SA=0则,B进程执行打印。
每当A进程向缓冲区输送一次数据后,对SA 执行一次V操作,即SA++,SB执行一次P操作,即SB—
SA和SB的初始值都为0
进程A
进程B
…
进行计算;
V(SA)
P(SB)
…
…
P(SA)
进行打印;
V(SB)
…
注意:A进程先执行。
SA >0时,B进程才能执行,A进程不能执行
SA <0时,B进程不能执行,A进程能执行
SB<0时,进程A不能执行,B进程才能执行
讲解P26
四、进程间的高级通信
在并发进程执行时,除对信号量进行V、P操作外,进程之间需要进行大量的信息交换。
高级通信由高级通信原语实现。
实现高级通信的机制有消息缓冲通信、管道通信和信箱通信。
1、消息缓冲通信
消息缓冲也称为直接通信。
发送原语
接收原语
申请缓冲
消息
消息队列
读入消息
释放缓冲
发送进程 接收进程
2、通信管道
发送进程
接收进程
打开的共享文件
发送数据
读取数据
特点:需要外存,传输量大,速度慢。
3、信箱通信
发送进程
接收进程
信箱
接收信件
发送信件
信箱是一种专用于进程间通信的数据结构。信箱通信有单向和双向
实现信箱通信必须要有相应的通信原语,用于信箱的创建、撤消和信件的发送与接收。
2.2.3 进程的管理
进程的管理是操作系统的核心功能。进程管理包括现场管理、队列管理和进程调度等。
一、进程现场管理
当进程状态由运行转换成其他状态时,需要对进程的现场进行保存,待再次运行时,又需要将保存的现场进行恢复。实现进程现场保存与恢复的功能就是进程现场管理。
现场保留的主要数据结构是进程控制快(PCB)中的“现场保留区”
二、进程队列管理
完成对进程队列的取出队首、插入指定队列、转列及对队列进行维护等。
插队有队尾、队首及按优先的方式。
转列是将一个队列中的全部进程插入到另一个队列中去,如将等待队列插入到就绪队列中。
三、进程的调度
也称为处理机调度,主要任务是决定什么时候将CPU分配给那个进程。其目的是控制和协调进程对CPU的争夺。
1、进程调度的功能
l 记录所有进程的执行状态。
l 根据一定的调度算法,从就绪进程队列中选出一个进程,准备CPU。
l 将CPU分配给选中的进程。
2、进程调度算法
调度算法是解决以什么样的次序和时间比例把CPU分配给就绪进程。
常用的主要算法有:
l 先进先出法
该算法简单,但后到的进程排队会过长。
l 时间片轮转法
进程按到达的时间次序进入就绪队列,按次序获取一个固定长短的CPU时间片。运行的进程在运行一个时间片后,不论是否运行结束,都必须中断运行,进入就绪队列尾,将CPU下一个时间片段交给下一个就绪进程。
在时间片轮转算法中,时间片的长短对系统影响非常大,当时间片段过长足以能使每一个进程执行完时,这种算法就与先进先出法一样。
如果时间片段过短,现场保留与现场恢复会消耗大量的时间。CPU利用率低。
可变时间片轮转法
q=T/Nmax
q----时间片长 T------响应时间 Nmax------为就绪队列中能存储的最大进程数。
l 最高优先数法
对每一个进程设置优先级,把CPU分配给优先级最高的进程。有两种优先级设置方法,即静态和动态。
静态设置方法:在进程创建时设置,在进程运行时不再改变。
动态设置方法:在进程创建时设置,在进程运行时不断地改变。
基于优先数的调度法有两种:非剥夺方式和剥夺方式。
非剥夺方式:优先数高的进程一旦获得进程,就一直运行到结束为止。
剥夺方式:任何占有CPU的进程总是就绪进程队列中级别最高的进程。这就意味作当一个目前级别最高的进程占有CPU后,如果又有一个级别更高的进程进入就绪队列,进程调度程序会立刻中断正在运行的进程,将CPU转为级别更高的进程占用。
2.2.4 死锁
死锁是指系统中两个或两个以上的进程无限期地等待永远不会发生的条件,因此不会继续运行的一种状态。处于死锁状态的进程称为死锁进程。死锁会产生非常严重的后果,如系统瘫痪,大量的资源浪费等。因此,应绝对避免。
一、死锁产生的原因
1、系统资源的共享与竞争是最根本的原因。系统没有足够的资源随时分配给所有进程使用。
2、进程推进的顺序不合适:
如两个进程分别占有了系统仅有的一台输入设备和输出设备,在没有释放之前又分别请求输出设备和输入设备。结果产生死锁。
二、产生死锁的必要条件
死锁的根本原因是资源,因此认识资源非常重要。
1、资源分类
从不同角度,系统资源有不同的分类
l 可剥夺资源与不可剥夺资源
当一个进程占有,并正在使用的资源可以被另一个进程强行占有和使用的资源,如磁盘、主存储器、CPU等。
当一个进程占有后,除非不再使用并主动释放,其它进程不能占有的资源,如打印机、磁带机等。
l 共享与独享资源
所谓共享资源是指可供多个进程共同使用的资源。如磁盘、主存储器、CPU等。
独享资源是指只能供一个进程单独使用的资源,如打印机、磁带机等。
l 永久资源与临时资源
可按顺序重复使用的资源,或可再次使用的资源称为永久性资源。各种硬件、数据文件、表格及共享代码均为永久资源。
临时资源只能使用一次,由一个进程产生,只为另一个进程使用。进程之间传输的消息、数据等为临时资源。
2、产生死锁的必要条件
永久资源产生死锁必须具备以下四个条件。
l 互斥条件
互斥条件:一个进程请求一个被其他进程占用的独享资源时,只能等待该资源被释放。
l 不可剥夺条件
占有资源的进程在未使用完之前,不能被其他进程强行剥夺。
l 部分分配条件
一个进程占有了执行所需要的一部分资源,但仍然等待它执行所需要的另一部分资源。
l 环路条件
在一个进程环路中,每一个进程已获得的资源同时又是下一个进程所请求的资源。当且仅有这样一个资源时,必然会产生死锁。这个条件是产生死锁的充分条件。
三、死锁的预防与解除
1、死锁的预防
l 对资源采用“预先静态分配法”,在作业运行之前,将作业所需要的资源一次性分配给该作业。作业在运行过程中,各进程不再提出新资源要求。
这种方法破坏了产生死锁的资源部分分配条件。
会产生巨大的资源浪费。
l 破坏不可剥夺条件
强迫已占有资源的进程释放资源供其他进程使用。这种方法只对共享资源可行,而对独享资源不可行。
l 采用资源顺序法破坏环路条件
将系统中的所有资源按类别进行唯一的编号,并要求进程严格按递增次序请求资源。这样就不会产生几个进程对某种资源形成环路请求。
2、死锁的检测与解除
对系统对资源的分配不加任何限制,允许死锁产生。系统定时运行一个死锁检测程序,检查系统是否产生死锁和那些资源陷入死锁。检测的重点是对资源的环路请求。
一旦产生死锁,可采用两种途径解除。一是剥夺某些进程的资源,将其分配给死锁进程。
二是撤消死锁进程。
2.3 存储管理
存储管理的目标是方便用户的使用与提高主存储器的利用率。
2.3.1 存储管理的功能
存储管理的功能很多,主要有以下几个:
1、对主存储器空间分配、收回和管理
l 记录主存储器分配情况
l 当程序申请存储空间时,进行空间分配
l 修改空间分配表
l 收回不再使用的存储空间
2、提高主存储空间的利用率
解决多道程序对主存储器的共享问题,主要是指主存储共享、数据共享和程序共享等
3、信息保护
确保各道作业在自己的存储空间中运行,不要干扰其它作业。一般通过硬件与软件的配合实现。主要采用授权的方式对读、写操作进行限制。
4、实现地址的转换
作业所使用的存储空间地址通常是逻辑地址,为了确保作业的运行,需要将这种逻辑地址转换成物理地址,这种地址转换称为地址映射或地址重定位。
地址转换有静态地址影射和动态地址映射。
用户的程序在调入到内存要进行地址映射,映射后,在程序的执行过程中是不再变动的,这种地址映射称为静态地址映射。
而程序在执行过程中要调用的指令或数据时需要进行的地址映射,称为动态映射。
5、实现主存储空间的扩展
由于内存空间总是有限的,而实际处理的问题对内存的要求是无限的。因此,操作系统在硬件的支持下,可把辅助存储器作为主存储器使用,即扩展了主存储器。
操作系统一般采用以下方式实现主存储器的扩展。
l 虚拟存储技术
当作业所需要的存储空间超过了主存储器时,操作系统只把作业的一部分调入内存,其它部分仍然停留在辅助存储器中,只有当在运行过程中需要时才调入内存中。(作业在运行时并需要全部停留在内存中)
虚拟存储技术的实现需要有足够的外部存储器和一定容量的主存储器。
l 覆盖技术
所谓覆盖技术是指一个作业中的若干程序段或数据段或几个作业的某些部分共享部分内存。
其主要目的是使小空间能运行大作业。
原理是将作业按树型结构进行模块划分,只有根部常存放在内存中,同层模块为一个覆盖段,由于同层模块在逻辑上是相互独立的,因此在同一时刻只有一个模块调入内存,因此同层模块可以共享同一块内存。同层共享内存的大小为此层中最大的模块。
A 10k
B 30k
F 10k
E 50k
D 40k
C 20k
不采用覆盖技术,所需内存为160k
采用覆盖技术,所需内存为90k
l 交换技术
交换技术是以一个完整的作业为单位,将时间片已到(分时系统)或因其它原因不能继续运行的作业从内存中调出,以文件的方式保存到外存中。当需要时再调入内存。
在作业调入调出过程中会浪费大量的CPU时间,因此是以时间换取空间。这种技术一般应用以分时系统中。
2.3.2 单一连续区分配管理
在一般情况下,这种管理分区方法是将内存分成两个连续区,一个固定区分配给操作系统,另一个分配给用户作业(用户区)。
这种存储方法简单,使用方便。缺点:内存和CPU的使用效率低,内存中程序与数据不能共享,进程所需要的内存不能大于用户区的空间。
通常用于小型机中单道批处理操作系统中。
2.3.3 分区式分配管理
这种分配管理为多道系统中所设计的一种管理内存技术,允许几个作业共享内存和CPU。按分区方式,有以下几种:
1、固定分区
在作业处理前,将内存(主存)划分成若干个固定大小的存储区,每一个存储区分配给一个作业,一个区只能有一个作业,一个作业只能在一个区。作业完成后必须将内存释放。
l 单用户、单道作业的固定分区
将内存分成两个或三个大的分区,当作业申请内存时,系统为其确定一个分区,由于作业在运行过程中,分区的大小不会改变,因此也称为静态分区法。
算法简单,但会造成空间的浪费。用于微型计算机系统中。
l 多道作业的固定分区
将内存分成大小固定的几个分区,操作系统占用一个分区,其它为作业分区,每一个分区分配给一个作业。
为了管理分区,需要设立分区块表(MBT),在MBT中记录了各区的大小,位置和使用情况。
区号
大小
起始地址
状态
1
8k
20k
占用
2
12k
28k
占用
3
32k
40k
未用
4
60k
72k
未用
当作业申请内存时,系统根据作业的大小,从MBT中找出一个足够大的未占用分区。由于不允许一个分区中有两个作业,而且分区的大小必须大于作业的大小,因此每个分区都会有内存“碎片”浪费。
2、可变分区
在作业申请内存时,根据所要的内存大小分配内存。只有在作业进入内存时才进行分区。因此这种分区方法的分区个数与分区的大小都是可变。也称为动态分区。
为管理各分区,系统会创建一张表,记录各已分配分区大小,位置、使用情况和未分配区的大小,位置等。表中的分区个数和各分区的大小与位置都是变化的。
已分配区
未分配区
序号
大小
起始地址
状态
序号
大小
起始地址
状态
1
8k
20
已分配
1
64k
44k
可用
2
16k
28k
已分配
2
24k
322k
可用
3
空表目
3
空表目
4
12k
108k
已分配
4
空表目
可变分区分配步骤:
l 分区的选择
根据作业的需要,从分散零碎的可用分区中找一个足够大分区分配给作业,如果没有分散零碎的可用分区,则从未分配区分配。
注:分散零碎的可用分区一般由其他作业释放产生。
l 分区分割
如果分散零碎的可用分区比作业所需要的空间大,则系统将其分成两个区,一个分配给作业,另一个记入未分配区。
l 空间释放
当作业完成后,将所占用的空间释放,并将其与相邻的未分配区进行合并。
不论是固定分区还是可变分区,选择分区的算法(存储管理算法)一般有三种。
l 最佳适应算法:从未分配的分区中找出一个大小等于或大于但最接近的分区。
l 首次适应算法:选取最先找到的大小等于或大于作业大小的未分配区;
l 最坏适应算法:从未分配的分区中选取最大分区分配给作业,这种算法最适合可变式分区方式,使其剩余部分可直接分配给其他作业。
3、多重分区
固定分区法和可变式分区法,都是一个作业使用一个分区,在多重分区法中可将一个作业分放在几个分区中,且这些分区可以不连续。这种技术可以显著提高存储空间的利用率。
2.3.4 页式存储管理
把作业的地址空间分成若干大小相等的部分,每部分称为“页”,同样包内存也分成与页大小相同的存储块,简称为块或“页架”,给作业分配内存时以页架为最小单位,同一页架中不能存在两个作业页,当作业页不足一块时按一块分配。
当一个作业需要多块时,这些块可以不连续。因此,为了对作业进行管理,系统需要创建一张页表,记录作业所分配的块号。页表中最少有作业号、页号和块号三个信息。
一般,页与块的大小为2k(1024B)。
当作业执行时,首先以页号为索引,根据页表查找该页所在的块号,再进行地址转换。
页式存储管理技术有效地解决了内存中“碎片”问题,提高了存储空间的利用率,但由于要进行动态的地址转换,增加了CPU的计算成本和存放页表的空间。
2.3.5 请求页式存储管理
1、基本思想
在作业开始执行之前,不是将作业的全部页装入内存,而只是装入一个(或0)页便开始运行,再根据运行的需要动态地装入其它页。如果需要装入其它页,而存储空间已满时,则根据某种算法对页进行置换。
这种技术实现内存的扩充,是一种实现虚拟存储器的方法。
2、请求页式管理的实现
由于作业运行时所需要的页可能不在内存中,因此,仅根据页表检索块号是不能满足要求,必须对页表进行改造。在页表中增加页在外存的地址及其中断位。中断位用0或1表示,1表示该页不在内存中,0表示该页在内存中。除此之外,还需要增加表示该页是否被修改过的改变位和表示该页最近是否被访问过的引用位。
采用请求页式存储管理的页表完整格式为:
虚页号
主存储块号
中断位
改变位
引用位
外存地址
3、页面置换算法
采用请求页式存储管理时,在作业运行需要装入其它页,而存储空间已满时,则根据某种算法对页进行置换。页面置换算法需要避免“抖动”,即刚被置换的页不久又被访问,刚被访问后又被置换,产生对作业的同一个页面不停地进行访问和置换。常采用以下两种算法避免“抖动”。
l 先进先出置换算法
每此选取在内存中停留时间最长的页面进行置换。此算法简单,在按线性顺序访问页面时效益比较高。
l 最近最少使用置换法
选取最近一段时间内最长时间没有被访问的页置换。
4、请求页式存储管理方法的优缺点
优点:可实现内存的扩充,既实现虚拟存储技术,使作业的大小不受内存空间的限制。
内存利用率更高。
缺点:处理缺页中断对CPU的开销较大,是以时间换取空间。增加了系统的复杂性,特别是为避免“抖动”而采取了一些措施。页无独立含义,不利益共享。
2.3.6 分段存储管理
1、分段存储基本原理
将模块化程序的每个模块的地址空间划分为段,为每段分配一个连续的分区。在为段分配内存时,可采用最佳适应算法、首次适应算法、最佳适应算法等。
2、分段存储的数据结构
为了对段进行管理,系统为每个作业建立一个段管理表(Segment memory Table)SMT。
段表中记录的信息有:
段号
大小
起始地址
状态
3、段的地址转换
每条指令在内存中的物理地址由所其在段的起始地址和段内地址构成。即,
物理地址=段的起始地址+段内地址 见P132 图2.3.12
4、分段存储保护
将段号与段表长度,段内地址与段表中该段长度进行比较。合法,则进行地址转换,否则产生越界中断。
分段存储管理的优点:便于程序模块化处理和共享。
2.3.7 段页式存储管理
将分页与分段管理进行结合,形成了段页存储管理。其原理:
将作业地址空间按模块分成段,再将段分成页。将内存分成与页大小相同的页框,以页框为单位分配给作业。
在段页存储管理中,指令的逻辑地址由段号、页号、页内地址三部分构成。
作业由段表和页表管理。
地址转换:根据段号和页号,找到指令所在的页框,物理地址=页框的起始地址+页内地址。
见P132 图2.3.13
段页式存储管理具备段与页管理的优点,是一种灵活,应用最广泛的存储管理方式。
2.3.8 覆盖和交换技术
覆盖技术原理:将模块化的作业或程序分成段,段之间存在树状结构关系,只将根段常存储在内存中,其余放在外存中,只有调用时才调入内存。同层段共享一块内存。覆盖的单位为段。
交换技术原理:由于内存大小的局限,在分时和多道系统中,并不将所有作业都调入内存,只允许一个或几个作业停留在内存中,其余保存在外存中。在外的作业需要执行时,先将内存中某个作业移出内存,再将其调入内存,实现内外作业的交换。交换的单位为作业。
2.4 虚拟存储管理
2.4.1 基本原理
程序在执行过程中,所执行的指令和操作数具有局部性。局部性表现在时间局部性和空间局部性。
时间局部性:一次指令的执行及其对一个数据的访问和下一次的执行及其对数据的访问是在一个较短的时间内完成的。
空间局部性:当前指令与当前数据和即将执行与即将访问的数据,都集中在一个较小的空间区域内。
由于程序执行过程中存在局部性,因此并不需要将程序全部装入内存,只需要将当前需要执行部分装入就可以使程序运行。虚拟存储管理的过程就是将程序要执行的部分从外存调入内存,将暂时不需要执行的部分移出内存,保留在外存中。调入调出单位为页或段。
虚拟存储管理与覆盖技术相比,其优点是不需要用户考虑程序的结构,虚拟存储器对用户是透明的。
实现虚拟存储管理需要解决的问题是在什么时候,将外存中那一部分程序调入到内存中什么位置。同时将内存中哪一部分程序调出内存,如何保存。
实现虚拟存储的方法主要有请求分页、请求分段、请求段页三种。
2.4.2 请求分页存储管理
1、数据结构
对页表进行改造可得到请求分页存储管理所需要的数据结构。
虚页号
主存储块号
中断位
改变位
引用位(访问次数)
外存地址
2、页面调入策略
解决什么时候将一个页面由外存调入内存。常用的页面调入策略有两种:
请求时调入:只在缺页时调入所需要的页。实现简单,缺页中断次数多,时间开销大,容易产生“扰动”。即刚被置换的页不久又被访问,刚被访问后又被置换,产生对作业的同一个页面不停地进行访问和置换。
预调页:在发生缺页需要调入某页的同时,将与其相邻的几个页也一同调入。一般情况下,可以预测这几页可能马上运行。减少的访问次数和“扰动”,但算法复杂。
3、页面置换策略
解决将调入的页面放在内存中的位置。如果内存已满,将那些页面移出内存。
常用的页面置换策略有下三种
固定分配局部置换(Fixed Allocatiom,Local Replacement)
根据作业的大小,分配固定数量与位置的页框给作业,缺页时只从这些分配给作业的页框中挑选。作业在运行过程中,其内存空间不发生变化。
可变分配全局置换(Variable Allocatiom,Global Replacement)
为每一个作业分配一定数量的页框,系统保留一个一定数量的空闲页框。当出现缺页时,从空闲页框队列中分配给缺页作业。当空闲页框队列用完时,系统可以对任何一个作业从内存中选取一页调出。
可变分配局部置换(Variable Allocatiom,Local Replacement)
与固定分配局部置换相似,只是系统保留一个一定数量的空闲页框,当系统发现
展开阅读全文