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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 偏理论的东西最容易忘,这些不常用的零碎点,整理完一遍才有了更深的印象,以后会把自己的积累慢慢都写出来,也许很久不用,但某一天用到或看到,都会是一份不错的记录。

fork()函数类

(1)1
解析:

  • fork()函数的返回值,若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。
  • 假设程序正确运行并创建子进程成功:子进程中pid得到返回值为0,父进程中pid得到返回值为子进程号,父进程执行一次输出,子进程执行一次输出。
  • 故输出两行Hello World。

(2)
1_2
解析:

  • fork()函数的返回值,若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。
  • 假设程序正确运行并创建子进程成功:子进程得到返回值为0,父进程得到返回值为子进程号,父进程执行一次输出,子进程执行一次输出,加上fork()函数前面的语句,输出一行Hello World。
  • 故输出三行Hello World。

(3)
20
解析:

  • fork()函数的返回值,若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。
  • 假设程序正确运行,创建一个子进程得到返回值为0,输出 I am the child process,my process ID is 3744 ;父进程得到返回值为子进程号,父进程执行一次输出 I am the parent process,my process ID is 3987 。
  • 故改程序正确运行后的结果是 I am the child process,my process ID is 3744I am the parent process,my process ID is 3987

缺页中断类

(1)
4
解析:

  • 缺页中断次数=页框数 × 页面置换次数。
  • 由程序可知,每次内层循环遍历了100个整形变量,所以页框数=$\frac{100}{50}$ = 2;外层循环有50次,所以页面置换次数为50。
  • 缺页中断次数 = 2 × 50 =100次。
  • 会产生100次缺页中断。

(2)
13
解析:

  • 最佳页面置换法的原则:保留最近重复访问的页面,将以后都不再访问或者很长时间内不再访问的页面调出。
  • 根据题中所给的进程访问序列,可可得到以下置换图:
    13_1
  • 故缺页次数为7。

页面置换算法类

(1)
29
解析:

  • LRU置换算法的规则:将最近最久未被访问的页面置换出去。
  • 由题意可得:
    29_1

显而易见,共缺页11次,所以缺页率为11/15≈73%。

  • 故该进程的缺页率为73%。

进程内存分配类

(1)
40
解析:

  • 由题意可得,内存空闲区有:
    40_1
  • 由分配后的内存情况:
    40_3

可知,此方法首先使用了满足条件的最大空闲区,这是最差适配的特点。

  • 故此为最差适配。

(2)
41
解析:

  • 由题意可得,内存空闲区有:
    40_1
  • 由分配后的内存情况:
    41_2

可知,此方法首先使用了满足条件的最小空闲区,这是最佳适配的特点。

  • 故此为最佳适配。

(3)
42
解析:

  • 由题意可得,内存空闲区有:
    40_1
  • 由分配后的内存情况:
    42_1

可知,此方法首先使用了满足条件的低地址的空闲区,这是首次适配的特点。

  • 故此为首次适配。

(4)
43
解析:

  • 由题意可得,内存空闲区有:
    40_1
  • 由分配后的内存情况:
    43_1

可知,此方法并没有分配任何空闲区,这是下次适配的特点。

  • 故此为下次适配。

UNIX系统中文件权限类

(1)
37
解析:

  • UNIX系统中,文件权限规则:A1A2A3,A1代表文件属主,A2代表同组用户,A3代表其他用户。其中A=a×4+b×2+c,若a=1,则为可读,b=1,则为可写,c=1,则为可执行。
  • 由题意可知,A1为7=1×4+1×2+1,则a=b=c=1,所以,文件属主可读、可写、可执行File1;A2为5=1×4+0×2+1,则a=c=1,所以,同组用户可读、可执行;A3为5=1×4+0×2+1,则a=c=1,所以,其他用户可读、可执行。
  • 故文件属主可执行File1,文件属主可读File1,同组用户可执行File1,其他用户可读File1。

银行家算法类

(1)
22
解析:

  • 安全序列是指对当前申请资源的进程排出一个序列,保证按照这个序列分配资源完成进程。我们假设有进程P1,P2,.....Pn,则安全序列要求满足:Pi(1<=i<=n)需要资源<=剩余资源 + 分配给Pj(1 <= j < i)资源。
  • 解题思路:首先根据系统状态列出各进程需要的资源;然后根据当前系统剩余资源,找到一个需要资源不大于剩余资源的进程,此时,系统剩余资源就是可用资源;然后此进程的已分配资源加上可用资源,为新的可用资源,并继续与下一个进程的需要资源比较,以此类推写出安全序列。
  • 由于安全序列的不唯一性,针对做题来说,还是根据选项去反推本序列是否安全更合适。
  • 如:
    23
  • 当前系统剩余资源(2,3,3)
    A,P3需要(2,1,1)<(2,3,3)满足,则可用资源变为(4,4,7);P1需要(0,0,6)<(4,4,7)满足,则可用资源变为(8,4,12);P4需要(3,4,7)<(8,4,12)满足,则可用资源变为(10,5,14);P2需要(1,3,4)<(10,5,14)满足,则可用资源变为(14,5,16);P5需要(1,1,1)<(14,5,16)满足,则可用资源变为(15,6,17)。
  • 故P3,P1,P4,P2,P5。

