




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1页共16页实用操作系统期末考试题型说明2016年6月16日一、名词解释(共5题,每题3分,计15分)通过23句话说明相关概念的基本定义。二、计算题(共2题,每题15分,计30分)结合相应图表,根据题目要求,计算相应结果(给出详细计算过程,分步给分)。三、简答题(共5题,每题6分,计30分)根据提问,对相关知识点进行总结,并作必要对比分析。四、程序分析题(共2题,每题7分,计14分)根据相关代码框架,说明相应技术的实现原理与机制(不需要对代码细节做深入分析)。五、程序设计题(共1题,计11分)根据题目要求,给出相应的设计方案。第2页共16页实用操作系统复习提纲提示1)请根据以下提纲整理相关知识内容的要点,避免去死记硬背。2)请不要简单地依据往年试题内容复习,否则后果自负。第一讲LINUX系统分析基础1、什么是用户态和内核态及划分的必要性不区分的缺陷用户直接修改操作系统数据用户直接调用操作系统内部函数用户直接操作外设用户任意读/写物理内存区分意义保护内核禁止用户程序和底层硬件直接打交道如果用户程序往硬件控制寄存器写入不恰当的值,可能导致硬件无法正常工作禁止用户程序访问任意物理内存,否则可能会破坏其他程序的正常执行如果对核心内核所在的地址空间写入数据,会导致系统崩溃2、LINUX单内核、多模块的特点及其与微内核操作系统的主要区别。LINUX是单内核、多模块系统LINUX内核运行在单独的内核地址空间所有操作系统功能作为一个模块实现在内核中模块均运行在内核态,直接调用函数,无需消息传递模块化设计、抢占式LINUX26内核级抢占,LINUX24用户级抢占、支持内核线程及动态装载内核模块的能力与UNIX主要区别UNIX也是单内核系统,但LINUX汲取了微内核设计思想(基于模块定制内核)UNIX也是单内核系统WINDOWSNT和MACH是微内核系统只提供基础功能,其他功能通过服务实现微内核被划分为多个独立过程,每个过程称为服务器第3页共16页3、可加载内核模块的概念,内核模块与C语言应用程序的主要差别。加载内核模块LOADABLEKERNELMODULE的概念模块实际上是一种目标对象文件,没有链接,不能独立运行其代码可以在系统运行时链接到系统中,作为内核的一部分运行或从内核中取下,从而可以动态扩充内核的功能(不需要重新编译内核)这种目标代码通常由一组函数和数据结构组成C语言程序模块运行用户空间内核空间入口MAINMODULE_INIT出口无MODULE_EXIT编译GCCC编制专用MAKEFULE,并调用GCC连接GCCINSMOD运行直接运行INSMOD调试GDBKDBUG,KDB,KGDB等第二讲进程与线程1、LINUX24及26进程系统堆栈结构特点及主要区别。第4页共16页LINUX进程系统堆栈结构特点8192(213)字节,两个页框占据连续两个页框,且第一个页框起始地址为213的倍数LINUX24进程系统堆栈结构特点结构定义/INCLUDE/LINUX/SCHEDHLINUX26进程系统堆栈数据结构定义(其定义了一个指向进程描述符的指针)LINUX26进程系统堆栈结构特点第5页共16页两者区别LINUX24进程描述符由ALLOC_TASK_STRUCT,FREE_TASK_STRUCT,GET_TASK_STRUCT进行管理,LINUX26进程描述符由SLAB分配器动态生成;LINUX24进程系统堆栈栈底使用STRUCTTASK_STRUCT结构,LINUX26进程系统堆栈栈底使用新结构STRUCTTHREAD_INFO,其定义了指向进程描述符的指针,占用更小的栈空间2、进程(组)相关标识符的含义。成员名PID_TPID功能内核通过PID标识每个进程PID与进程描述符之间有严格的一一对应关系成员名PID_TTGID功能标识进程是否属于同组,组ID是第一个组内线程(父进程)的ID线程组中的所有线程共享相同的PID3、IDLE进程。系统引导进程(INIT_TASK)在引导结束后成为CPU0上的IDLE进程,每个CPU上都有一个IDLE进程,IDLE进程不进入就绪队列,仅当就绪队列为空时IDLE进程才会被调度。4、通用内核链表的设计特点及与双向链表的主要区别。特点链表结构作为一个成员嵌入到宿主数据结构内链表结构可放在宿主结构内的任何位置一个宿主结构可有多个内核链表结构避免为每个数据项类型定义自己的链表通用内核链表不用为每个数据项定义链表。传统双向链表的指针记录节点的首地址,通用内第6页共16页核链表的指针记录链表的地址。6、“RCU”的特点与作用。特点以“_RCU”结尾的宏通过延迟写操作来提高同步性能作用RCU常用来保护读操作占多数的链表与数组7、常用进程创建函数的主要差别及使用方法。进程创建函数PID_TFORKVOIDPID_TVFORKVOIDINTCLONEINTFNVOIDARG,VOIDSTACK,INTFLAGS,VOIDARG;关系差别FORK,VFORKANDCLONE三者最终都会调用DO_FORK函数。VFORK()与FORK()功能相同,但VFORK但不拷贝父进程的页表项。子进程只执行EXEC时,VFORK为首选。而对于CLONE()是创建轻量级线程的。它是FORK的推广形式,它允许新进程共享父进程的存储空间、文件描述符和信号处使用(个人觉得略坑)DO_FORKUNSIGNEDLONGCLONE_FLAG,UNSIGNEDLONGSTACK_START,STRUCTPT_REGSREGS,UNSIGNEDLONGSTACK_SIZE,INT_USERPARENT_TIDPTR,INT_USERCHILD_TIDPTR;参数说明CLONE_FLAG子进程创建相关标志STACT_START子进程用户态堆栈的地址,将用户态堆栈指针赋给子进程的ESPREGS从用户态切换至内核态时保存用户堆栈到内核态的堆栈STACK_SIZE未使用(总设为0)PARENT_TIDPTR父进程用户态下的PID地址,若需父进程与新轻量级进程有相同PID,则需设置CLONE_PARENT_SETTIDCHILD_TIDPTR新建子进程用户态下的PID,若需让新进程具有同类进程的PID,需设置CLONE_CHILD_SETTID、说明VFORK创建的子进程与父进程共享地址空间子进程作为父进程的一个单独线程在其地址空间运行子进程从父进程继承控制终端、信号标志位、可访问的主存区、环境变量和其他资源分配子进程对虚拟空间任何数据的修改都可为父进程所见父进程将被阻塞,直到子进程调用EXECVE或EXIT第7页共16页、INTCLONEINTFNVOID,VOIDCHILD_STACK,INTCLONE_FLAG,VOIDARG参数说明FN待执行的程序CHILD_STACK进程所使用的堆栈CLONE_FLAG由用户指定,可以是多个标志的组合ARG执行FN所需的参数功能创建轻量级进程LWP的系统调用通过CLONE_FLAG控制8进程、用户线程、内核线程的主要区别。进程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,被操作系统调度,一个系统资源的的集合。用户线程存在于用户空间中,通过线程库来实现线程创建和调度都在用户空间进行,以进程为单位调度内核线程在内核空间内执行线程的创建、调度和管理内核线程的创建和管理慢于用户线程的创建和管理9、为何FORK系统调用能返回两个不同的返回值。第三讲进程调度1LINUX24及26进程调度体系、调度框架的特点及差别。LINUX24的调度体系基于共享全局队列,其算法属于ON,开销是线性增长的。LINUX26每个处理器都有独立的就绪进程队列,各个处理器可以并行运行调度程序来挑选进程运行,不同处理器上的进程可以完全并行地休眠、唤醒和上下文切换。2主动调度与被动调度的特点。LINUX24主动调度直接调用SCHEDULE被动调度置位当前进程的NEED_RESCHED,和主动调度相比,被打调度有一定的调度延时第8页共16页LINUX26包含了LINUX24的调度时机,增加内核可抢占。3LINUX24及26进程调度中优先级算法的设计。优先级定义静态优先级PRIORITY(070)表示分配给进程的时间片指明在被迫和其他进程竞争CPU之前,进程允许的最大时间片只能由用户进行修改,不随时间而改变,一般通过NICE设定动态优先级COUNTER进程拥有CPU时随时间不断减小指明在这个时间片中所剩余的时间量当小于0时,标记进程重新调度实时优先级RT_PRIORITY(199)确定实时进程的调度顺序,较高权值进程优先于较低权值进程非实时进程的优先级为0,因此实时进程总优先于非实时进程24普通进程基本思想动态优先级调度通过更新COUNTER值,周期性修改进程优先级(避免饥饿)基本过程COUNTER变为0时,用PRIORITY对COUNTER重新赋值所有可运行状态进程的时间片都用完后才对COUNTER重新赋值进程运行过程中,COUNTER的减小为其它进程提供运行机会该机制相当于优先级在动态变化,所以称之为动态优先调度实时进程基本思想静态优先级策略COUNTER只用来表示该进程的剩余时间片不作为衡量其是否值得运行的标准(与普通进程的区别)调度设计的基本原则动态调整优先级及时间片长度26基于每个CPU分配时间片,取消全局同步和重算循环每个处理器有两个数组活动就绪进程队列和不活跃就绪进程队列进程消耗完其“时间片”后,进入不活跃就绪进程数组中相应队列的队尾当所有进程都“耗尽”其“时间片”后,交换活跃与不活跃就绪进程队列数组,不需要任何其他的开销每个数组中有140个就绪进程队列RUNQUEUE,每个队列对应于140个优先级的一个通过位图标记队列状态调度时,通过FIND_FIRST_BIT找到第一个非空的队列,并取队首进程不管队列中有多少就绪进程,挑选就绪程的速度恒定,因此称为01算法第9页共16页4LINUX24及26负载均衡机制的实现思路。LINUX24的负载平衡基本策略进程P被切换下来之后,如果还有CPU空闲,或者该CPU上运行的进程优先级比自己低,那么P就会被调度到那个CPU上运行,内核使用该办法来实现负载平衡。LINUX26的基本策略采用相对集中的负载平衡方案,分为“推”和“拉”两类操作“拉”操作当某个CPU负载过轻、而另一CPU负载较重时,系统会从重载CPU上“拉”进程过来。有两种调用方式“忙平衡”当前CPU不空闲;“空闲平衡”当前CPU空闲。“推”操作在系统启动时自动加载(每个CPU一个),并将自己设为SCHED_FIFO的实时进程,定期检查MIGRATION_QUEUE中是否有请求等待处理,若没有,就在TASK_INTERRUPTIBLE中休眠,直至被唤醒后再次检查。5LINUX26如何体现交互式进程优先的。内核有四处对交互式进程的优先考虑SLEEP_AVG交互式进程因为休眠次数多、时间长,SLEEP_AVG也会相对更大一些INTERACTIVE_CREDIT记录进程的交互程度判断进程是否是交互式进程TASK_INTERACTIVE宏就绪等待时间的奖励对交互式进程的优先级奖励系统通过HIGH_CREDIT累积方式完成奖励当进程从CPU切换下来时,如果是交互式进程,则它参与优先级计算的运行时间会比实际运行时间小,以此获得较高的优先级交互式进程处于TASK_UNINTERRUPTIBLE状态下的休眠时间也会叠加到SLEEP_AVG上,从而获得优先级奖励6内核抢占、用户抢占的实现机制及差异;何种情形下不允许内核抢占。当进程位于内核空间时,有一个更高优先级的任务出现时,如果当前内核允许抢占,则可以将当前任务挂起,执行优先级更高的进程。第四讲进程通信1常用进程通信方式在设计目标、使用场景的主要区别及相关函数的使用方法。第10页共16页信号(SIGNAL)进程或内核使用信号机制通知其他进程发生某一事件管道(PIPE)及有名管道(NAMEDPIPE)用于具有亲缘关系的进程间通信相关代码略(太多。)相关函数看PPT,看完估计想死的心也有了_信号安装函数SIGNAL,SIGACTION信号发送函数KILL,SIGQUEUE,RAISE,ALARM,SETITIMER,PAUSE信号集操作函数SIGEMPTYSET,SIGFILLSET,SIGADDSET,SIGDELSET,SIGISMEMBER。2可靠信号及非可靠信号的特点、主要区别,信号处理机制的内核实现机制。不可靠信号信号值小于SIGRTMIN进程每次处理信号后,将信号响应函数设置为默认动作,需调用SIGNAL重新安装信号非实时信号都是不可靠信号,不支持排队,信号可能丢失可靠信号信号值介于SIGRTMIN和SIGRTMAX之间新信号安装函数SIGACTION和信号发送函数SIGQUEUE实时信号都是可靠信号,支持排队3IPC资源、IPC键、IPC标示符的定义。IPC资源表示单独的消息队列、共享内存或信号量集合。IPC键IPC对象的外部表示,可由程序员选择。如果键是公用的,则系统中所有进程通过权限检查后,均可找到和访问相应IPC对象。如果键是私有的,则键值为0。(每个进程都可建立一个键值为IPC_PRIVAE的私有IPC对象。)IPC标识符由内核分配给IPC对象,在系统内部唯一IPC对象标识符的获取XXXGET将IPC键传递给以SYS_打头的内核函数,并为用户分配一个与IPC对象相对应的数据结构。返回一个32位IPC标识符,进程使用此标识符对该资源进行访问4IPC资源内核结构设计的特点。(真没理解,不知道对不对)设计了消息队列(MSGID_DS)16个。共享内存(SHMID_DS)4096个。信号量(SEMID_DS)128个5不同IPC进程通信机制在内核结构设计上的异同点。第11页共16页6可撤销信号量的定义及其内核实现机制。第五讲系统调用与中断处理1系统调用与中断处理在内核实现机制上的异同点。系统调用位于用户空间进程和硬件设备之间的一个中间层为用户态进程与硬件设备交互提供一组接口中断异步的,来自处理器之外的中断信号,在程序执行的任何时候可能出现区别A中断允许嵌套发生,但异常多数情况为一重B为用户空间提供一种硬件的抽象接口是除异常和陷入外,用户空间访问内核的唯一入口保证系统的稳定与安全2封装例程的定义及作用。定义系统调用可由用户态进程或内核线程使用,但内核线程不能使用库函数,为简化处理,LINUX定义了七个内核封装宏。作用屏蔽底层复杂性将系统调用封装成应用程序可直接调用的函数库函数3系统调用的编写方法。用户程序调用系统调用总控程序SYSTEM_CALL系统调用总控程序入口地址SYSTEM_CALL挂在中断0X80上用户程序执行INT0X80实现“从用户程序到系统调用总控程序”的切换处理过程在进程的内核态堆栈中保存大多数寄存器的内容调用对应系统调用服务例程处理系统调用通过RET_FROM_SYS_CALL从系统调用返回服务程序SYSTEM_CALL通过“CALLSYMBOL_NAMESYS_CALL_TABLE,EAX,4调用服务程序调用形式CALLSYMBOL_NAMESYS_CALL_TABLE,EAX,4说明EAX保存相应系统调用编号此编号对应系统调用服务例程在系统调用向量表SYS_CALL_TABLE中的编号由于系统调用向量表SYS_CALL_TABLE每项占4个字节,所以由EAX乘上4形成偏移地址SYS_CALL_TABLE为基址,基址加上偏移所指向的内容就是相应系统调用服务程序的入口地址SYS_CALL_TABLE记录已注册的系统调用列表每个有效的系统调用指定一个唯一的系统调用号定义在/LINUX/INCLUDE/ASM/UNISTDH中的ENTRYS段第12页共16页SYS_NI_SYSCAL系统调用只返回ENOSYS,专门针对无效的系统调用而设置定义形式ASMLINKAGEINTSYS_NI_SYSCALLVOIDRETURNENOSYS;处理边界错误,0号系统调用就是用此特殊的服务程序用于替换旧的、已淘汰的系统调用用于将要扩展的系统调用4中断处理、异常及信号在实现机制、处理流程上的异同点。5LINUX系统中如何实现IRQ共享的。IRQACTION结构作用包含内核接收到特定IRQ之后应采取的操作用来实现IRQ共享,维护共享IRQ的特定设备和特定中断(所有共享同一IRQ的中断服务例程链接在一个ACTION表)参数说明FLAGS描述IRQ和I/O设备之间的关系SA_INTERRUPT快速中断处理程序(在本地处理器上禁止所有中断的情况下执行)SA_SAMPLE_RANDOM中断是源于物理随机性的SA_SHIRQ此IRQ与其它STRUCTIRQACTION共享MASK中断屏蔽字(未使用)NAME产生中断的I/O设备名DEV_ID标识I/O设备的一个唯一的IDLINUX支持的所有硬件设备的每一种类型,都有一个由制造厂商定义的在此成员中记录的设备IDNEXT指向下一个IRQACTION如果IRQ被共享,则指向队列中下一个STRUCTIRQACTION6保护模式与实模式的定义。从80386开始,CPU的工作模式。在实模式下只能访问1M以下的内存,而在保护模式下可寻址超过4G字节的物理地址空间。7下半部分处理的定义。执行与中断处理密切相关但中断处理程序本身不执行的工作第13页共16页执行期间可以响应中断8LINUX下半部分处理的实现方式及不同实现方式之间的异同点、关联关系;具体代码看PPT)BH机制最早的“下半部”实现机制“BOTTOMHALF”(提供了一种静态创建、由32个“BOTTOMHALF”组成的链表。处理函数必须在编译时就定义好。上半部分通过一个32位整数中的一位来标识可执行的“BOTTOMHALF”。每个BH都在全局范围内同步,不允许任何两个BH同时执行(即使在不同CPU上)。)软中断一组静态定义的下半部接口(有32个,必须在编译阶段静态注册可以在所有处理器上同时执行(即使两个类型相同的软中断)一个软中断不会抢占另一个软中断软中断处理过程中允许响应中断,但自己不能休眠在一个处理程序运行的时候,当前处理器上的软中断被禁止)TASKLET基于软中断实现、灵活性强、动态创建(类型相同的TASKLET不能同时执行。两种不同类型的TASKLET可以在不同处理器上同时执行。TASKLET由HI_SOFTIRQ及TASKLET_SOFTIRQ两类软中断代表组成,前者的优先级高于后者。)TASKLET与软中断的权衡通常应该使用TASKLET软中断适用于执行频率很高且连续性要求很高的情况工作队列将工作推后,交由一个内核线程去执行下半部分在进程上下文执行,通过工作队列执行的代码可以占尽进程上下文的所有优势A支持使用大容量内存B支持获取信号量C支持执行阻塞式I/O操作工作队列可以用内核线程替换,但一般不建议单独建立对应的内核线程小结比较工作队列VS软中断/TASKLET工作队列支持睡眠,软中断/TASKLET不支持若需要使用一个可以重新调度的实体来执行下半部分处理,则应该使用工作队列9软中断的调度特点。有32个,必须在编译阶段静态注册可以在所有处理器上同时执行(即使两个类型相同的软中断)一个软中断不会抢占另一个软中断软中断处理过程中允许响应中断,但自己不能休眠第14页共16页第六讲内存寻址与管理1逻辑地址、线性地址、物理地址的定义及转换过程及计算方法。逻辑地址每个逻辑地址由一个段SEGMENT和偏移量OFFSET组成线性地址32位无符号整数,可表示4G地址空间物理地址用于芯片级内存单元寻址,与从CPU的地址引脚发送到内存总线上的电信号相对应转换过程内存控制单元(MMU)通过分段单元(SEGMENTATIONUNIT)将逻辑地址转换成线性地址,分页单元(PAGINGUNIT)将线性地址转换成一个物理地址计算例题2常规分页机制、物理地址扩展的实现方法。常规分页第15页共16页从I386起,INTEL处理器的分页单元处理4KB的页32位线性地址被分成3个域目录DIRECTORY最高10位,决定页目录项(指向
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版深基坑支护与盾构掘进综合服务合同
- 二零二五年度户外休闲区搭棚设计与施工合同
- 2025版企业股权转让与合同终止补充协议
- 二零二五年度建设项目采购谈判服务标准合同
- 二零二五年度跨境供用水合作协议模板
- 二零二五年度代理记账服务与税务筹划及申报合同
- 二零二五年度法律培训与咨询一体化服务合同
- 2025版绿色建筑合作精简范本协议建议书
- 二零二五年度杭州商铺租赁合同-含租赁双方信用评估及管理
- 二零二五年度中草药养生产品原料采购合同
- 2025年小学语文新课标测试题库及答案
- 十八项医疗核心制度考核试题及答案
- 2025年放射工作人员辐射安全与防护考核试题(附答案)
- 2025云南红河投资有限公司招聘12人笔试参考题库附带答案详解(10套)
- 测绘生产安全生产管理制度
- 2024-2025学年湖南省新高考教学教研联盟暨长郡二十校联盟高二(下)期末数学试卷(含解析)
- 偏瘫患者穿衣健康宣教
- 2025年邵东市招聘社区工作者模拟试卷附答案详解ab卷
- 气候变化与健康宣教课件
- 儿科血小板减少的护理查房
- 新教师教学常规培训
评论
0/150
提交评论