资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1:操作系统的目标:提高资源利用率,提高系统吞吐量,使用户使用更方便,兼容新的计算机硬件和软件。2:操作系统的作用:用户和计算机硬件之间的接口,使用户方便的操纵硬件,计算机系统的管理者,对计算机资源进行抽象。3:计算机系统的发展:人工操作方式(穿孔卡片),单道批处理系统(每次只从磁盘中调入一个程序进内存),多道批处理系统(调入多个程序,CPU可以切换),分时操作系统(将一台主机给多个用户使用)实时操作系统(响应快,同时面对大量的远程终端)。4:操作系统特点:并发,共享,虚拟(空分,时分),异步。5:操作系统的功能:CPU管理(进程控制,同步,通信,调度),存储器管理(内存分配,内存保护,地址映射,内存扩充)设备管理(缓冲管理,设备分配,设备处理)文件管理(存储管理,目录管理,读写保护管理)接口(用户接口管理,程序接口管理)6:操作系统结构:模块化操作系统,分层式操作系统,C/S操作系统(分布式),微内核结构(建立在前三者的基础上,微内核只提高“最基本”的服务,进程调度、进程间通信、存储管理、处理I/O设备。其他服务,如文件管理、网络支持等通过接口连到微内核,微内核具有良好的移植性)。7:传统操作系统中,进程是资源分配和独立运行的基本单位。8:为了并发才引入进程。9:进程控制块PCB:是一个记录型数据结构,记录了操作系统所需的用户描述进程的当前状况和控制进程运行的全部信息,使一个在多道环境环境下不能独立运行的程序成为一个可以独立运行的基本单位。系统创建一个进程的时候就要顺带着创建PCB,OS要调用一个进程的时候就要先查看PCB,系统将PCB组织成若干个链队列或索引表,PCB中有进程标识符,处理机状态,进程调度信息,进程控制信息等。10:进程的特性:动态,并发,独立(独立运行,独立分配资源,独立接受调度),异步(不可预知的速度前进)。11:进程的三种基本状态:就绪,阻塞,执行(就绪到执行到阻塞再回到就绪,执行可以直接回到就绪),此外还有挂起,创建,终止。12:进程的创建:申请PCB,为新进程分配资源(子进程可以继承父进程,比如父进程打开的文件,和父进程的缓冲区等),初始化PCB,把新的进程插入队列。13:进程的终止:找出PCB,读出进程状态,若进程在执行,就终止进程,若进程有子孙进程,还要把子进程终止。收回资源,移出PCB。14:进程的阻塞:停止执行,PCB插入阻塞队列,CPU给另外一个就绪进程。15:进程的唤醒:从阻塞队列中移出,PCB插入就绪列队中。16:临界资源是指每次仅允许一个进程访问的资源,每个进程中访问临界资源的那段代码叫做临界区。17:整形信号量:用S表示资源数目,一个wait就资源减一,一个signal就资源加一。其中执行wait前 如果资源数小于0,就要一直等待下去,用while循环。18:记录型信号量:防止进程一直while而等待,记录型信号量先S-1,然后判断S如果小于0了就调用block阻塞。于是就会有很多进程被阻塞,于是创建一个进程链表指针,链接阻塞进程。19:AND型信号量:一个进程需要多个临界资源,AND信号量控制多个临界资源,只有当所有的临界资源的S都大于1的时候,才允许执行并所有的S都减一。20:信号量集:一个进程需要多个临界资源,而又有多个进程,信号量集就是为多个进程服务,只有这些进程都可以启动的时候才一起启动,每个资源都有不同的数量,所以有资源数目,需求数目,下限数目 si,ti,di.21:计算机把各种硬件和软件都用数据结构抽象的描述其资源特性,用少量信息和对资源所执行的操作来表征该资源,而忽略内部结构和细节特性。同样,共享资源也用数据结构来表示,代表共享资源的数据结构,以及由对共享数据结构实施操作的一组过程所组成的资源管理程序,就是管程,管程把数据结构包起来。只允许自己访问它,所有进程要访问临界资源都要通过管程。而管程每次只允许一个进程进入管程,从而实现进程互斥。22:生产者消费者问题:用一个数组代表n个缓冲区构成一个缓冲池,用mutex实现互斥,empty表示缓冲池中空缓冲区的数量,full表示满缓冲区的数量。生产者方面,先wait(empty),一定要等到empty0了,才执行empty-,才能执行下一句wait(mutex),当缓冲池中没人,mutex=1,于是通过,生产者把货物放进缓冲池,缓冲区数组下标加1,然后释放signal(mutex),然后signal(full)加1。消费者就是先wait(full),然后wait(mutex),然后数组下标-,然后释放mutex和empty。23:哲学家进餐:第i位哲学家要用到第i个筷子和第i+1个筷子,有多少个筷子就会有多少个信号量,用信号量数组来表示,第i个哲学家,要wait(si)wait(si+1) 。然后吃,然后释放两个信号量。24:读者写者问题:只要有一个reader,writer就不允许。设置两个信号量rmutex(表示有rmutex个人可以同时读)和wmutex,和readcount,readcount等于0的时候才允许写。读者方面:首先wait(rmutex),通过后要做一个判断readcount=0,如果等于0,说明可能有进程在写,那么再wait(wmutex)(也就是说,如果有进程在写,就会导致wmutext等于0,那么这个wait就会阻塞),一直到没有进程在写了,然后readcount+,并释放rmutex,然后执行读操作,因为允许多个进程读,所以要释放rmutex,前面对于rmutex的执行仅仅是保证只有一个读进程对wmutex进行操作,此时wmutex是临界资源。执行完了读操作以后,又要对wmutex进行判断,先readcount-,如果readcount=0,说明允许写了,于是就释放写进程,siganl(wmutex),这一步的前后依然要加上wait(rmutex)和signal(rmutex)。写者很简单。就是先wait(wmutex)然后执行写操作,然后signal(wmutex)25:进程通信:共享存储器系统(基于共享数据结构,基于共享存储区,通过关键字),消息传递系统(进程间的数据交换以格式化的消息为单位来传递,分为直接通信方式(直接发给目标进程)和间接通信方式(类似邮箱),管道通信(直接连接读进程和一个写进程,把数据流入管道即可)。26:处理机调度层次:高级调度(作业级调度,把外存作业调入内存,作业进入系统后,就分配一个JCB,系统对JCB进行控制。),低级调度(进程调度,保存处理机现场信息,选取进程,把处理机分配给进程,有抢占和非抢占两种),中级调度(把不能运行的进程调到外存去),27:调度算法要求:周转时间短,响应时间快,截止时间有保证,优先权,系统吞吐量高,处理利用率高,各资源平衡利用。28:调度算法:先来先服务,短作业调度算法,优先权调度算法(抢占和非抢占),响应比优先调度算法(动态优先权,(等待时间+要求服务时间/等待时间),时间片轮转法,多级反馈队列调度(按照每个优先级划分队列,程序一来,就是最高优先级队列,然后执行一个时间片,执行完以后放入下一个优先级队列,每个优先级队列的对应的时间片长度不一样优先级越高,就时间片越小)29:实时调度算法:要求系统处理能力强,大部分采用抢占式,具有快速切换机制。最早截止时间优先EDF,最低松弛度优先级LLF(least laxity first)(紧急程度越高,就优先级越高,比如人物要在200ms内完成且自身时间就要100ms,这就是紧急程度。)30:产生死锁的必要条件:互斥,请求和保持,不剥夺,环路等到。31:预防死锁:摒弃“请求和保持”条件(运行之前申请到所有资源),摒弃不剥夺条件(当进程提出的资源请求得不到满足的时候,就放弃手上的所有资源),摒弃环路等待条件(所有进程都必须按照一定的顺序申请资源,比如打印进程必须先申请输入机,再申请打印机,再。)32:银行家算法:维护6种数据结构。(1)availablej=K,表示系统中现在有空闲的J类资源K个。(2)MAXij=K,表示进程i需要j类资源最多k个。(3)allocationij=k,表示进程i已经得到j类资源k个。(4)needij=k,表示进程i还需要j类资源k个。(5)workj=k,表示整个系统含有可用的j资源的数目k。和available类似,只不过work用于安全性算法中。(6)finishi=true,表示系统是否有足够多的资源分配给进程i执行时,进程i发出requestj=k,表示要j资源k个,然后判断是不是requestj= needij,如果不是就出错,如果是就判断requestj= availablej,如果不是就等待,如果是就试探分配资源,并修改available,allocation,need。然后执行安全性算法,如果安全,就分配资源,如果不是,就恢复被修改的available,allocation,need,进程等待。安全性算法:在所有进程中,找到一个进程,finish=false,并且needi,j=worki。如果没找到,if所有的finish都是true,就都处于安全状态,if needi,jworki 说明系统不安全。如果找到了,就worki= worki+ allocationij finishi=true比如现在有01234 五个进程,ABC三种资源,维护max allocation need available 4张表,首先对现在进行安全性算法,一开始 work=available finish都是false ,然后看work是不是大于0的need,发现小于,那么看1,work大于1的need,于是执行1(不是真正的执行),然后收回1的资源,work变多了,然后判断是不是大于2的need,不大于,然后判断是不是大于3的need,大于,再收回3的allocation,然后判断是不是大于4的,大于,收回,再判断是不是大于0的,大于,收回,再判断是不是大于2的,大于,每次收回以后都要把finish=true,最后全部的finish都是true这样就得到一个安全序列,13420。下面就开始真正的执行,进程1发出request(1.0.2)小于need也小于available,说明可以分配,然后修改四个表,再判断分配给进程1后的安全性算法,得到一个安全序列。进程4发出request(3.3.0),request(3.3.0)小于need但是大于available 由于1进程占据资源,于是进程4等待。0发出request,requestneed也available,那么假定为0分配资源,修改四张表,但是如果满足了0的要求以后,可用资源也就是available已经无法满足所有进程的need,进入不安全状态。备注:所谓不安全就是没有进程可以运行,可能导致死锁。所谓安全序列就是至少按我和这个序列是安全的,但是不一定会按我这个序列执行,每个进程的request是不定的。33:死锁的解除:剥夺资源(从其他进程中剥夺足够多的资源),撤销进程。 存储器管理34:存储器由高到低:寄存器,主存(高速缓存,主存,磁盘缓存),磁盘,可移动存储介质。35:程序装入内存:先把源代码编译成多个目标模块,然后把模块链接起来形成装入模块,然后装入内存。有绝对装入(装入程序按照模块中的地址讲程序和数据装入内存,程序的逻辑地址和实际内存地址完全相同),可重定位装入(程序中的地址都是以0开始的,装入内存以后也用相对地址来改变程序中的地址成绝对地址),动态运行时装入(在程序执行的时候再把相对地址改变成绝对地址)36:程序的链接
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号