计算机操作系统知识点归纳.docx
《计算机操作系统知识点归纳.docx》由会员分享,可在线阅读,更多相关《计算机操作系统知识点归纳.docx(21页珍藏版)》请在冰豆网上搜索。
计算机操作系统知识点归纳
操作系统的目标:
方便性,有效性,可扩充性,开放性
操作系统的作用:
作为用户和计算机硬件系统之间的接口,作为计算机系统资源的管理者,实现了对计算机资源的抽象
单道批处理系统的缺点:
系统的资源得不到充分的利用
多道批处理系统的优缺点:
资源利用率高,系统吞吐量大,平均周转时间长,无交互能力
需要解决的问题:
处理机争用问题,内存分配和保护问题,I/O设备分配问题,文件管理和组织问题,作业管理问题,用户与系统的接口问题
分时系统(满足人机交互的需求)特征:
多路性,独立性,及时性,交互性及时响应
实时系统的特征:
多路性,独立性,及时性,交互性,可靠性实时
实时任务的类型:
周期性实时任务和非周期性实时任务,硬实时任务和软实时任务
单用户多任务OS:
一个用户,把程序分为若干任务并发执行
多用户多任务OS:
多个用户,一台机器,共享资源UNIXOS
操作系统的四大特性:
并发,共享,虚拟,异步
并行与并发:
并行是多个事件在同一时间发生,并发是多个事件在同一时间间隔内发生(进程的引入:
多个程序并发执行,提高了系统资源利用率,增加了系统的吞吐量)。
进程同步与互斥;进程间的通信;死锁问题
互斥共享:
一段时间内只允许一个进程访问该资源
同时访问:
宏观上是同时的,微观上进程对资源的访问是交替的
时分复用技术:
虚拟机处理,虚拟设备
空分复用技术:
对存储空间的管理,提高利用率
OS具备的功能:
1.处理机管理:
进程控制,进程同步,进程通信,作业调度,进程调度
2.存储器管理:
内存分配(为每道程序分配内存,提高存储器利用率,允许正在运行的程序申请附加的内存)
内存分配方式:
静态:
不允许申请新的内存,不允许作业在内存中的移动
动态:
上面说的都允许
内存保护:
确保每道用户程序都仅在自己的内存空间内运行,决不允许用户程序访问操作系统的程序和数据
地址映射:
逻辑地址和物理地址,硬件支持
内存扩充:
逻辑上扩充内存容量(请求调入功能,置换功能)
3.设备管理
主要任务:
完成用户进程提出的I/O请求,为用户进程分配所需要的I/O设备,并完成指定的操作
提高CPU和I/O设备的利用率
应具有缓冲管理,设备分配,设备处理和虚拟设备(spooling技术)
4.文件管理
文件存储空间的管理,目录管理,文件的读和写管理和保护
操作系统与用户之间的接口:
1.用户接口:
联机用户接口,脱机用户接口,图形用户接口
2.程序接口:
为用户程序在执行中访问系统资源设置的,是用户程序取得操作系统服务的唯一途径
模块接口法的优缺点
优点:
提高OS设计的正确性、可理解性和可维护性
增强OS的可适应性
加速OS的开发过程
问题:
对各模块间的接口规定很难满足在模块设计完成后对接口的实际需求
决定的无序性
分层式结构OS在目标系统和逻辑系统之间铺设若干个参次的软件(自底向上)
优缺点:
易保证系统的正确性,易扩充和易维护性
系统效率降低(执行一个功能要穿越多个层次)
客户/服务器模式
优点:
数据的分布处理和存储,便于集中管理,灵活性和可扩充性,易于改编应用软件
微内核OS
并非一个完整的OS,有OS中最基本的部分,包含有:
与硬件处理紧密相关的部分,一些较基本的功能,客户和服务器之间的通信
基于客户/服务器模式
应用“机制与策略分离”原理
基本功能:
进程管理,低级存储器管理,中断和陷入处理
优点:
提高系统的可扩展性,增强系统的可靠性,可移植性强,提供了对分布式系统的支持,融入了面向对象技术
程序在顺序执行时的三个特征:
顺序性,封闭性,可再现性
程序在并发执行时的三个特征:
间断性,失去封闭性,不可再现性
进程的定义:
进程时程序的一次执行,是一个程序及其数据在处理机上顺序执行时所发生的活动,是具有独立功能的程序在一个数据集合上运行的进程,他是系统进行资源分配和调度的一个独立单位
进程的特征:
动态性,并发性,独立性,异步性
进程的三种基本状态:
就绪(Ready)状态,执行(Running)状态,阻塞(Block)状态
创建状态:
如果进程所需的资源不能得到满足,进程不能被调度,此时为创建状态
终止状态:
自然结束,被其他有终止权的进程终结,出现无法克服的错误,被操作系统终结
挂起操作的引入:
终端用户的需要,父进程请求,负荷调节的需要,操作系统需要
引入挂起操作之后三个进程可能会有以下几种状态转化:
活动就绪->静止就绪,活动阻塞->静止阻塞,静止就绪->活动就绪,静止阻塞->活动阻塞
进程信息表(资源信息表)包含了资源或进程的标识,描述,状态等信息以及一批指针
OS管理的这些数据结构一般分为:
内存表,设备表,文件表和用于进程管理的进程表(进程控制块
PCB)
进程控制块(PCB)的作用
作为独立运行基本单位的标志,能实现间断性运行方式,提供进程管理所需要的信息,提供进程调度所需要的信息,实现与其他进程的同步与通信
进程控制块包含的信息:
1.进程标识符(外部标识符,内部标识符)
2.处理机状态
3.进程调度信息(进程状态,优先级,进程调度所需的其他信息,事件(进程状态发生改变的事件,如阻塞原因))
4.进程控制信息(程序和数据的地址,进程同步和通信机制,资源清单,链接指针(下一个PCB的首地址))
PCB的组织方式
1.线性方式线性表
2.链接方式队列
3.索引方式索引表
进程控制创建进程,终止已完成的进程,将无法继续运行的进程置于阻塞状态,运行进程的状态转换。
内核原语实现
操作系统内核
1.支撑功能:
中断处理,时钟管理,原语操作
2.资源管理功能:
进程管理,存储器管理,设备管理
进程的创建
进程的层次结构允许父进程创建子进程
进程图有向树
引起创建进程的事件用户登录,作业调度,提供服务,应用请求
进程的终止过程
1.根据被终止进程的标识符,从PCB中检索出改进程的PCB,从中读出该进程的状态
2.若被终止进程正处于执行状态,应立即终止改进程的执行,并置调度标志为真
3.如果有子孙进程,子孙进程也终止
4.将终止进程所拥有的全部资源归还给父进程或系统
5.将终止进程从所在队列或链表中移除
引起进程阻塞或被唤醒的事件:
1.向系统请求共享资源失败
2.等待某种操作的完成
3.新数据尚未到达
4.等待新任务的到达
阻塞是进程自身的一种主动行为进程通过阻塞原语block将自己阻塞
进程唤醒调用唤醒原语wakeup把被阻塞的进程从等待该事件的阻塞队列中移除,状态变为就绪,把PCB插到就绪队列中
临界资源打印机,磁带机。
进程间采用互斥方式
临界区每个进程访问临界资源的那段代码
同步机制应遵循的规则:
空闲让进,忙则等待,有限等待,让权等待
实现互斥的三种方法:
1.关中断:
在进入锁测试之前关闭中断,直到完成锁测试并上锁之后才能打开中断。
缺点:
关中断时间过长,影响系统效率,限制处理器交叉执行程序的能力
关中断方法不适用于多CPU系统
2.硬件指令测试并建立指令TS
3.对换指令
信号量机制
1.整型信号量:
资源数目的整型量S:
只能通过两个原子操作:
P、V操作
2.记录型信号量:
一种不存在的忙等机制增加一个进程链表指针list,链接上述所有的等待进程
3.and型信号量:
将进程在整个运行过程中需要的所有资源,一次性全部给进程,使用完后一起释放。
只要有一个资源未能分配给进程,其他的也不会给进程。
(要么全给,要么不给)
4.信号量集:
上述信号量每次只能对某类临界资源进行一个单位的申请或释放,当一次需要N个单位时,便要进行N次wait操作,这样不仅低效,而且会增加死锁概率。
为确保安全性,设置一个下限值,当所申请的系统资源低于下限值时,不予以分配。
信号量的应用:
1.实现互斥:
设置一个互斥信号量mutex,设其初值为1,然后将各进程访问该资源的临界区CS置于wait和signal之间。
wait(mutex);
临界区;
signal(mutex);
剩余区;
2.利用信号量实现前趋关系:
P1S1;signal(s).P2wait(s);S2
管程机制
管程:
用少量的信息和对资源的操作来表征该资源(管程的名称,局部于管程的共享数据结构说明,对该数据结构进行操作的一组过程,对局部于管程的共享数据设置初始值的语句)
利用管程实现同步,必须设置同步工具,如同步操作原语wait和signal
生产者-消费者问题
1.利用记录型信号量empty和full分别表所缓冲池中空缓冲区和满缓冲区的数量。
缓冲池未满,生产者便将消息送入缓冲池,缓冲池未空,便从其中取走一个消息
2.利用AND信号量Swait(empty,mutex)代替wait(empty)和wait(mutex)等
3.利用管程。
首先建立一个管程,其中包括两个过程put(x)生产者把自己生产的东西投入到缓冲池中,并用cnt记录产品数量,get(x)取产品,同理。
还有cwait/csignal(condition)。
管程给占用时,其他进程相调用就阻塞。
哲学家进餐问题
1.记录型信号量筷子是临界资源,一个信号量表示一个筷子,组成一个信号量组,初始值为1
2.AND型信号量要求每个哲学家先获得两个临界资源后方能进餐
读者-写者问题
1.记录型信号量互斥信号量Wmutex整型变量Readcount表示正在读的进程数目。
只要有一个在读,便不允许writer去写。
2.利用信号量集允许L个读者同时读,执行wait(L,1,1)表示有一个读者进入,L=L-1
进程通信(进程间的信息交换)
1.共享存储器系统,相互通信的进程共享某些数据结构或共享存储区
2.管道通信系统,所谓管道是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。
以字符流形式送入管道,又从管道中读取,首创于UNIX
需要有三个协调能力
互斥:
一个在用,另一个等待
同步:
写进程把数据送入管道后就去睡觉,别人取走后再醒来工作。
读进程想来取数据发现是空的也要去睡觉,有数据后再醒来取。
确定对方是否存在:
确认对方存在后才能进行通信
3.消息传递系统(高级通信方式):
以格式化的消息为单位,将通信数据封装在消息中。
4.客户机-服务器系统
套接字网络通信接口
远程过程调用
消息传递通信的实现方式
1.直接消息传递系统发送进程利用OS所提供的发送命令(原语)直接把消息发给目标进程
对称寻址方式send(P1,message)receive(P1,message)
非对称寻址方式send(P,message)receive(id,message)
单机系统环境一般采用定长消息格式,以减少对信息的处理和存储开销
变长消息,方便用户
进程在消息的发送和接受后存在两种可能性:
继续发送/接收货阻塞
为使发送进程和接收进程间能通信,在两者之间建立一条通信链路。
两种方式(自建后消除,系统建)
2.信箱通信
信箱定义为一种数据结构,由信箱头和信箱体构成
系统为信箱提供的原语:
信箱的创建和撤销,消息的发送和接收
由操作系统或用户创建
信箱分为私有,公有,共享信箱
消息缓冲对列通信机制
数据结构:
消息缓冲区,PCB中有关通信的数据项
发送进程在发送消息之前要把待发送的消息正文,发送进程标识符,消息长度填入发送区。
发送原语根据长度申请一缓冲区,把发送区的信息复制到缓冲区,然后挂在消息队列上。
接收进程从自己的队列中摘下缓冲区,复制。
线程(调度和分派的基本单位)(进程是爸爸,线程是儿子们)
区别:
进程和线程的区别:
(a)不同进程的地址空间是独立的,而同一进程内的线程共享同一地址空间。
(b) 在引入线程的操作系统中,进程是资源分配和调度的单位,线程是处理机调度和分配的单位,资源是分配给进程的,线程只拥有很少资源,因而切换代价比进程切换低。
引入线程是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性
线程的三种状态同进程
线程控制块TCB
多线程OS中的进程具有以下属性
1.进程是一个可拥有资源的基本单位
2.多个线程并发执行
3.进程已不是可执行的实体,线程才是调度和分派的基本单位
开个QQ,开了一个进程;开了迅雷,开了一个进程。
在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程。
所以运行某个软件,相当于开了一个进程。
内核支持线程KST
优点:
1.在多处理器系统中,内核可以同时调度一个进程中的多个线程并执行
2.如果进程中的一个线程阻塞,内核可以调度该进程中的其他线程占有处理器或运行其他进程的线程
3.内核支持线程具有很小的数据结构和堆栈,线程切换快,切换开销小
4.内核本身也可以采用多线程技术,可以提高系统执行速度和效率
用户级线程ULT
用户空间实现,无需内核支持
优点:
1.线程切换不需要转换到内核空间
2.调度算法可以是进程专用的
3.用户级线程的实现与OS平台无关,所有的应用程序都可以共享
缺点:
1.系统调用的阻塞问题
2.进程中只有一个线程可以执行
内核支持线程的实现:
系统创建一个新进程时,便为它分配一个任务数据区PTDA,其中包括若干个线程控制块空间
用户级线程的实现:
1.运行时系统:
管理和控制线程函数的集合。
所有函数都驻留在用户空间,并作为用户级线程与内核之间的接口
2.内核控制线程(轻型进程LWP):
用户级线程运行时只需将它连接到一个LWP上,LWP可通过系统调用来获得内核提供的服务
线程的创建和终止
应用程序在启动时,初始化线程在执行,主要功能用于创建新线程
创建新线程时,需要一个线程创建函数或系统调用,并提供相应的参数。
创建完后返回一个线程标识符。
终止线程通过调用相应的函数进行终止操作。
有些线程(主要是系统线程),一旦被建立起来后,便一直运行下去不被终止。
在大多数的OS中,线程被终止并不立即释放所占有的资源,只有当进程中的其他线程执行了分离函数,资源才分离
调度的实质是一种资源分配。
处理机调度的三个层次(高级调度,中级调度,低级调度)
处理机调度算法的共同目标
1.资源利用率。
2.公平性。
所有进程都获得合理的CPU时间,不会出现饥饿现象。
3.平衡性。
为使系统中的CPU和各种外部设备都能经常处于忙碌状态,要保持系统资源使用的平衡性。
4.策略强制执行。
即使造成某些工作的延迟也要执行
批处理系统的目标
1.平均周转时间短。
周转时间和平均周转时间都要短
周转时间=作业完成时间−作业提交时间
带权周转时间=周转时间/服务时间
2.系统吞吐量高。
单位时间内系统所完成的作业数与批处理作业的平均长度有关。
比如单纯为了提高系统吞吐量,就选短作业运行
3.处理器利用率高。
分时系统的目标响应时间快均衡性
实时系统的目标截止时间的保证可预测性
在多道批处理系统中,作业被输入设备输入到磁盘存储器中,并保存在一个后背作业队列中,再由作业调度程序将其从外存调入内存。
作业
运行的三种状态收容状态,运行状态,完成状态,(后备状态)
作业步(JobStep)
作业控制块(JCB)作业在系统中存在的标志,包含:
作业标识,用户名称,用户账号,作业类型(CPU繁忙型,I/O繁忙型,批量型,终端型),作业状态,调度信息(优先级,作业运行时间),资源需求(预计运行时间,要求内存大小),资源使用情况
作业调度的主要任务:
根据JCB中的信息,检查系统中的资源是否满足作业对资源的需求,以及按照一定的调度算法,从外存的后备队列中选取某些作业调入内存,并为他们创建进程,分配必要的资源,然后将新创建的进程安排在就绪队列上等待调度。
每次执行作业调度时的两个决定:
接纳多少作业和接纳哪些作业
先来先服务(FCFS)调度算法
按照作业到达的先后次序或在队列中等待时间最长的作业。
调入内存,分配资源和创建进程,放到就绪队列中。
短作业优先调度算法
作业越短优先级越高作业的长短是以作业所要求的运行时间来衡量的
缺点:
必须预知作业的运行时间
对长作业非常不利,长作业的周转时间会明显增加
采用SJF算法时,人机无法实现交互
未考虑作业的紧迫程度
优先级调度算法
基于作业的紧迫程度,从外部赋予作业的优先级。
高响应比优先调度算法
优先级又相当于响应比
进程调度的任务:
保护处理机的现场信息,按照某种算法选取进程,把处理器分配给进程
进程调度机制:
排队器(将进程插入到相应队列),分派器(根据调度程序选择进程,从就绪队列取出,把处理机分配给新选出的进程),上下文切换器
进程调度方式
1.非抢占方式
一旦把处理机分配给某进程后,不会因为时间中断或任何其他原因去抢占当前正在运行进程的处理机,直到进程完成,或发生某事件而阻塞时,才把处理机分配给其他进程。
2.抢占方式
根据某种原则暂停正在执行的进程。
现代OS广泛采用抢占方式,因为抢占方式可以防止一个长进程长时间占用处理机。
分时系统中只有采用抢占方式才能实现人机交互。
实时系统中,抢占方式能满足实时任务的需求,但抢占方式比较复杂,所需付出的系统开销比较大。
轮转调度算法(RR算法)
系统将所有就绪的进程按FCFS的策略排成一个就绪队列。
系统设置每隔一定时间便产生一次中断,去激活进程调度程序进行调度,把CPU分配给队首进程,并令其执行一个时间片,运行完毕后,把处理机给就绪队列中的新的队首进程,也执行一个时间片。
若一个时间片尚未用完,正在运行的进程已经完成,立即激活调度程序,把它从就绪队列中删除,再调度就绪队列中队首的进程运行。
若时间片用完,进程还没完,则先把它送到队列末尾。
优先级调度算法
把处理机分给就绪队列中优先级最高的进程
非抢占式优先级调度算法抢占式优先级调度算法
优先级的类型
静态优先级创建进程时确定保持不变
确定优先级大小的依据:
进程类型,进程对资源的需求,用户要求
动态优先级随进程的推进或等待时间的增加而改变
多级反馈队列调度算法
1.设置多个就绪队列
2.每个队列都采用先来先服务算法。
若进程在一个时间片没有完成,调度程序将其转入第二队列的末尾等待,如果再未完成,以此类推。
如果被降到最后一个队列,则最后一个队列采用的是RR方式运行
3.按队列优先调度即第一队列的优先级大于第二队列等
当1~i-1的队列为空式,才会调度i队列中的进程。
如果中途有优先级更高的队列里有进程,此时会立即把运行的进程放到i队列末尾,把处理机分配给刚来的。
如果规定好第一个时间片略大于大多数人机交互所需处理的时间,便能满足终端型用户,长、短批处理作业用户
保证调度算法没有优先级如保证每个进程都获得相同的处理机时间
公平分享调度算法分配给每个进程相同的处理机时间
实时调度
1.基本条件:
提供就绪时间,开始截止时间或完成截止时间,处理时间,资源要求,优先级
2.系统处理能力强假设有m个周期性任务,他们的处理时间为Ci,周期时间表为Pi,必须满足
提高处理能力:
一是采用单处理机系统,但必须增强其处理能力,以显著的减少每一个任务的处理时间。
二是采用多处理机系统,则
即可。
3.采用抢占式调度
4.具有快速切换机制
面对中断的快速响应能力禁止中断的时间间隔短
快速的任务分派能力系统中的每个运行功能单位要小
根据实时任务性质,分为硬、软实时调度算法
根据调度方式,分为非抢占调度算法(****轮转调度算法,****优先调度算法)和抢占调度算法(基于时钟中断的,立即抢占的)
最早截止时间优先EDF
最低松弛度优先LLF
优先级倒置
高优先级被低优先级进程延迟或阻塞
解决方法:
规定一个进程进入临界区后,处理机不允许被抢占
死锁在一组进程发生死锁的情况下,这组死锁进程的每一个进程都在等待另一个死锁进程所占有的资源
引起死锁主要是采用互斥访问方法,不能被抢占的资源
可重用性资源
每一个可重用性资源中的单元只能分配给一个进程使用
进程使用顺序:
请求资源(失败会被阻塞或循环等待),使用资源,释放资源
系统中每一类可重用性资源中的单元数目是相对固定的,进程在运行期间不能创建也不能删除它。
可消耗性资源临时性资源
由进程动态地创建和消耗
可抢占性资源顾名思义
不可抢占性资源不能强行收回,只能进程用完后自行释放
竞争不可抢占性资源引起死锁数量不够
竞争可消耗资源引起死锁通信时的死锁
进程推进顺序不当引起死锁两个持有资源的并发进程想相互访问
产生死锁的必要条件
互斥条件请求和保持条件不可抢占条件循环等待条件
处理死锁
1.预防死锁破坏必要条件中的一个或几个
互斥条件不能破坏只能破坏后面的
(1)破坏请求和保持条件
系统保证做到一个进程在请求资源时他不能持有不可抢占资源
第一种协议:
所有进程在运行开始前必须一次性申请全部资源
第二张协议:
只获得初期所需的资源,后面逐步释放,然后再请求
(2)破坏不可抢占条件
当一个已经保持了某些不可被抢占资源的进程,提出新的资源请求而不能满足时,必须释放已经保持的所有资源,以后需要再申请。
(3)破坏等待条件
对所有资源类型进行线性排序,并赋予不同的序号
3.避免死锁在资源动态分配过程中,防止系统进入不安全状态
安全状态系统不会死锁不安全系统可能会死锁
4.死锁检测算法保持资源的请求和分配信息
根据死锁定理消去资源分配图中的所有边即无死锁
5.死锁的解除
从一个进程或多个进程抢占资源给死锁进程
终止所有死锁进程
逐个终止进程付出代价最小的死锁解除算法
存储器的多层结构
最高为CPU存储器中间为主存最底层为辅存
主存(内存、可执行存储器)保存进程运行时的程序和数据辅存的高速缓存
寄存器与处理机速度相同
高速缓存介于寄存器和存储器之间减少CPU对主存的访问次数
磁盘缓存并不实际存在缓和磁盘和主存速度上的不匹配
用户程序变成可执行程序:
编译链接装入
程序的装入
1.绝对装入方式:
用户程序经编译产生绝对地址(物理地址)适合系统小只能运行单道程序
2.可重定位装入方式相对于起始地址不允许移动多道程序
3.动态运行时装入方式同上面的但是可以移动
程序的链接
1.静态链接
2.装入时动态链接
边装入边链接在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,并将它装入内存。
优点是便于修改和更新、便于实现对目标模块的共享。
3.运行时动态链接
将可能要运行到的模块全部装入内存,并在装入时全部链接在一起。
比如错误处理用的目标
连续分配存储器管理方式
1.单一连续分配在用户去内存中,仅装有一道用户程序,即整个内存的用户空间由该程序独占。
2.固定分区分配分区大小相等大小不等
按大小排序分区记录表记录分区使用情况
3.动态分区分配分区空闲表分区空闲链
动态分区分配算法
分区分配操作系统从空闲分区表找到所需要大小的分区
回收内存
当回收区与插入点的前一个空闲分区F1相连接,将回收区与F1合并,修改F1的大小,地址为F1
若与后一个,也合并,改回收区大小,地址为回收区
若与插入区前后两个空闲分区相连,合并三个,取前一个为首地址
若谁都不相连,为回收区建立一个新的表项
基于顺序搜索的动态分区分配算法
1.首次适应算法FF
要求空闲分区链以地址递增的次序链接,内存分配时,按顺序查找,找到第一个满足的就分配这个方法最有可能使得高地址空间成为大的空闲区