重组存储器类

(1)
25
解析:

  • 0BFFFFH-0A0000H=1FFFFH=131071;
    131071÷(16×1024)=7。
  • 故应使用8片。

8259A级联类

(1)
27
解析:

  • 8259A的IR0~IR7用来接收外设的中断信号,1片最多可以有8级中断;芯片级联时,需要留出一个口接con从片,所以9片芯片级联后有只有最后一片是8个口接收中断信号,其他8片都是7个口,所以8+8×7=64级。
  • 故可以使CPU的kepingbizh可屏蔽中断最多扩展到64级。

8259A类

(1)
8
解析:

  • ICW2是设置中断类型码的初始化命令字,其高5位设置中断类型码,低3位自动插入IR的编码。
    8_1
  • 由题意可知, ICW2 = 83H = 10000011B,所以 IR2 的中断类型码为10000, 低3位编码为010,即中断类型码为10000010B = 82H。
  • 故8259A发给CPU的中断类型码是82H。

8255A类

(1)
10
解析:

  • 8255A方式控制字:
    10_1

10_2

  • 由题意可得:
    D7=1;

D6D5=00;
D4=0;
D3D2D1D0=xxxx;
即控制字为1000xxxx B=8xH。

  • 故控制字应该设置为80H/81H/88H。

(2)
39
解析:

  • 8255A口C按位置位/复位控制字
    39_1
  • 由题意可知,端口B工作在方式1,且用$ INRT_B $向外发出中断,所以PC2口置1,即D3D2D1=010,又因为端口B作为输入,所以C口置1,即D0=1。
  • 故正确的置位/复位控制字为05H。

8253类

(1)
19
解析:

  • 8253的控制字:
    11_1
  • 由计数器1可得:D7D6=01;
    由计数值266,且计数器1是16位计数器,所以:D5D4=11;

由工作在模式3可得:D3D2D1=x10;D0=x;
即控制字为0111x10x B,所以可能为76H/7EH。

  • 故控制字应该设置为76H/7EH。

(2)
38
解析:

  • 8252工作在模式2时是作为速率波发生器使用,计数器在减“1”计数过程中,GATE变为无效(输入0电平),则暂停减“1”计数,待GATE恢复有效后,从初值n开始重新计数。
  • 由题意可知,时钟速率为20KHz,要想保证没10ms发出一个信号,则计数值应为20KHz×10ms=200。
  • 故正确的计数值是200。

8251A类

44_1
解析:

  • 8251A的异步方式控制字:
    44
  • 由一位停止位可得:D7D6=01;
    由奇校验可得:D5D4=01;

由字符长度为8位可得:D3D2=11;
由16分频可得:D1D0=10;
即控制字为01011110B。

  • 故应向其模式控制寄存器写入5EH。

调度类

(1)
35
解析:

  • SCAN调度算法的规则:比磁头大的序列升序访问,比磁头小的序列降序访问。
  • 比磁头大的序列升序排序:110,170,180,195;
    比磁头小的序列降序排序:68,45,35,12。
  • 故采用SCAN算法得到的磁道访问序列是:110,170,180,195,68,45,35,12。

(2)
45
解析:

  • SSF调度算法的规则:先请求离磁头最近的磁道的访问,然后就近访问,以此类推。
  • 故采用SSF算法得到的磁道访问序列是:110,68,45,35,12,170,180,195。

(3)
46
解析:

  • FCFS调度算法的规则:按照访问请求次序为各进程服务。
  • 故采用FCFS算法得到的磁道访问序列是:35,45,12,68,110,180,170,195。

其他

(1)
2
解析:

  • 信号量,可以被一个线程释放,另一个线程获取,多线程同步。
    mutex,用于线程互斥,其对象值只能为0和1~值0,表示锁定状态,当前对象被锁定,用户线程或进程如果试图Lock临界资源,则进入排队等待;值1,表示空闲状态,当前对象为空闲,用户线程或进程可以Lock临界资源,之后mutex值减1变为0。
  • mutex的初值为1,说明同时只允许一个进程进入临界区,则有一个进程在临界区;
  • k个进程在等待队列中,则有k个进程在等待区;
  • 所以一共有1+k个进程,每个进程都访问mutex时,mutex的值都减1,即,此时mutex的值为1-(1+k)=-k;
  • 故信号量的值为-K。

