操作系统复习要点1、概述部分操作系统概念、特征、设计目标2、进程管理部分进程概念、组成、进程状态迁移图及迁移原因,进程间的关系、临机区概念,实现互斥的方法、P/V操作,引入线程的目的、线程与进程间的关系、死锁特征、资源分配图判定死锁的方法,常用调度算法。3、内存管理部分作业装入内存的方式,分区内存管理机制中的分区分配方法、特点、快表、分页管理机制原理、实现请求调页的内存管理机制的关键技术4、文件管理部分文件系统设计目标、管理磁盘空闲空间的方法、目录结构、FCB等5、外设管理部分I/0软件组成,设备驱动程序概念、四种I/O方式比较及其工作流程,设备管理目标。复习题目概述部分1、什么是操作系统?操作系统设计目标是什么?由哪些部分组成?各个部分主要解决什么问题?操作系统(operatingsystem)是用户和计算机之间的界面.一方面操作系统管理着所有计算机系统资源,另一方面操作系统为用户提供了一个抽象概念上的计算机.在操作系统的帮助下,用户使用计算机时,避免了对计算机系统硬件的直接操作.对计算机系统而言,操作系统是对所有系统资源进行管理的程序的集合;对用户而言,操作系统提供了对系统资源进行有效利用的简单抽象的方法设计目标Usergoalsoperatingsystemshouldbeconvenienttouse,easytolearn,reliable,safe,andfast.Systemgoalsoperatingsystemshouldbeeasytodesign,implement,andmaintain,aswellasflexible,reliable,error-free,andefficient.组成ProcessManagementMainMemoryManagementSecondary-StorageManagementI/OSystemManagementFileManagementProtectionSystemNetworkingCommand-InterpreterSystem各部分主要解决问题见课本ppt2、操作系统内核技术的发展?什么是微内核?并发和并行的区别?发展BatchSystems(作业批处理)Time-SharingSystems(分时系统)Personal-ComputerSystems(PC系统)ParallelSystems(并行系统)DistributedSystems(分布系统)Real-TimeSystems(实时系统)一般来说OS的核心有以下几种:1.单块核心(MONOLITHICKERNEL)将所有OS功能放入核心.UNIX就是这种结构.2.环状核心分为核心,任务,用户几级,如MINIX.LINUX也有这种特征,大家也许注意到,LINUX增加某些种类的服务时不像UNIX,必须重新启动.这就是这种结构比UNIX先进的地方.3.无内核:不区分核心和用户程序的分别,这样省去了状态切换的时间,这种模式适合WEB服务器.4.微内核微内核将许多OS服务放入分离的进程,如文件系统,设备驱动程序,而进程通过消息传递调用OS服务.微内核结构必然是多线程的,第一代微内核,在核心提供了较多的服务,因此被称为'胖微内核',它的典型代表是MACH,它既是GNUHURD也是APPLESERVEROS的核心,可以说,蒸蒸日上.第二代为内核只提供最基本的OS服务,典型的OS是QNX,QNX在理论界很有名,被认为是一种先进的OS并发与并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定要同一时刻发生进程管理部分:1、为什么要引入进程?为什么要引入线程?从调度性、并发性、拥有的资源以及系统开销等方面,区别和比较进程和线程?进程两个基本特性:资源分配的独立单位、调度的基本单位引入思想:将进程资源分配和调度分开,引入线程。启动一个新进程必须分配独立地址空间,建立众多的数据表来维护它的代码段、堆栈段,这是一种很“昂贵”的多任务工作方式。运行于一个进程中的多个线程,彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间。线程间彼此切换所需的时间也远远小于进程间切换所需要的时间时间。创建一个新线程花费时间少(结束亦如此)、两个线程的切换花费时间少同一进程内的线程共享内存和文件,因此它们之间相互通信无须调用内核适合多处理机系统2、进程状态迁移图,引起状态迁移的原因和事件?三五七状态迁移图无法显示请看课本ppt引起状态迁移的原因和事件正在运行的进程运行完毕;运行中的进程要求I/O;执行某种原语操作;一个比正在运行进程优先数更高的进程申请运行(可剥夺调度方式);分配给运行进程的时间片已经用完;主动放弃3、进程组成?PCB的含义?进程由以下几部分组成(1)一个可执行程序,包括初始代码和数据(2)一个独立的用户空间(3)系统资源包括I/O设备、文件等(4)至少一个执行栈区,包括运行现场信息。PCB:进程控制块:是进程存在的唯一标志,它是记录进程生存期内状态变化的重要数据结构。包括如下数据:Informationassociatedwitheachprocess.ProcessstateProgramcounterCPUregistersCPUschedulinginformationMemory-managementinformationAccountinginformationI/Ostatusinformation4、进程之间的关系?什么是临界区?如何实现临界区的互斥访问?进程之间的关系:同步互斥。。竞争协作?。。在进程中涉及到临界资源的程序段叫临界区如何实现临界区的互斥访问:软件方法:先修改、后检查、后修改者等待turn=j;描述可进入的进程(同时修改标志时)在进入区先修改后检查,并检查并发修改的先后检查对方flag,如果不在临界区则自己进入--空闲则入否则再检查turn:保存的是较晚的一次赋值,则较晚的进程等待,较早的进程进入--先到先入,后到等待flag[i]=true;turn=j;while(flag[j]&&turn==j);criticalsectionflag[i]=false;remaindersection硬件方法:Test-and-Set指令该指令读出标志后设置为为TRUEbooleanTS(boolean*lock){booleanold;old=*lock;*lock=TRUE;returnold;}while(TS(&lock));criticalsectionlock=false;remaindersection5、P/V操作的含义?信号量的含义?如何定义信号量的初值?如何利用P/V操作实现多个进程之间的同步和互斥?如利用其实现单缓冲区的读写问题?如何实现生产者消费者等问题?P/V操作是定义在信号量上的两个操作,是一种卓有成效的进程同步机制,执行P操作意味着申请分配一个单位的资源,执行V操作意味着申释放一个单位的资源。信号量表示资源的实体,是一个与队列有关的整型变量。初值公用信号量用来实现进程间的互斥,初值为1,允许它所联系的一组进程对它执行P/V操作私用信号量用来实现进程间的同步,初值为0或者某个正整数,仅允许拥有它的进程对其执行P/V操作。信号量取值为非负值表示当前空闲资源数,若为负值其绝对值表示当前等待临界区的进程数实现互斥为临界资源设置一个互斥信号量mutex,初值为1;在每个进程中,将临界区代码置于P(mutex)和V(mutex)原语之间必须成对使用P和V原语:遗漏P原语则不能保证互斥访问,遗漏V原语则不能在使用临界资源之后将其释放(给其他等待的进程)P(mutex)CSV(mutex)RS实现同步前趋关系并发执行的进程P1和P2中,分别有代码C1和C2,要求C1在C2开始前完成;为每个前趋关系设置一个互斥信号量S12,其初值为0P1P2C1P(s12)V(s12)C2实现单缓冲区的读写问题说明:Mutes、w初值为1,readcount初值为0Readcount用来记录当前有多少个读者在访问数据Mutex用来保证读者之间互斥地修改readcount。W是读者和写着公用的互斥变量,用来互斥读写同时进行1读者优先读者:while(true){P(mutex);readcount++;if(readcount==1)P(w);V(mutex);读P(mutex);readcount--;if(readcount==0)V(w);V(mutex);};写者:while(true){P(w);写V(w);};2写者优先说明Readcount用来记录当前有多少个读者在访问数据W是读者和写着公用的互斥变量,用来互斥读写或者写写同时进行w初值为1,readcount初值为n读者:while(true){P(w);P(readcount);V(w);读V(readcount);};写者:while(true){P(w);fori:=1tondoP(readcount);写fori:=1tondoV(readcount);V(w);};[/code]实现生产者消费者等问题问题描述:若干进程通过有限的共享缓冲区交换数据。其中,生产者进程不断写入,而消费者进程不断读出;共享缓冲区共有N个;任何时刻只能有一个进程可对共享缓冲区进行操作。解决:full是“满”数目,初值为0,empty是“空”数目,初值为N。实际上,full和empty是同一个含义:full+empty==Nmutex用于访问缓冲区时的互斥,初值是1每个进程中各个P操作的次序是重要的:先检查资源数目,再检查是否互斥否则可能死锁实现Producerp(empty);p(mutex);oneunit-buffer;v(mutex);v(full);Consumerp(full);p(mutex);oneunit-buffer;v(mutex);v(empty);6、高级通信方式中,理解send()和receive()的工作过程。发送进程需要发送消息时,执行send原语,产生自愿性中断,进入操作系统,操作系统为发送进程分配一个空缓冲区,并将所发送的消息从发送进程copy到缓冲区中,然后将该载有消息的缓冲区连接到接收进程的消息链链尾。发送进程返回到用户态继续执行接受进程在以后某个时刻,接收进程执行到receive接收原语时,也产生自愿性中断进入操作系统。操作系统将载有消息的缓冲区从消息链中取出,并把消息内容copy到接收进程空间,之后收回缓冲区。完成了消息的接收,接收进程返回到用户态继续进行7、有哪些常用调度算法?引起进程调度的事件有那些?多级反馈队列调度算法的分析?常用调度算法First-Come,First-Served(FCFS)SchedulingShortest-Job-First(SJF)SchedulingShortest-Remaining-Time-First(SRTPrioritySchedulingRoundRobin(RR)MultilevelQueue引起进程调度的事件Switchesfromrunningtowaitingstate.Switchesfromrunningtoreadystate.Switchesfromwaitingtoready.Terminates.多级反馈队列调度算法,是一种考虑较全面灵活的调度算法,它不必事先知道各作业所需执行时间,且它可以满足各种类型进程的需要,因此它是目前公认较好的一种进程调度算法。(1)为提高系统吞吐量和降低作业平均周转时间而照顾短作业。(2)为了得到较好的输入/输出设备的利用效率和对交互用户的及时响应,而照顾输入/输出型作业。(3)在作业运行过程中,按作业运行情况能动态地考虑作业的性质是输入/输出型作业,还是计算型作业。调度算法的实施过程在采用多级反馈队列调度算法的系统中,调度