OS基本内容总结.docx
《OS基本内容总结.docx》由会员分享,可在线阅读,更多相关《OS基本内容总结.docx(26页珍藏版)》请在冰点文库上搜索。
OS基本内容总结
●OS(OperatingSystem)地位、作用和定义
定义:
操作系统是控制应用程序执行的程序,并充当应用程序和硬件间的接口。
操作系统是最基本的系统软件。
它控制计算机的所有资源,并提供应用程序开发的基础.
作用:
研究操作系统的几种观点:
系统观点:
作为资源管理器的操作系统
操作系统的主要任务:
满足资源使用请求;记录资源使用情况;协调各个程序和用户对资源使用请求的冲突.
用户观点:
作为扩展机的操作系统
为用户提供一台等价的扩展机,或称为虚拟机,它比底层编程更容易编程。
●OS分类和发展历史
⏹批处理、分时、实时、通用、多处理、网络(了解各自的特征和适用场合)
无操作系统时代/第一代计算机:
使用真空管和插件板;无任何软件和操作系统
单道批处理系统/第二代计算机
目标:
减少机时的浪费
单道批处理系统的问题:
内存利用率低;CPU利用率低
多道批处理系统/第三代计算机
基地址寄存器和界限寄存器;多道程序设计
多道批处理系统的问题:
响应时间不确定;不同调度算法,不同结果
分时系统
每个用户拥有一个终端;n个用户同时申请任务,给每个用户1/n有效的处理器速度
实时系统
对处理器操作或者数据流动有严格的时间要求时使用.
硬实时系统:
保证关键实时任务按时开始或者按时完成
软实时系统:
关键实时任务的优先级高于其他任务的优先级,并在完成之前保证它的最高优先级
●OS特征
并发
并行:
两个事件在同一个时刻发生
并发:
两个事件在同一个时间间隔发生
共享:
互斥的共享方式;同时访问方式
虚拟
异步性:
内存中程序何时执行、何时暂停、需要多少时间完成都是不可知的
●OS功能
处理器管理的功能;存储管理的功能;设备管理的功能;文件管理的功能;用户接口
●一些概念
⏹监控程序(monitor)、多道程序系统、多处理系统
⏹引入多道程序设计的目的
●什么是双重操作模式?
为什么要引进双重操作模式
⏹系统态、用户态以及转换的条件
⏹特权指令和非特权指令
●用户与OS的两种接口:
定义和功能
命令接口:
由一组键盘操作命令和命令解释程序组成;DOS
程序接口:
为了用户程序访问系统资源而设;用户程序获取操作系统服务的唯一途径;系统调用;WindowsAPI
图形用户接口(GUI)
●系统调用(SystemCall):
定义、功能
用户对操作系统提出的服务是由系统调用来实现的,它提供了进程与操作系统之间的接口。
●操作系统的结构有几种?
各自的特点?
整体式结构
操作系统是一系列过程的集合,只要需要就可以相互调用。
层次式结构
层次式系统的各种功能可以划分为几个层次,每个层次建立在下面的层次之上。
优点:
模块化
缺点:
对层的定义并且相对效率差
C/S结构
把原本属于操作系统内核的功能放到内核的外部,使内核成为一个微内核。
操作系统的微内核之外的进程是服务器进程,用户进程是客户进程;微内核实现消息的传递
优点:
易于维护;易于扩充;适用于分布式系统
虚拟机结构
虚拟机监控器运行在硬件系统上,提供多道程序的功能,并为上一层提供虚拟机。
虚拟机是硬件的完全拷贝,包括真实机器中的内核模式、用户模式、I/O、中断等.
优点:
提供了安全层;允许进行系统开发而不必中断正常的系统操作
⏹陷阱(trap)与中断(interrupt)的区别
中断:
由硬件引起的中断,例如时钟中断
陷阱:
是因为错误/用户程序的特定请求而引起的软件生成中断,又称软中断,例如系统调用
●进程(Process)
⏹定义、特征、作用
定义:
进程指一个正在执行的程序,包括程序计数器、寄存器和变量的当前值.
⏹程序顺序执行、并发执行的特点
⏹进程与程序的区别与联系
进程不只是程序代码,还包括当前的活动以及堆栈段和数据段
程序是被动的实体,进程是活动的实体
⏹进程状态(三状态和五状态)及其转换
三状态:
就绪状态;运行状态;等待状态
五状态:
新状态:
进程正在被创建.
就绪状态:
只要有机会获得CPU就能够开始执行。
运行状态:
进程正在执行.
等待状态:
等待某个事件发生。
终止状态:
进程已经完成或者被迫终止。
⏹进程控制块PCB(ProcessControlBlock):
作用及其内容
为了实现进程模型,操作系统维持着一张表格,从数据结构上看就是一个结构数组,也就是进程表。
每个进程占用一个表项,就是每个进程的进程控制块。
●进程控制
⏹主要功能;创建、撤销、挂起、唤醒、阻塞、激活等原语所需完成的功能;了解fork()和exec()的工作原理
创建
进程在执行过程中通过系统调用创建进程。
如果一个进程创立了另一个进程,则前者称为父进程,后者称为子进程。
一个进程只有一个父进程,但是可以有零个或多个子进程。
因此,进程和进程之间会形成一个进程树。
终止/撤销
进程终止自己(自愿的):
使用exit系统调用;父进程使用wait系统调用得知终止进程的进程号
父进程终止子进程(非自愿的):
使用abort系统调用,传入子进程ID号
操作系统终止进程(非自愿的):
引用不存在的内存,除以零;级联终止:
父进程终止,子进程只好终止,此操作由操作系统进行
阻塞
原因:
请求系统服务;启动某种操作;新数据尚未到达;无新工作可做
操作:
进程通过调用阻塞原语block将自己阻塞,进入等待队列,进程的状态变成等待
唤醒
原因:
被阻塞的进程等待的事件到来
操作:
相关进程调用唤醒原语wakeup将对方唤醒,被唤醒的进程进入就绪状态
fork
父子进程从fork之后分别执行.父进程执行fork后返回子进程ID。
子进程执行fork后返回0.
exec
用新的程序代码代替父进程给定的代码.
●进程通信的几种方法
⏹消息队列、共享内存
为了能让消息成功地发送,消息总是驻留在临时的队列中,称为消息队列
零容量:
发送必须阻塞直到接收者收到消息
有限容量:
如果队列不满,发送可以把消息放在队列中,不必等待;如果队列满,发送必须阻塞等待队列可用
无限容量:
发送从不阻塞
●进程同步与互斥
⏹概念:
临界资源、临界区、信号量、同步、互斥、进程间的制约关系(直接、间接)
Send和receive可以是阻塞的(称为同步),也可以是非阻塞的(称为异步)。
阻塞send,阻塞receive:
发送者和接收者被阻塞直到完成消息交付;也称作会合/集合点
无阻塞send,阻塞receive:
发送者连续处理,例如尽快地发送消息;接收者被阻塞直到所需的消息到达
无阻塞send,无阻塞receive:
不要求任何一方等待
●互斥(mutualexclusion)问题
如果有进程在临界区中执行,那么其他进程都不能在临界区中执行。
这样就可以避免竞争条件的产生。
有空让进;有限等待;不对进程的相对执行速度进行任何假设
⏹准则
⏹实现方法:
硬件、信号量(软件方法不要求)
硬件:
屏蔽中断
进入临界区之前关中断,离开之后开中断:
现代操作系统是中断驱动的,没有了中断操作系统就失去了控制系统的能力;只有一个CPU的时候有效
系统提供了特殊硬件指令允许原子地检查和修改字的内容或者交换两个字。
原子操作:
TestAndSet(TS指令);Swap(XCHG指令)
互斥锁:
实现互斥的软件工具,也称自旋锁.底层用TestAndSet或Swap指令实现:
acquire()release()
●信号量(Semaphore)
⏹定义、含义、操作(初始化,P,V)
定义:
信号量S就是一个整数变量;在S上可以执行两个原子操作:
wait(S)signal(S)
分类:
计数信号量CountingSemaphore:
整数值可以是任何整数值;
二元信号量BinarySemaphore:
取值只能是0或者1;与互斥锁类似
●进程同步与互斥问题
⏹生产者与消费者
一或多个生产者产生数据并放在缓冲区中,每次一个;一或多个消费者从缓冲区取数据项并消费,每次一个
条件:
在任意时间只能一个生产者或消费者访问缓冲区-—互斥;保证生产者不能向满缓冲区中放产品;保证消费者不能从空缓冲区中取产品
semaphoren=0;
semaphores=1;
semaphoree=N;
voidproducer(){
while(true){
a=produce();
wait(e);
wait(s);
put(a);
signal(s);
signal(n);
}
}
voidconsumer(){
while(true){
wait(n);
wait(s);
a=take();
signal(s);
signal(e);
consume(a);
}
}
用管程实现:
●死锁
⏹掌握解决死锁的方法:
预防、避免、检测
⏹掌握银行家算法:
如何判别安全性
定义:
两个或多个进程无限地等待一个事件,而这个事件只能由这些等待进程之一来产生/
如果一个进程集合中每一个进程都在等待只能由本集合中的另一个进程才能引发的事件,则称这种状态为死锁。
产生原因:
使用排他的资源
资源分成两种类,可剥夺式资源:
可以从拥有资源的进程中剥夺资源而不会产生副作用;非剥夺式资源:
若从拥有这类资源的进程处剥夺资源会导致失败
使用一个资源的顺序是:
申请资源—>使用资源—〉释放资源
进程在申请资源时,如果失败,则进程阻塞。
必要条件:
互斥:
一个资源同时只让一个进程使用
拥有并等待:
进程在拥有一个资源时又申请另一个资源,并等待分配给它。
资源不可抢占:
分配给一个进程的资源是不可抢占的,只能由占有它的进程释放
环路等待:
进程和资源之间存在一个拥有和需求的闭环
忽略该问题;死锁检测并恢复;仔细检查动态资源分配来避免死锁;破除四个条件之一,用来预防死锁的产生
预防:
预先在系统实现时就把死锁排除
直接预防:
预防第四个产生死锁条件的方法
间接预防:
预防前三个产生死锁的条件的方法
预防拥有并等待:
让进程一次将所有的资源需求提出;操作系统要么一次性将所有的资源分配给进程,要么阻塞进程执行
缺点:
进程可能正等待所有需求被满足,而实际上只需要一部分资源就能执行下去;进程在执行时拥有所有资源,导致一些资源长期占用不使用,而其他进程也不能使用这些资源;在多模块或多线程应用中,一次提出所有资源的需求会有困难。
预防不可剥夺资源:
只在资源的状态很容易恢复时才可以使用,对于像打印机这样的资源则不好使用
预防环路等待:
定义一个资源类型的线性顺序来解决这个问题。
如果一个进程已经分配了R类型的资源,则只能再申请R类型以后的类型的资源。
问题在于这种线性顺序很难确定。
避免:
中心思想:
允许前三个条件的发生,但不允许最后一种机制来防止到达死锁的状态。
死锁的避免要求欲知将来进程的需求.
银行家算法:
这种算法与早期的银行贷款的方法相似.银行中只有固定数目的资金可以借贷给顾客。
银行如果认为不能有足够的资金贷给顾客以满足顾客的所有要求,而使顾客可以全部偿还的话,就拒绝给这个顾客贷款.
状态:
系统中分配给进程的资源的状况,由Resource、Available向量和Max、Allocation、Need矩阵组成。
安全状态指至少有一个进程执行顺序会让所有进程安全地执行完而不会导致死锁的状态,非安全状态与安全状态相反。
死锁避免策略:
保证进程和资源总是处于安全状态.如果一个进程要求的资源在分配给它以后,系统仍处于安全状态,则分配给它.否则阻塞这个进程直到可以达到安全为止。
银行家算法分析:
要求事先提出进程对资源的所有需求(无法提出);进程的个数是确定的(进程个数会变化);资源的个数也是确定的(资源可能会失败)
检测:
中心思想:
死锁的检测方法并不限制对资源的访问;进程可以在可能的情况下获得它所需要的资源,只是检测死锁是否存在;如果存在,则想办法恢复
对于死锁的检测可以在以下两种情况下执行:
在每次进行资源分配后进行;定期检测死锁
死锁检测算法:
使用Allocation矩阵和Available向量;需求矩阵request,定义qij代表进程i对资源j的请求数目;这个算法通过标记没有死锁的进程来执行;初始时,所有进程都没有标记。
算法步骤:
(1)只要在Allocation矩阵中一行的值都是0,标记此进程。
(2)初始化一个临时向量w,另Available—〉w。
(3)找一个索引i,保证进程Pi没有被标记,且对于1〈=k<=m,有Requestik如果没有这样的Pi,算法结束。
(4)如果找到Pi,则标记i,并执行w=w+Ai,转去执行(3)
●调度的几种类型
⏹长程调度、中程调度、进程调度
调度程序用于选择进程。
长期调度/作业调度:
负责从进程池中选择进程进入内存/从存储设备的缓冲池中选进程进入内存执行;执行频率低(几分钟一次);可控制多道程序设计的程度,对I/O为主的进程和CPU为主的进程组合以保证CPU和外设的有效使用
中期调度:
从换出到外存挂起的进程中选择进程进入内存/将进程换入换出(交换)以降低多道程序设计的程度
短期调度/CPU调度:
从就绪队列中选择进程进入CPU执行;执行频率高(100ms至少一次)
●调度队列
就绪队列;设备队列:
等待I/O设备的进程队列;排队的信息在PCB中保存
●可剥夺调度和不可剥夺调度/抢占式调度和非抢占式调度:
定义和特点
抢占式调度:
可以将进程暂时终止执行的策略。
非抢占式调度:
一旦一个进程进入运行状态,它会一直执行,直到它阻塞、进行系统调用或执行完。
抢占式调度的系统开销要大于非抢占式调度。
但是抢占式调度对于整个系统的进程服务要好,因为它可以防止独占处理器。
●调度算法的性能评价准则
批处理系统:
周转时间(进程的结束执行的时间与进程到达系统的时间的差值)很重要,越接近进程实际执行的时间,调度的效率就越高。
分时系统:
响应时间短很重要
●调度程序(Scheduler)的功能、时机;
在系统中,当有多个进程处于就绪状态时,操作系统必须决定先运行哪一个进程。
在操作系统中,决定选择哪个就绪进程去CPU运行的部分称为调度程序;它所使用的算法称为调度算法.
发生时机:
进程从running到waiting;进程从running到ready;进程终止;进程从waiting到ready
●调度算法:
⏹FCFS、SJF、RR、优先级、多级队列、多级反馈队列、HRRN—优点和缺点、适用场合
⏹要求会计算:
调度顺序、周转时间、平均周转时间
FCFS调度算法:
非抢占式调度;选择就绪队列中等待最长时间的进程
评价:
FCFS算法对长进程有优势;FCFS算法更利于多处理器处理的进程,而不利于多I/O处理的进程.
SJF(最短作业优先)算法:
可以是非抢占式调度,也可以是抢占式调度;选择下一个期望最短处理时间的进程执行。
缺点:
需要知道或者估计出进程会执行多长时间;可能使长进程产生饥饿;因为没有剥夺,所以不适合在实时系统中实现。
HRRN(高响应比优先)算法:
响应比=(A+B)/BA:
等待处理器的时间B:
期望服务的时间
非抢占式算法;调度响应比高的进程;优点在于考虑到等待处理器的时间;需估计进程的执行时间
RR(时间片轮转)算法:
抢占式调度算法;时钟每隔一段时间产生一个中断;运行状态的进程进入就绪状态;用FCFS方法从就绪队列中选择一个进程去执行
时间片长短的讨论:
太短,开销大;太长,变成FCFS
优先权算法:
非抢占式调度算法;调度优先级最高的进程;防止高优先级的进程总占用处理器:
动态优先级
多级队列调度:
将优先级调度和时间片轮转算法相结合:
将进程按优先级分为若干类;各个类之间用优先级调度;同一优先级之间用时间片轮转调度
多级反馈队列调度:
可抢占式算法
方法:
有多个队列优先级从高到低;进程刚进入系统,进入RQ0;执行完一个时间片,进入RQ1;..。
;只有最低优先级的队列是按RR方法调度
缺点:
长进程可能会产生饥饿
优化:
为防止长进程饥饿,根据队列的优先级的高低来分配时间片的长度,RQi队列的进程的时间片长度是2i。
仍然可能导致长进程产生饥饿,补救方法:
当一个进程在当前队列中等待服务的时间达到一定的长度后,就进入高一级的队列中去。
●什么是线程?
为什么要引进线程?
线程又称为轻量级进程(LWP),是进程内的一条运行线;是使用CPU的基本单元;由线程ID、程序计数器、寄存器集合和堆栈组成;属于同一进程的线程共享进程的代码段、数据段和其他操作系统资源。
响应度高:
一个进程中一个线程的阻塞不会导致整个进程的阻塞
资源共享:
同属一个进程的多个线程共享这个进程的所有资源
通信简单
经济:
创建进程所需内存和资源分配比较昂贵,但创建线程相对好些;线程切换比进程切换所需资源少
多处理器体系结构的利用:
可以利用多个CPU执行多个线程实现并行处理
●线程和进程的区别?
进程的特点:
进程是资源的拥有者;进程是调度的单位
线程的特点:
线程是调度的单位;进程是资源的拥有者
●线程的实现方式
⏹用户级线程和内核级线程
●存储器管理程序的功能
●逻辑地址、物理地址、地址重定位、地址映射的概念
CPU生成的地址是逻辑地址,程序生成的逻辑地址的集合是逻辑地址空间
内存单元的地址是物理地址,所有物理地址的集合是物理地址空间
逻辑地址向物理地址的转换过程就是重定位
●连续内存分配(固定分区、可变分区):
⏹原理、数据结构、地址变换、特点
⏹First-Fit,Best—Fit,Worst—Fit
固定分区:
把存储器分为大小相等的区。
所需空间小于等于分区大小的进程可以调入可用分区。
进程换入换出:
所有的分区都是满的;没有进程处于就绪状态或运行状态
特点
优点:
简单
缺点:
程序可能太大而不能放入一个分区:
程序员要设计一种覆盖的方法;主存的应用效率低:
小程序也要占用整个分区;限制了系统中可以激活的进程数目
因调入的数据小于分区而产生分区空间的浪费,称为内部碎片。
用不等长的分区来缓解,但不能根本解决。
放置算法
等长分区:
主存中只要有可用的分区,进程就可以调入到那个分区中;如果所有的分区都被不能执行的进程占用,则其中的一个进程会被换出以放入新进程
不等长分区:
将进程放置在它最适合的最小的分区中;将所有进程排在一个队列中,当该调入一个进程进入主存中时,就选择可用的且可以保存这个进程的分区
可变分区:
系统中分区的长度和数目是可变的。
当有进程进入系统时,从主存按一定策略划出一块与进程所需空间相等的区分配给进程。
特点
缺点:
一开始运行得很好,但是在执行一段时间后,会出现一些小的洞,这种在分区外的洞称为外部碎片。
需要用内存紧缩(紧凑)方法解决。
分配多大的内存给进程
简单方法:
按照需求的大小进行分配。
这样如果程序有可以动态增长的段,就有问题.解决方法是为进程分配一些额外的内存.
内存管理方法:
位图
将内存按一定大小划分成分配单位,每个分配单位对应位图中的一位;用0表示空闲,1表示使用(或者反过来);在内存大小确定的情况下,分配单位的大小决定了位图的大小。
内存管理方法:
链表
维护一个已分配和空闲内存段的链表。
每一个表项都有:
P或H表示是进程还是空闲区域、起始地址、段长度和指向下一个表项的指针。
●页式管理
⏹原理、数据结构、地址、地址映射过程、特点
⏹碎片(内碎片,外碎片),怎么产生,如何解决?
⏹紧缩
把主存分为定长的块,称为页框(帧);把用户进程也分为与主存的块大小相等的块,称为页;内部碎片只在进程的最后一页中发生,没有外部碎片;为页和页框分别编号,从0开始.
优点:
碎片小,节省存储器空间;分页对程序员是透明的
缺点:
共享和保护不容易实现;程序员不能按照自己的方式组织程序
地址映射过程:
①分页地址变换机构自动将逻辑地址分为页号和页内地址位移
②以页号为索引去查询页表,得到页框号
③页框号与页内地址位移相结合,获得物理地址
●段(segment)式内存管理
⏹原理、数据结构、地址组成、地址变换、特点
原理:
让存储器提供多个相互独立的空间,称为段;每个段由0到最大的线性地址构成;不同的段的长度不同,段的长度可以在运行期间改变。
优点:
共享和保护容易实现;程序员可以按照自己的方式组织程序
缺点:
有碎片,浪费存储器空间
●段页式内存管理
⏹原理、数据结构、地址组成、地址变换、特点
段页式管理是将用户的地址空间分段,段内按内存页框的大小分页。
逻辑地址由段号、段内页号和页内位移三部分组成.
操作系统在进行管理时,为每个进程维护一个段表和多个页表.页表的结构与页式管理中的页表一样,段表中包含的是页表的起始地址和页表的长度及其它控制位。
●覆盖与交换:
原理、特点、比较
覆盖:
在任何时候只能在内存中保留所需要的指令和数据,新的指令和数据可覆盖不用的指令和数据;不需要操作系统提供特别支持
例子:
two—pass汇编程序
交换:
在内存不足的情况下,需要把一个进程整个换入和换出,称为交换
交换空间的分配:
进程在被换出时分配交换空间,每次换到不同的位置;进程分配固定的交换空间
●虚拟存储器
⏹概念、原理、实现方法、理论基础(局部性原理)
⏹虚拟存储器的特征
概念:
虚拟存储器就是指仅把作业的一部分装入内存就可以运行作业的存储系统。
它具有请求调入功能和置换功能,是从逻辑上对内存容量进行扩充的一种存储系统。
CPU生成的地址是虚拟地址;内存单元的地址是物理地址;程序生成的虚拟地址的集合是虚拟地址空间;所有物理地址的集合是物理地址空间
局部性原理:
程序在执行时,除了少部分的转移和过程调用外,大多数情况下仍是顺序执行的。
过程调用会使程序的执行轨迹从一部分内存区域转至另一部分,但调用深度不会超过5。
即程序会在一段时间内局限在这些过程的范围之内运行。
程序中存在循环,由少数指令构成,但多次执行。
对数据结构的处理都局限于很小的范围内。
●请求页式管理
一个进程调入内存时只调入部分页;当需要的页面不在内存时,请求调入所需的页面;如果内存不足,可以把内存中的某个页面换出到外部辅存中
⏹基本原理
⏹什么是缺页中断、发生时机及处理过程
⏹置换策略(OPT、FIFO、LRU):
计算缺页次数、缺页中断率、判别是否有Belady异常
⏹逻辑地址到物理地址转换
●存储的共享与保护方法
●什么是TLB?
其作用?
描述带有TLB的地址转换过程
相联存储器
页表保存在内存中,每次要存取数据要两次访问内存:
访问内存中的页表,找页框号,形成物理地址;从第一次访问得到的物理地址中得到所需的数据
为了增加地址变换速度,可以在地址变换机构中,增加一个具有并行查询功能的特殊高速缓冲存储器,称之为相联存储器。
在IBM中又被命名为TLB(TranslationLookasideBuffer翻译后备缓冲),用来存放当前被访问的那些页表的表项。
●什么是Belady异常?
哪一种算法会产生?
为什么?
缺页率随页框分配数量的增加而增加
先进先出置换算法
替代的页可能会很快使用
●请求段式管理的原理
一个进程调入内存时只调入部分段:
当需要的段不在内存时,请求调入所需的段;如果内存不足,可以把内存中的某个或者某几个段换出到外部辅存中
●虚拟段页式
⏹原理
⏹地址转换
●什么是颠簸(抖动)?
为什么会出现?
当系统多道程度达到一定高度时再增加进程的数目,反而会使缺页率增加,系统的性能下降
CPU的时间都在进行页面的调入/调出,几乎不能完成任何有效操作,称系统颠簸或抖动.
●文件、目录、目录项、记录、域、文件管理系统、路径、当前路径
文件:
记录在外存上的具有名字的相关信息/记录的集合
域:
是数据的基本单位。
有自己的长度和数据类