(2)
3
解析:

  • 页面数=$frac{页表内存}{页面大小}$;
    页表内存=页表项个数 × 物理页号;

页表项个数=$frac{虚拟地址空间}{页面大小}$(计算过程注意单位统一)

  • 代入数据:页表项个数=$\frac{2*1024*1024}{4}$ 个;

     页表内存=$\frac{2*1024*1024}{4}$ &times; 4 B;
     页面数=$\frac{2*1024*1024}{4*(4*1024)}$ &times; 4 = 512 个。
  • 故页表需要占用512个页面。

(3)
5
解析:

  • 没有成组操作时,块使用率=$frac{块使用大小}{块大小}$ × 100%。
  • 每个逻辑记录为80个字符,所以块使用大小为80;每个块大小为1024个字符。
  • 即没有成组操作时,块使用率= $\frac{80}{1024}$ × 100% ≈ 8% 。
  • 故磁盘的空间利用率是 8% 。

(4)
6
解析:

  • 成组操作时,快使用率=$frac{块使用大小×块因子}{块大小}$ × 100%。
  • 每个逻辑记录为80个字符,所以块使用大小为80;每个块大小为1024个字符,块因子为12。
  • 即成组操作时,块使用率= $frac{80×12}{1024}$ × 100% ≈ 94% 。
  • 故磁盘的空间利用率是 94% 。

(5)
7
解析:

  • 每个进程可申请资源数=$frac{总资源数}{总进程数}$。
  • 由题意可得,$frac{总资源数}{总进程数}$ = $\frac{7}{3}$=2……1,所以有两个进程可以获取2个资源,一个进程获取3个资源。
  • 故每个进程最多可以申请的资源个数是3。

(6)
9
解析:

  • 总线带宽=总线频率×总线宽度(注意单位)
  • 代入数据可得,总线宽度=66MHZ × $\frac{32}{4}$ B =264MBps。
  • 故总线的带宽为264MBps。

(7)
12
解析:

  • 在分页式存储管理方案的系统中,页数 = $frac{逻辑地址}{内存块大小}$ 。
  • 由题意可得,页数 = $\frac{ 2^{32} }{2^{10} }$ 。
  • 故用户程序最多可划分成 $2^{22}$。

(8)
14
解析:

  • 前10个索引项直接存放文件信息的物理块号,直接索引,最多寻址10个物理块;第11项指向一个物理块,该块中最多可放100个文件物理块的块号,第一次间接索引;第12个索引项是第二次间接索引,最多可寻址100100个物理块。所以,总物理块数为:10+100+100100=10110。
  • 故一个文件最多为10110块。

(9)
15
解析:

  • 启动1次磁盘,直接索引1~10物理块;启动2次磁盘,一级索引11~110物理块;启动3次磁盘,二级索引111~10110物理块。所以要访问第1000块时,找到主索引后,需要启动磁盘3次。

(10)
16
解析:

  • 二次重叠控制方式的指令执行方式:
    image

假设取指令、分析指令和执行指令的时间都相等,每段的时间都为t,执行一条指令的时间T=$t_取指令$+$t_分析指令$+$t_执行指令$。如果我们把取第k+1条指令所用的时间,提前到与分析第k条指令同时进行,那么分析第k+1条指令会与执行第k条指令同时进行,则执行n条指令所用的时间是:T=3×t+(n-1)×t。

  • 故所需执行的时间为:T=3×t+(n-1)×t。

(11)
17
解析:

  • 在计算机中,浮点数只用阶码和尾数表示:
    17_1
  • 浮点数的范围由阶码的位数决定,精度由尾数决定。
  • 由题意可知阶码是用补码表示的,且共四位,其中一位是阶符,所以阶码的最大值是7,所以由此表示的最大正数是$2^7$-1。
  • 故规格化浮点数所能表示的最大整数是$2^7$-1。

(12)
21
解析:

  • 对一级页表而言,查页表项的平均时间 = 快表查找时间 × 命中率 + 访问内存的时间 × (1-命中率)+1×访问内存的时间。
  • 由题意可得:查页表项的平均时间 = 0 +0.4us*(1-90%)+1×0.4us= 0.44us。
  • 故有效访问时间是0.44us。

(13)
24
解析:

  • $2^{地址线条数}$= 存储容量(直接寻址能力)。
  • 由题意可得,$2^{地址线条数}$= 64GB =$2^6$ × $2^{30}$ = $2^{36}$。
  • 故该处理器的地址线有36条。

