linux复习大纲带答案-学长版-(3)

上传人:F****n 文档编号:102729847 上传时间:2019-10-04 格式:DOC 页数:16 大小:407.50KB
返回 下载 相关 举报
linux复习大纲带答案-学长版-(3)_第1页
第1页 / 共16页
linux复习大纲带答案-学长版-(3)_第2页
第2页 / 共16页
linux复习大纲带答案-学长版-(3)_第3页
第3页 / 共16页
linux复习大纲带答案-学长版-(3)_第4页
第4页 / 共16页
linux复习大纲带答案-学长版-(3)_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《linux复习大纲带答案-学长版-(3)》由会员分享,可在线阅读,更多相关《linux复习大纲带答案-学长版-(3)(16页珍藏版)》请在金锄头文库上搜索。

1、实用操作系统期末考试题型说明2016年6月16日一、名词解释(共5题,每题3分,计15分) 通过23句话说明相关概念的基本定义。二、计算题(共2题,每题15分,计30分)结合相应图表,根据题目要求,计算相应结果(给出详细计算过程,分步给分)。三、简答题(共5题,每题6分,计30分)根据提问,对相关知识点进行总结,并作必要对比分析。四、程序分析题(共2题,每题7分,计14分) 根据相关代码框架,说明相应技术的实现原理与机制(不需要对代码细节做深入分析)。五、程序设计题(共1题,计11分)根据题目要求,给出相应的设计方案。实用操作系统复习提纲提示: 1)请根据以下提纲整理相关知识内容的要点,避免去

2、死记硬背。 2)请不要简单地依据往年试题内容复习,否则后果自负。第一讲:Linux系统分析基础1、什么是用户态和内核态及划分的必要性?不区分的缺陷用户直接修改操作系统数据用户直接调用操作系统内部函数用户直接操作外设用户任意读/写物理内存区分意义:保护内核禁止用户程序和底层硬件直接打交道如果用户程序往硬件控制寄存器写入不恰当的值,可能导致硬件无法正常工作禁止用户程序访问任意物理内存,否则可能会破坏其他程序的正常执行如果对核心内核所在的地址空间写入数据,会导致系统崩溃2、Linux单内核、多模块的特点及其与微内核操作系统的主要区别。Linux是单内核、多模块系统Linux内核运行在单独的内核地址空

3、间所有操作系统功能作为一个模块实现在内核中模块均运行在内核态,直接调用函数,无需消息传递模块化设计、抢占式 (Linux 2.6内核级抢占,Linux 2.4用户级抢占)、支持内核线程及动态装载内核模块的能力与Unix主要区别Unix也是单内核系统,但Linux汲取了微内核设计思想(基于模块定制内核)Unix也是单内核系统Windows NT和Mach是微内核系统只提供基础功能,其他功能通过服务实现微内核被划分为多个独立过程,每个过程称为服务器3、 可加载内核模块的概念,内核模块与C语言应用程序的主要差别。加载内核模块(Loadable Kernel Module)的概念模块实际上是一种目标对

4、象文件,没有链接,不能独立运行其代码可以在系统运行时链接到系统中,作为内核的一部分运行或从内核中取下,从而可以动态扩充内核的功能(不需要重新编译内核)这种目标代码通常由一组函数和数据结构组成C语言程序 模块运行 用户空间 内核空间入口 main() module_init()出口 无 module_exit()编译 gcc -c 编制专用Makefule,并调用gcc连接 gcc insmod运行 直接运行 insmod调试 gdb kdbug, kdb, kgdb等 第二讲:进程与线程1、 Linux 2.4及2.6进程系统堆栈结构特点及主要区别。Linux进程系统堆栈结构特点 8192(

5、213 )字节,两个页框 占据连续两个页框,且第一个页框起始地址为213的倍数Linux2.4进程系统堆栈结构特点结构定义(/include/linux/sched.h) Linux2.6进程系统堆栈数据结构定义(其定义了一个指向进程描述符的指针)Linux2.6进程系统堆栈结构特点两者区别: Linux2.4进程描述符由alloc_task_struct(),free_task_struct(),get_task_struct()进行管理,Linux2.6进程描述符由slab分配器动态生成; Linux2.4进程系统堆栈栈底使用struct task_struct结构,Linux2.6进程系

6、统堆栈栈底使用新结构struct thread_info,其定义了指向进程描述符的指针,占用更小的栈空间2、 进程(组)相关标识符的含义。成员名:pid_t pid 功能:内核通过pid标识每个进程pid与进程描述符之间有严格的一一对应关系成员名:pid_t tgid 功能:标识进程是否属于同组,组ID是第一个组内线程(父进程)的ID线程组中的所有线程共享相同的PID3、 idle进程。系统引导进程(init_task)在引导结束后成为cpu 0上的idle进程,每个cpu上都有一个idle进程,idle进程不进入就绪队列,仅当就绪队列为空时idle进程才会被调度。4、 通用内核链表的设计特点

