1、基本知识

(1)嵌入式系统的定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

(2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。

(3)嵌入式系统的组成:硬件层、中间层、系统软件层、应用软件层。

硬件层:嵌入式微处理器、存储器、通用设备接口和I/O接口。

中间层(也称为硬件抽象层HAL或者板级支持包BSP它将系统上层软件底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。

      BSP有两个特点:硬件相关性和操作系统相关性。

系统软件层:由RTOS、文件系统、GUI、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。

应用软件:由基于实时系统开发的应用程序组成。

2、重难点

Ⅰ.概念类

(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]

所以:文件属主可读、可写、可执行;同组用户可读、不可写、可执行;其他用户可读、可写、不可执行。

【--- 本篇完 ---】

声明:由于笔者水平有限,文中错误和未理解到处在所难免,敬请读者批评指正。

NCRE - 嵌入式系统开发工程师 – 操作系统(随笔)相关推荐

  1. 嵌入式系统开发工程师入行前十项准备

    这几年,大学生就业越来越难,但实际上,很多公司又一直招聘不到合适的值得培养的人才.我所了解的嵌入式系统开发工程师就是典型的例子,一般来说,在北京,这样的工作岗位大约是月薪3000-5000元,对刚毕业 ...

  2. 全国计算机四级嵌入式系统开发工程师

    全国计算机四级嵌入式系统开发工程师考试总结 1 考试题型和内容 一共考两门,操作系统原理和计算机组成与接口,每门50分,30道单项选择题,每题一分,10道多选题,每题2分. 2 考试实际情况 在网上买 ...

  3. 嵌入式系统开发工程师嵌入式软件开发工程师

    嵌入式软件开发工程师 工作内容 从事数据产品嵌入式(底层)软件开发和设计工作: 负责数据产品相关软件子系统的方案设计: 负责数据产品相关的技术交流.标准及专利相关工作: 负责嵌入式软件系统的需求分析和 ...

  4. 关于嵌入式系统开发工程师相关问题解答

    经常有网友对嵌入式系统开发工程师和嵌入式软件开发工程师概念模糊不清,不太清楚两种的区别和联系,本文就嵌入式系统开发工程师详细的介绍,帮助大家更好的了解嵌入式系统开发工程师一职. 一:职业描述     ...

  5. NCRE-嵌入式系统开发工程师-操作系统知识整理

    1.对于如下C语言程序 int main() {printf("Hello World\n");fork();fork();fork();printf("Hello Wo ...

  6. 四级嵌入式系统开发工程师-计算题题库

    fork()函数类 (1) 解析: fork()函数的返回值,若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记:否则,出错返回-1. 假设程序正确运行并创建子进程成功:子进程中pid得到 ...

  7. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——01-05 基本职能:老鸟也曾是菜鸟...

    本节书摘来自异步社区<嵌入式系统开发之道--菜鸟成长日志与项目经理的私房菜>一书中的第1章,第01-05节,作者 邱毅凌,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  8. 嵌入式系统开发怎样快速度入门

    http://wenda.tianya.cn/wenda/thread?tid=392a249d9d6856c5 实践当然是最锻炼人的方式,但是我想在校生很少有这样的机会,别说本科生,硕士生也未必有条 ...

  9. 嵌入式系统开发学习步骤(Linux高级编程学习顺序)

    2019独角兽企业重金招聘Python工程师标准>>> 嵌入式系统开发学习步骤(Linux高级编程学习顺序) 1.Linux 基础 安装Linux操作系统 Linux文件系统 Lin ...

最新文章

  1. DevOps时代测试应该如何应对?
  2. Strongswan — 常用配置说明
  3. Go 语言编程 — 函数
  4. 3-2 案例准备工作
  5. 第十二期:七种优秀的浏览器兼容性测试工具
  6. 【CodeForces - 988C 】Equal Sums (思维,STLmap,STLset,tricks)
  7. c语言第4章作业,《C语言程序设第4章作业.doc
  8. 最近让我焦灼的四个问题(有解)
  9. BitMap 的基本原理和实现
  10. 已经连接到空闲例程的解决方法
  11. 如何通过细节来看业务流程ERP管理系统的成熟度?
  12. Java后端Controller层解析Json数组转对象
  13. 计算机数据链路层教案,4.1数据链路层作用教案(计算机网络技术基础教案).doc...
  14. 转载 nat64 流程描述 通俗易懂
  15. 苹果或将采用高通屏下指纹方案,5GiPhone基带由三星、高通共同提供...
  16. 中国大学生计算机设计大赛英语,中国大学生计算机设计大赛
  17. 基于QT+Halcon实现拟合圆形
  18. 专家教你10个秘诀 70%癌症都能预防
  19. PHP对接国际验证码接口DEMO示例
  20. 优思学院|六西格玛对于企业的作用,你了解多少?

热门文章

  1. multiselect选中,将multiselect中的一些特定选项设置为禁用和选中
  2. kafka启动报错:INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error=‘Cannot allocate
  3. 蘑菇街 java_【Java就业前景】蘑菇街2021年Java待遇怎么样-看准网
  4. SpringBoot整合Mybatis-Pius(简单易懂!)
  5. 一文详解Mysql锁事务隔离级别
  6. vue.js打包上传php,vue.js如何打包放到服务器
  7. html文件显示controls,html5中设置或返回浏览器应当显示标准的音视频控件的属性controls...
  8. API UART SPI SWI
  9. Python(八)类与对象
  10. glog 打印级别设置_久其系统出现打印ocx未正确安装的解决办法