(14)
26
解析:

  • 由题意可知,VALB=30=1EH,所以(VALB AND 0FH) OR (VALB XOR 0FH)=(1EH & 0FH)|(1EH ⊕ 0FH)=1FH。
  • 故表达式(VALB AND 0FH) OR (VALB XOR 0FH)的值为1FH。

(15)
28
解析:

  • 在调度的过程中的,内存的变化如下:
    28_1
  • 标红1号区,内存为320-224=96M;
    标红2号区,内存为224-120=104M;

标红3号区,内存为1024-128-320-224-288=64M;
显然1号空闲区内存最大。

  • 故系统中剩余的最大空闲分区是104M。

(16)
30
解析:

  • 由题意可得:
    30_1
  • 故存放数据07H的物理地址是200FEH。

(17)
34
解析:

  • 由题意可得,共8个盘面,每个盘面有2500×80=200000个扇区。
  • 逻辑号为385961,385961/200000≈1.929805,则在第2个盘面上,盘面号为1。
  • (385961 mod 200000)/80≈2324.5125,则在第2325个柱面上,柱面号为2324。
  • (385961 mod 200000)mod 80≈41,则在第41个扇区上,扇区号为40。
  • 故该数据块对应的盘面、柱面和扇区号各为1,2324,40。

(18)
31
解析:

  • 在UNIX三级索引结构中,0-9项为直接索引,访问时共10个数据块;第10项为一级间接索引,访问时共$2^{10}$个数据块;第11项为二级间接索引,访问时共$2^{10}$×$2^{10}$个数据块;第12项为三级间接索引,访问时共$2^{10}$×$2^{10}$×$2^{10}$个数据块。
  • 所以共有10+$2^{10}$+$2^{20}$+$2^{30}$个数据块,又因为磁盘块大小为4096B。
  • 故该文件系统中文件的最大尺寸不能超过(10+$2^{10}$+$2^{20}$+$2^{30}$)×4096B。

(19)
36
解析:

  • 首先计算出每个磁盘块有文件控制块512/64=8,有256个文件控制块时,表明有256/8=32个磁盘块。
  • 在第一个磁盘块需要访问磁盘一次,在第二个磁盘块需要访问磁盘块两次,依次类推,所以平均有(1+2+3+...+32)÷32=33÷2=16.5次。
  • 故查找该目录文件的某一个文件控制块的平均访盘次数是16.5。
  • 另附:
    一般情况下的分析。若目录文件分解前占用n个磁盘块,分解后用m个磁盘块存放文件名和文件内部号,则推导出二者的表达式:

分解前,平均访问磁盘次数:(1+2+...+n)÷n=(n+1)2(1+2+...+n)÷n=(n+1)/2 ;
分解后,平均访问磁盘次数:(2+3+...+(m+1))÷m=(m+3)/2。


(20)
47
解析:

  • 异步通信的数据格式如下:
    47_1
  • 由题意可得,
    起始位:0;

5位数据位发送13H:10011;
偶校验:1(13H有奇数个1,所以补1);
停止位:1;

  • 又因为发送数据时,从低位开始发送,所以数据帧格式为11100110。
  • 故发送数据13H到传输线上的信息为E6H。

END!

目录
相关文章
|
6月前
|
存储 缓存 算法
系统设计面试的行家指南(下)(2)
系统设计面试的行家指南(下)(2)
57 1
|
6月前
|
存储 缓存 算法
系统设计面试的行家指南(上)(2)
系统设计面试的行家指南(上)(2)
78 1
|
6月前
|
存储 缓存 数据库
系统设计面试的行家指南(上)(1)
系统设计面试的行家指南(上)(1)
97 0
|
6月前
|
存储 缓存 API
系统设计面试的行家指南(上)(4)
系统设计面试的行家指南(上)(4)
70 0
|
6月前
|
存储 缓存 NoSQL
系统设计面试的行家指南(中)(2)
系统设计面试的行家指南(中)(2)
154 0
|
6月前
|
存储 编解码 缓存
系统设计面试的行家指南(中)(3)
系统设计面试的行家指南(中)(3)
83 0
|
6月前
|
数据采集 存储 缓存
系统设计面试的行家指南(中)(1)
系统设计面试的行家指南(中)(1)
62 0
|
6月前
|
存储 缓存 API
系统设计面试的行家指南(下)(3)
系统设计面试的行家指南(下)(3)
42 0
|
6月前
|
存储 监控 API
系统设计面试的行家指南(下)(1)
系统设计面试的行家指南(下)(1)
69 0
|
6月前
|
存储 缓存 移动开发
系统设计面试的行家指南(上)(3)
系统设计面试的行家指南(上)(3)
78 0
下一篇
无影云桌面