7、及与双向链表的主要区别。特点: 链表结构作为一个成员嵌入到宿主数据结构内 链表结构可放在宿主结构内的任何位置 一个宿主结构可有多个内核链表结构 避免为每个数据项类型定义自己的链表通用内核链表不用为每个数据项定义链表。传统双向链表的指针记录节点的首地址,通用内核链表的指针记录链表的地址。6、 “RCU”的特点与作用。特点:以“_rcu”结尾的宏 通过延迟写操作来提高同步性能作用:RCU常用来保护读操作占多数的链表与数组7、 常用进程创建函数的主要差别及使用方法。进程创建函数pid_t fork(void);pid_t vfork(void);int clone(int (*fn)(void *

8、arg), void *stack, int flags, void * arg); 关系差别fork, vfork and clone三者最终都会调用do_fork函数。Vfork()与fork()功能相同,但vfork()但不拷贝父进程的页表项。子进程只执行exec()时,vfork()为首选。而对于clone()是创建轻量级线程的。它是fork()的推广形式,它允许新进程共享父进程的存储空间、文件描述符和信号处使用:(个人觉得略坑)do_fork(unsigned long clone_flag, unsigned long stack_start, struct pt_regs *re

9、gs, unsigned long stack_size, int _user *parent_tidptr, int _user *child_tidptr);参数说明clone_flag:子进程创建相关标志stact_start:子进程用户态堆栈的地址,将用户态堆栈指针赋给子进程的espregs:从用户态切换至内核态时保存用户堆栈到内核态的堆栈stack_size:未使用(总设为0)parent_tidptr:父进程用户态下的PID地址,若需父进程与新轻量级进程有相同PID,则需设置CLONE_PARENT_SETTIDchild_tidptr:新建子进程用户态下的PID,若需让新进程具有

10、同类进程的PID,需设置CLONE_CHILD_SETTID、说明vfork()创建的子进程与父进程共享地址空间子进程作为父进程的一个单独线程在其地址空间运行子进程从父进程继承控制终端、信号标志位、可访问的主存区、环境变量和其他资源分配子进程对虚拟空间任何数据的修改都可为父进程所见 父进程将被阻塞,直到子进程调用execve()或exit()、int clone(int (*fn)(void *), void *child_stack, int clone_flag, void *arg); 参数说明fn:待执行的程序 child_stack:进程所使用的堆栈clone_flag:由用户指定,

11、可以是多个标志的组合arg:执行fn所需的参数功能创建轻量级进程(LWP)的系统调用通过clone_flag控制8.进程、用户线程、内核线程的主要区别。进程:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,被操作系统调度,一个系统资源的的集合。用户线程:存在于用户空间中,通过线程库来实现线程创建和调度都在用户空间进行,以进程为单位调度内核线程:在内核空间内执行线程的创建、调度和管理内核线程的创建和管理慢于用户线程的创建和管理9、 为何fork系统调用能返回两个不同的返回值。第三讲:进程调度1. Linux 2.4及2.6进程调度体系、调度框架的特点及差别。Linux2.4的调度体

12、系基于共享全局队列,其算法属于O(n),开销是线性增长的。Linux2.6每个处理器都有独立的就绪进程队列,各个处理器可以并行运行调度程序来挑选进程运行,不同处理器上的进程可以完全并行地休眠、唤醒和上下文切换。2. 主动调度与被动调度的特点。Linux2.4:主动调度:直接调用schedule()被动调度:置位当前进程的need_resched,和主动调度相比,被打调度有一定的调度延时 Linux2.6: 包含了Linux 2.4的调度时机,增加内核可抢占。3. Linux 2.4及2.6进程调度中优先级算法的设计。优先级定义静态优先级:priority(070)表示分配给进程的时间片指明在被

13、迫和其他进程竞争CPU之前,进程允许的最大时间片只能由用户进行修改,不随时间而改变,一般通过nice设定动态优先级:counter进程拥有CPU时随时间不断减小指明在这个时间片中所剩余的时间量当小于0时,标记进程重新调度实时优先级:rt_priority(199)确定实时进程的调度顺序,较高权值进程优先于较低权值进程非实时进程的优先级为0,因此实时进程总优先于非实时进程2.4:普通进程基本思想:动态优先级调度通过更新counter值,周期性修改进程优先级(避免饥饿)基本过程counter变为0时,用priority对counter重新赋值所有可运行状态进程的时间片都用完后才对counter重新

14、赋值进程运行过程中,counter的减小为其它进程提供运行机会该机制相当于优先级在动态变化,所以称之为动态优先调度 实时进程基本思想:静态优先级策略counter只用来表示该进程的剩余时间片不作为衡量其是否值得运行的标准(与普通进程的区别)调度设计的基本原则:动态调整优先级及时间片长度2.6:基于每个CPU分配时间片,取消全局同步和重算循环每个处理器有两个数组:活动就绪进程队列和不活跃就绪进程队列进程消耗完其“时间片”后,进入不活跃就绪进程数组中相应队列的队尾当所有进程都“耗尽”其“时间片”后,交换活跃与不活跃就绪进程队列数组,不需要任何其他的开销每个数组中有140个就绪进程队列(runqueue),每个队列对应于140个优先级的一个通过位图标记队列状态调度时,通过find_first_bit()找到第一个非空的队列

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号