1.操作系统的功能有哪些?
(1)处理器管理
(2)存储管理
(3)设备管理
(4)文件管理
(5)网络与通信管理
(6)用户接口
2.实现地址重定位的方法有哪几类?
实现地址重定位的方法有两种:静态地址重定位和动态地址重定位。
(1)静态地址重定位是在虚空间程序执行之前由装配程序完成地址映射工作。静态重定位的优点是不需要硬件支持,但是用静态地址重定位方法进行地址变换无法实现虚拟存储器。静态重定位的另一个缺点是必须占用连续的内存空间和难以做到程序和数据的共享。
(2)动态地址重定位是在程序执行过程中,在CPU访问内存之前由硬件地址变换机构将要访问的程序或数据地址转换成内存地址。动态地址重定位的主要优点有:
①可以对内存进行非连续分配。
②动态重定位提供了实现虚拟存储器的基础。
③动态重定位有利于程序段的共享。
3.多道程序和多重处理有何区别?
多道程序是作业之间自动调度执行、共享系统资源,并不是真正地同时执行多个作业;而多重处理系统配置多个CPU,能真正同时执行多道程序。要有效使用多重处理,必须采用多道程序设计技术,而多道程序设计原则上不一定要求多重处理系统的支持。多重处理系统比起单处理系统来说,虽增加了硬件设施,却换来了提高系统吞吐量、可靠性、计算能力和并行处理能力等好处。
4.什么是虚拟存储器?其特点是什么?
虚拟存储器是一种存储管理技术,其思想是把辅助存储器作为对主存储器的扩充,向用户提供一个比实际主存大得多的逻辑地址空间。
特点:
(1)程序装入时,不必将其全部读入到内存,而只需将当前需要执行的部分页或段读入到内存,就可让程序开始执行。
(2)在程序执行过程中,如果需执行的指令或访问的数据尚未在内存(称为缺页或却段),则由处理器通知操作系统将相应的页或段调入到内存,然后继续执行程序。
(3)操作系统将内存中暂时不使用的页或段调出保存在外存上,从而腾出空间存放将要装入的程序以及将要调入的页或段(即具有请求调入和置换功能,只需程序的一部分在内存就可执行)。
5.试说明资源的静态分配策略能防止死锁的原因。
资源静态分配策略要求每个过程在开始执行前申请所需的全部资源,仅在系统为之分配了所需的全部资源后,该进程才开始执行。这样,进程在执行过程中不再申请资源,从而破坏了死锁的四个必要条件之一“占有并等待条件”,从而防止死锁的发生。
6.作业调度和进程调度各自的主要功能是什么?
作业调度的主要功能:
①记录系统中各个作业的情况;
②按照某种调度算法从后背作业队列中挑选作业;
③为选中的作业分配内存和外设等资源;
④为选中的作业建立相应的进程;
⑤作业结束后进行善后处理工作。
进程调度的主要功能:
①保存当前运行进程的现场;
②从就绪队列中挑选一个合适进程;
③为选中的进程恢复现场。
7.简述文件系统具备的功能
①用户建立文件;
②撤销、读写修改和复制文件;
③完成对文件的按名存取和进行存取控制。
8.程序和进程有何区别?
①进程是动态的,而程序是静态的。
②进程有一定的生命期,而程序是指令的集合,本身无运动的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。
③1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。
第二篇:嵌入式Linux实时操作系统习题总结
第1章
1.嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。嵌入式系统一般有3个主要的组成部分:硬件、实时操作系统以及应用软件。
2.嵌入式系统的三要素是嵌入、专用、计算机;即以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统 。
3. 目前国际较为知名的有:VxWorks、NeutrinoRTOS、Nucleus Plus、 OS/9、VRTX、LynuxOS,RTLinux、BlueCat RT等。
4.嵌入式系统一般由硬件层、中间层、软件层和功能层组成。其作用分别如下:
(1)硬件层 :由嵌入式微处理器、外围电路和外设组成。操作系统和应用程序都可以固化在ROM或者Flash中。为方便使用,有的模块在此基础上增加了LCD、键盘、USB接口,以及其他一些功能的扩展电路。
(2)中间层 :硬件层与软件层之间为中间层,其作用将系统软件与底层硬件部分隔离,使得系统的底层设备驱动程序与硬件无关;
(3)软件层 :主要是操作系统,有的还包括文件系统、图形用户接口和网络系统等。操作系统是一个标准的内核,将中断、I/O、定时器等资源都封装起来,以方便用户使用。
(4)功能层 :由基于操作系统开发的应用程序组成,用来完成对被控对象的控制功能。
5.非占先式调度法也称作合作型多任务(cooperative multitasking),各个任务彼此合作共享一个CPU。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。当系统响应时间很重要时,要使用占先式(preemptive)内核。最高优先级的任务一旦就绪,总能得到CPU的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了。
6.在实时系统中,如果系统在指定的时间内未能实现某个确定的任务,会导致系统的全面失败,这样的系统被称硬实时系统。在弱实时系统中,超时却不会发生致命的错误。其实时性的要求比硬实时系统要差一些。
7.嵌入式系统的设计步骤及各部分的主要工作如下。
(1)需求分析阶段,罗列出用户的需求;
(2)体系结构设计阶段,描述系统的功能如何实现;
(3)详细设计阶段,进行硬件系统与软件系统的分类划分,以决定哪些功能用硬件实现,哪些用软件实现;
(4)系统集成,把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进在设计过程中的错误;
(5)系统测试,对设计好的系统进行测试,看其是否满足给定的要求。
8.Linux作为嵌入式操作系统的优势主要有以下几点:
(1)可应用于多种硬件平台。
(2)Linux的高度模块化使添加部件非常容易。
(3)Linux是一个和Unix相似、以内核为基础的、具有完全的内存访问控制,支持大量硬件的一种通用操作系统。
(4)Linux可以随意地配置,不需要任何的许可证或商家的合作关系。
(5)Linux带有Unix用户熟悉的完善的开发工具。其强大的语言编译器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。
9. Linux执行进程调度一般是在以下情况发生的:
(1)正在执行的进程运行完毕;
(2)正在执行的进程调用阻塞原语将自己阻塞起来进入等待状态;
(3)正在执行的进程调用了P原语操作,从而因资源不足而被阻塞;
(4)执行中的进程提出I/O请求后被阻塞;
(5)系统分配的时间片已经用完;
(6)就绪队列中的某个进程的优先级变得高于当前运行进程的优先级。
第4章
1、Linux 内核的编译菜单有好几个版本,运行:
(1)make config:进入命令行,可以一行一行的配置,但使用不十分方便。
(2)make menuconfig:大多数开发人员使用的Linux 内核编译菜单,使用方便。
(3)make xconfig:在2.4.X 以及以前版本中xconfig 菜单是基于TCL/TK 的图形库的。
2、在完成内核的裁减之后,内核的编译就只要执行以下几条命令:
make clean 编译内核之前先把环境给清理干净。
make dep 编译相关依赖文件
make zImage 创建内核镜像文件
make modules 创建内核模块。
make install 把相关文件拷贝到默认的目录。
3、此命令是装载压缩映像文件zImage到flash存储器中,地址是kernel分区,并采用xmodem传输协议。
4、此命令是设置网卡1的地址192.168.1.1,掩码为255.255.255.0,不写netmask参数则默认为255.255.255.0。
5、此命令将nfs服务的共享目录sharedir加载到/mnt/nfs。
6、此命令是装载根文件系统root.cramfs到flash存储器中,地址是根文件系统分区,并采用xmodem传输协议。
7、这个命令的操作同时进行了分区和格式化,0~128K存放vivi,128K~192K存放VIVI控制台指令,192K~1216K存放kernel,1216K~4288K存放root,其余部分存放应用程序。
第6章
1.使用虚拟地址寻址整个系统的主存和辅存的方式在现代操作系统中被称为虚拟内存。 虚拟内存的管理方法使系统既可以运行体积比物理内存还要大的应用程序,也可以实现“按需调页”策略,既满足了程序的运行速度,又节约了物理内存空间。
2.进程内存区域涉及到5种数据段,即:
①代码段:代码段是用来存放可执行文件的操作指令。
②数据段:数据段用来存放可执行文件中已初始化全局变量。
③BSS段:BSS段包含了程序中未初始化的全局变量。
④堆(heap):用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。
⑤栈:栈是用户存放程序临时创建的局部变量。
3.在Linux系统中,内核在最高级执行,也称为“系统态”,在这一级任何操作都可以执行。而应用程序则执行在最低级,即所谓的“用户态”。在这一级处理器禁止对硬件的直接访问和对内存的未授权访问。模块是在所谓的“内核空间”中运行的,而应用程序则是在“用户空间”中运行的。它们分别引用不同的内存映射,也就是程序代码使用不同的“地址空间”。
4.共享内存区域是被多个进程共享的一部分物理内存。如果多个进程都把该内存区域映射到自己的虚拟地址空间,则这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。
5.内存管理利用虚拟文件系统支持交换,交换进程(swapd)定期由调度程序调度,这也是内存管理依赖于进程调度的唯一原因。当一个进程存取的内存映射被换出时,内存管理向文件系统发出请求,同时,挂起当前正在运行的进程。
第9章
1.参考答案:
Mutex互斥量,用于操作某个临界资源时对该资源上锁,以实现互斥地对独占资源的使用。 Semophore信号灯,信号灯内有一计数器,可以用于对多个同类资源的分配。
Condition条件变量,条件变量用于等待信号。当一个线程需要等待某个信号时,就可到条件变量上等待,当信号具备时,系统会唤醒该线程继续运行。
2.参考答案:
本地:共享内存+信号量, 适合于大量数据传输。Linux支持系统V和POSIX的共享内存和信号量。(5分)
远程:Socket+应用协议。适合于跨网络的(大量)数据传输。Linux支持BSD的socket。应用层协议需要自行设计。(5分)
3.答案要点:程序是编译后形成的可执行代码,是静止的。进程是程序的一次执行,是活动的。线程是进程的可执行单元,同一进程的不同线程共享进程的资源和地址空间。
4.两种实现方法,一种是继承Thread,另外一种是实现接口Runnable。
同步的实现方法有两种,分别是synchronized, wait与notify。用synchronized可以对一段代码、一个对象及一个方法进行加锁。用wait与notify可以使对象处于等待及唤醒方式导致同步,因为每个对象都直接或间接的继承了Object类。
5、什么是BootLoader?主要有几种工作模式及主要功能是什么?
答:
Bootloader就是操作系统内核运行的一段小程序,完成进行初始化系统硬件设置的任务,(2分)
分为启动加载模式和下载模式。
(1启动加载模式
启动加载(Boot laoding)模式是指 Bootloader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。(2分)
(2)下载模式
在下载模式下,目标机上的 Bootloader 将先通过串口连接或网络连接等通信手段从宿主机下载文件。(2分)
6、 简述Bootloader有何作用?
答案要点:(1)首先,bootloader是在特定硬件平台运行的程序,严重依赖于硬件平台,需
要移植;(2)是系统上电之后,第一个运行的程序,系统在上电或复位时通常都从地址 0x0 处开始执行,而在这个地址处安排的通常就是系统的 Boot Loader 程序;(3)bootloader程序的设计目标是启动嵌入式操作系统,嵌入式操作系统的启动需要一定的条件,这些条件由bootloader来满足;(4)Bootloader一般具有对存储器和网络接口操作的功能;如擦除、读写Flash,通过USB、串口下载文件等