(1)嵌入式系统的定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
(2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。
(3)嵌入式系统的组成:硬件层、中间层、系统软件层、应用软件层。
①硬件层:嵌入式微处理器、存储器、通用设备接口和I/O接口。
②中间层(也称为硬件抽象层HAL或者板级支持包BSP):它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。
BSP有两个特点:硬件相关性和操作系统相关性。
③系统软件层:由RTOS、文件系统、GUI、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。
④应用软件:由基于实时系统开发的应用程序组成。
Ⅰ.概念类
(1)从不同角度审视操作系统的作用
计算机安全保护角度:提供第一道安全防线
计算机系统的发展角度:提供虚拟机和扩展机
计算机应用角度:提供人机交互接口
软件设计和开发角度:提供软件开发基础
(2)函数fork()
作用:进程控制类函数。通过系统调用创建一个与原来进程几乎完全相同的进程(子进程)。但是被创建的子进程的起始执行指令地址却是从原进程代码所执行fork()函数之后开始执行的。
(3)访问磁盘时间分为三部分
寻道时间Ts,旋转延时时间Tr,传输时间Tt。
其中寻道时间和旋转延时时间属于机械操作,操作用时占大头,数据传输时间最短。
(4)Pthread线程包中,几个线程操作的区别
pthread_join:等待一个特定的线程退出
pthread_yield:线程让出CPU
pthread_exit:终止调用它的线程并返回一个指向某个对象的指针
pthread_create:用户编程创建一个新的线程
(5)在虚拟页式系统中,当需要进行页面置换时,有关置换算法作用对象
先进先出页面置换算法(FIFO):将驻留在内存中时间最长的一页调出
最近最少使用页面置换算法(LRU):最长时间未被使用过的页面
最近最不常用页面置换算法(LFU):在一段时间里被使用的次数最少的页面
理想页面置换算法(OPT):置换以后不再需要的,或者在最长时间以后才可能会用到的页面
(6)死锁、活锁、饥饿对应的现象(所举例仅为了区别)
死锁:相关进程进入阻塞状态,且无法唤醒
活锁:相关进程没有阻塞,可被调度,但是没有进展
饥饿:相关进程没有阻塞,但是调度被无限推后
(7)下列进程之间的通信方式是同步还是异步(仅一部分)
共享内存:即共享缓冲区方式,缓冲区数目不为1时可同步或异步;
消息机制:指进程间通过相互发送信息进行通信,可同步或异步;
管道通信:是一方进程发送另一方只能接收,此方式只为同步;
套接字:是一组进程间交换数据的协议,可以是同步或异步;
(8)对于不同的系统,其调度算法的设计目标是
①交互式系统:较均匀的性能、较快的响应时间
②批处理系统:较大的吞吐量、较短的周转时间、较高的CPU利用率
③实时系统:满足截止时间要求、满足可靠性要求
Ⅱ.计算类
(1)假设系统由相同类型的7个资源被3个进程共享,若要使系统不会死锁,每个进程最多可以申请的资源个数是?
解析: 假设n个进程同时请求资源(共a个同类型资源),每个进程占有m个资源,不发生死锁的条件是
n×(m-1)﹤a
(2)页式存储管理方案中,若一个进程的虚拟地址空间为2GB,页面大小为4KB。当用4字节表示物理页号时,页表需要占用的页面数?
解析: 该进程虚拟地址空间存在的页面数=2GB÷4KB=219=512K(页)
用4字节表示物理页号,则页表占219×4B=2MB
(页表:一种特殊的数据结构,放在系统空间的页表区,存放逻辑页与物理页帧的对应关系。)
所以,页表占用的页面数=2MB÷4KB=512
(3)某页式存储管理系统采用一级页表。如果访问内存的时间为0.4us,快表的命中率为90%,请问有效访问时间是多少?
解析: 命中率——CPU在任一时刻从Cache中可靠获取数据的概率。命中率越高,正确获取数据的可靠性就越大。
命中率=命中次数÷存储器访问总次数×100%
分页系统要访问两次(一级页表):
第一次要访问页表,将页号换成页地址,并与偏移量相加,得出实际地址;
第二次要访问实际的地址。
则所用时间是0.8us。
有快表,命中率为90%,则访问时间为0.4×90%+0.8×10%=0.44us
(由于CPU以及快表本身耗用的时间没有给出,所以假定这些时间可以忽略不计)
(4)在一个采用虚拟页式存储管理方案的系统中,页面大小为50个整型变量。假设某一个进程分配有3个页框,其中程序占用2个页框并常驻内存。下列程序数据进行初始化时,会产生多少次缺页中断?
for(i = 1; i <= 50; i++ )
for(j = 1; j <= 100; j++) C[i,j] = 0;
解析: 由于程序运行需要3个页框,而程序需要使用2个页框来常驻内存,那么就只有一个页框来支持换页。在进行初始化时,数组需要的容量为50×100=5000个整型的空间,每一个页面大小为50个整型,因此会产生5000÷50=100次缺页中断。
(5)下表是某页式内存分配的情况,页面大小为4096B,有效位为1表示该页在内存。系统将逻辑地址0x0E8D、0x3010、0x411B、0x00FB、0x231E转换为物理地址时,会发生几次缺页中断?
逻辑页号 |
页框号 |
有效位 |
0 |
08000000 |
1 |
1 |
-------- |
0 |
2 |
08005000 |
1 |
3 |
-------- |
0 |
4 |
FF003000 |
1 |
解析: 页面大小为4096B=212,所以页内地址共有12位,也就是须有12位地址才能表示一个大小为4096B的页的所有位的地址。
五个十六进制数对应的二进制形式为:
0x0E8D:0000 1110 1000 1101
0x3010:0011 0000 0001 0000
0x411B:0100 0001 0001 1011
0x00FB:0000 0000 1111 1011
0x231E:0010 0011 0001 1110
由上得:将每一个二进制地址从右往左数12位即是逻辑地址的页内地址,剩下的就是逻辑地址的页号,然后根据上表判断该页号在不在内存中。如果在内存中,将逻辑地址转换为物理地址自然是不会发生缺页中断的;反之,如果不在内存中,就会存在缺页中断。比如:
0x411B:0100 0001 0001 1011
(逻辑页号为高四位0100,即4,表中显示逻辑页号为4的页在内存中,所以不发生缺页中断)
(6)假设某文件由100个逻辑记录组成,每个逻辑记录长度为80个字符。磁盘空间被划分为若干块,块大小为1024个字符。若:
①不采用成组操作时,磁盘空间的利用率是多少?
②采用成组操作,且块因子为12,那么磁盘空间的利用率又是多少?
解析: 只计算每块的利用率。不去考虑前面的“100个逻辑记录”这句话。则
不采用成组操作:80÷1024=7.8%
采用成组操作:12×80÷1024=94%
(7)假设某文件系统的物理结构采用类UNIX的二级索引结构。主索引表有12项,前10项给出文件前10块的磁盘地址,第11项给出一级索引表的地址,第12项给出二级索引表的地址。一级和二级索引表的大小均为一个磁盘块,可存放100个磁盘地址。针对以上描述的文件系统,一个文件最大为多少块?
解析: 一级索引表可存放100个磁盘地址,则二级索引表可存放100×100。题目已给出前面的10项可存放10快,所以:10+100+100×100=10110(块)
(8)在UNIX系统中,若文件File1的权限是756。则文件属主、同组用户、其他用户的权利范围?
解析: 根据公式
x, y, z=4a+2b+c
式中:
x:文件属主(对应数字7);
y:同组用户(对应数字5);
z:其他用户(对应数字6)。
a:为1表示可读,为0表示不可读;
b:为1表示可写,为0表示不可写;
c:为1表示可执行,为0表示不可执行。(注:a, b, c只能为整数!)
4a+2b+c
[x] 1 1 1 [7]
[y] 1 0 1 [5]
[z] 1 1 0 [6]
所以:文件属主可读、可写、可执行;同组用户可读、不可写、可执行;其他用户可读、可写、不可执行。
【--- 本篇完 ---】
声明:由于笔者水平有限,文中错误和未理解到处在所难免,敬请读者批评指正。