Unix/Linux操作系统分析
一、填空
1、操作系统内核运行在一定的上下文中,一般来说,处理器在任何时间点上的活动范围可以被概括为三种情况:运行在 空间,处于进程上下文,代表某个特定的进程的执行;运行在 空间,处于中断上下文,表示处理某个特定中断;运行在 空间,执行用户进程。 (cha1,p5)
2、操作系统内核主要划分为两大设计阵营: 和 。大多数Unix系统都属于前者,而Windows NT以及Mach则属于后者。Linux则兼取二者之长。(cha1, p5)
3、Linux内核源码一般安装在 目录下。(cha2, p8)
4、内核把进程存在一个被称作 的双向循环链表中,链表的每一项都是类型为task_struct、被称作 的结构,该结构在<linux/sched.h>文件中定义。(cha3, p17)
5、内核通过一个惟一的 来标识每个进程。它其实是一个整数,默认最大为32768,即系统中允许同时存在的进程的最大数目。(cha3, p19)
6、在Linux系统中,进程创建通常是调用 系统调用的结果,该系统调用通过复制一个现有进程来创建一个全新的进程,这实际上是由clone()系统调用实现的。(cha3, p16)
7、系统中运行的进程根据资源消耗,可分为 和 。Linux为保证用户交互式应用更倾向于优先调度前者。(cha4, p )
8、进程在被抢占前所能运行的时间被称作 ,当它耗尽时,认为该进程到期了。(cha 4, p )
9、 负责对对称多处理及系统的可执行队列之间的负载进行均衡,由kernel/sched.c中的函数load_balance()实现;
10、在Linux下编写程序,一般有两个工具最为常用的编辑工具: 和emacs。 (Linux)
11、Linux下最为广泛使用的C语言编译器是 。它是GNU推出的功能强大、性能优越的跨平台编译器。C语言的调试工具是 , 它们都是GNU软件的代表作。 (Linux)
12、Linux下,用户空间访问内核需要通过 实现。(cha 5, p )
13、UNIX环境下,最流行的应用程序编程接口是基于 标准的。Linux与其相兼容。(cha 5, p )
14、在x86系统上,指令 触发系统切换到内核态,并执行128号异常处理程序(即系统调用处理程序system_call())。(cha5, p )
15、内核在执行系统调用时处在 ,因此,内核可以休眠并且可以被抢占。(cha 5,p )
16、当执行一个中断处理程序或下半部时,内核处于 ,此时内核不可睡眠。(cha 6, p )
17、local_irq_disable()用于禁止当前处理器上的 ,而local_irq_able()则是对其激活。
18、在Linux下半部机制中, 是一组32个静态定义的下半部接口,可在所有处理器上同时执行,但要在编译期间进行静态注册; 则是一种灵活性强、可动态创建的下半部机制,可通过代码动态注册。(chap 7)
19、临界区即访问和操作 的代码段。竞争条件即两个执行线程处于同一个临界区中。(chap 8-9)
20、jiffies用来记录自系统启动以来产生的 。系统运行时间= 。(cha 10)
21、Linux内核把 作为内存管理的基本单位。(chap 11)
22、Linux内核为方便管理物理页,把物理页分成了三个区,它们分别是: 。(chap 11)
23、I/O调度程序通过两种方法减少磁盘寻址时间: 与 。前者将两个或多个请求结合成一个请求;后者将整个请求队列按扇区增长方向有序排列。(chap 13)
24、在 I/O调度程序中,每个请求都设置了一个超时时间。(chap 13)
25、 I/O调度程序是为了及时响应在进行I/O操作期间新到的读请求,从而减少寻址次数而设计的。它在请求提交后会特意等待片刻再返回处理其它请求。(chap 13)
26、内核模块是一些在启动的操作系统内核需要时可以载入内核执行的代码块,不需要时由操作系统卸载。它们扩展了 却不需要 。
27、Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地
用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括 和 。
28、在执行“addr=20.1.1.254”后执行“echo $addr”命令,显示结果为linux下gcc编译的四个步骤 。
二、选择题
1、以下关于Linux的主要特点叙述不正确的是: ( )
(A)Linux支持动态加载模块 (B) Linux内核支持抢占
(C)Linux属于微内核设计 (D)Linux支持对称多处理器结构
2、以下关于Linux内核开发的说法不正确的是: ( )
(A)不能访问lib C库 (B) 具有与用户空间类似的内存保护机制
(C)浮点数不推荐使用 (D) 必须有适当的同步机制避免竞争条件的产生
3、GCC编译过程可以分为四个步骤,其中生成二进制目标代码的是 ( )
(A)预处理 (B)编译 (C)汇编 (D)链接
4、以下Shell内置变量中,表示命令行参数个数的是 ( )
(A)$? (B)$$ (C)$! (D)$#
5、关于Linux中的进程,叙述错误的是( )
(A)通过slab分配器进行分配 (B)通过state域描述当前所处状态
(C)所有的进程都继承于init进程(D)进程退出执行后其进程描述符立即会被释放
6、以下关于Linux进程优先级描述错误的是 ( )
(A)优先级较高的进程分配较短的时间片 (B)采用抢占式的多任务设计
(C)静态优先级通过nice值来指定 (D)提供了可配置的实时优先级
7、关于Linux实时机制的描述错误的是 ( )
(A)实时优先级默认的范围是0-99 (B)Linux提供了一种软实时工作方式
(C)实时优先级采用动态优先级 (D)高优先级的进程可以抢占低优先级的进程
8、关于Linux系统调用说法错误的是( )
(A)通过系统调用号唯一识别每个系统调用 (B)是用户空间访问内核的唯一途径
(C)用户编写程序必须详细了解每个系统调用的函数原型
(D)应用程序通过软中断调用系统调用处理程序
9、以下关于中断描述错误的是 ( )
(A)中断是一种由设备使用的硬件资源向处理器发出的信号
(B)当响应一个中断时,内核便执行中断处理程序
(C)如果某个函数可以睡眠,则不能在中断处理程序中使用该函数
(D)中断在产生时必须考虑与处理器时钟同步
10、整个中断处理可以分为两部分,即上半部和下半部。以下哪一种情况适合于下半部( )
(A)当某个任务要耗费较多的时间或者空间时
(B)当某个任务与硬件关系密切时
(C)当某个任务不能被其它任务打断时
(D)当某个任务对时间非常敏感时
11、整个中断处理可以分为两部分,即上半部和下半部。以下哪一种情况适合于下半部( )
(A)当某个任务要耗费较多的时间或者空间时 (B)当某个任务与硬件关系密切时
(C)当某个任务不能被其它任务打断时 (D)当某个任务对时间非常敏感时
12、关于自旋锁,叙述不正确的是 ( )
(A)最多只能被一个可执行线程持有 (B)线程在等待锁时非常浪费处理器时间
(C)自旋锁可以递归使用 (D)自旋锁不能被长时间拥有
13、关于信号量,叙述不正确的是 ( )
(A)适合于会长时间占有锁的情况 (B)信号量支持两个原子操作:P操作和V操作
(C)允许同时有多信号量锁持有者 (D)持有信号量时不可睡眠
14、分配和释放数据结构是内核最频繁的操作之一,Linux内核则采用的是slab分配器。以下关于slab分配器工作方法叙述错误的是( )
(A)把不同的对象划分为高速缓存组,其中每个高速缓存都存放不同类型的对象,每种对象都对应一个高速缓存
(B)每个slab都包含一些被缓存着的数据结构
(C)各个slab一般处于两个状态:满、空
(D)对于频繁创建很多相同类型的对象的情况,采用slab高速缓存将更高效
15、以下关于Linux文件系统叙述错误的是( )
(A)属于面向记录体的文件系统 (B)文件通过目录组织
(C)索引节点用来保存文件的元数据,如访问控制权限、大小、所有者等
(D)超级块用来存储文件系统的控制信息
16、对于路径/mnt/usb-fool/hello.c,叙述错误的是( )
(A)该路径包含有四个目录项对象:/, mnt, usb-fool, hello.c
(B)mnt和usb-fool是目录文件,而hello.c是普通文件
(C)从该路径中无法判断根目录 (D)/mnt/usb-fool可以作为U盘的一个安装点
17、以下关于块I/O设备描述不正确的是( )
(A)最小的物理可寻址单元是扇区 (B)最小的逻辑可寻址单元是块
(C)缓冲区头buffer_head描述了磁盘块和物理内存缓冲区之间的映射关系
(D)块的大小可以小于一个扇区,也可以大于一个页面
18、I/O调度程序用于提高尽量缩短寻址时间,提高系统性能。对于一个I/O请求队列,通常有以下几种处理,除了( )
(A)如果队列中已存在一个对相邻磁盘扇区操作的请求,则新请求将与这个已存在的请求合并
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论