搜题
网友您好,请在下方输入框内输入要搜索的题目:
搜题
题目内容 (请给出正确答案)
提问人:网友linfangdu 发布时间:2022-01-06
[主观题]

阅读以下说明和C语言代码,回答问题1至问题4,将解答填入对应栏内。【说明】 在嵌入式操作系统设备管

阅读以下说明和C语言代码,回答问题1至问题4,将解答填入对应栏内。

【说明】

在嵌入式操作系统设备管理的实现上,常使用到C语言的函数指针变量,由统一的管理函数调用不同的设备驱动程序。下面的一段C语言代码是驱动管理程序 manage_device调用4个不同设备驱动程序,但没有用到函数指针变量。

【C语言代码】

/*变量与类型说明*/

include "stdio.h"

include "stdlib.h"

extern int sys_status;

extern int Dev_drv1(int arg1, int arg2);

extern int Dev_drv2(int arg1, int arg2);

extern int Dev_drv3(int arg1, int arg2);

extern int Dev_drv4(int arg1, iht arg2);

define NOERROR 0

type struct {

int _fd;

} TYP_DEV_TAB;

TYP DEV_TAB dev_tab[50]= {101,99, 80, 120,};

/*程序代码*/

void manage_device(int devid, int arg1, int arg2)

{ int place ;

int ret;

for(place=0 ; place<50 ; place++)

if dev_tab [place]. fd == devid) break;

if(place>=50)

printf(" NO DEVICE fd = %d\n ",devid);

switch(dev_tab [place]._fd) {

case 80:

ret = Dev_drv3(int arg1,int arg2);

break;

case 99:

ret = Dev_drv2(int arg1,int arg2);

break;

case 101:

ret = Dev_drv1(int arg1,int arg2);

break;

case 120:

ret = Dev_drv4(int arg1,int arg2);

break;

}

if (ret!=NOERROR)

printf(" DEVICE %d error!\n ", devid);

}

int Dev_drv1(int arg1,int arg2)

{

/*局部变量声明,略*/

/*驱动程序代码,略*/

}

int Dev_drv2(int arg1,int arg2)

{

/*局部变量声明,略*/

/*驱动程序代码,略*/

}

int Dev_drv3(int arg1,int arg2)

{

/*局部变量声明,略*/

/*驱动程序代码,略*/

}

int Dev_drv4(int arg1,int arg2)

{

/*局部变量声明,略*/

/*驱动程序代码,略*/

请用C语言的函数指针变量,对manage_device函数进行改造,完成下面C语言代码中的(1)、(2)、(3)和(4)处的变量说明或语句,将解答填入对应栏内。

【C语言代码】

/*变量与类型说明*/

include "stdio.h"

include "stdlib.h"

extern int sys_status;

extern int Dev_drv1(int arg1, int arg2);

extern int Dev_drv2(int arg1, iht arg2);

extern int Dev_drv3(int arg1, int arg2);

extern int Dev_drv4(int arg1, int arg2);

define NOERROR 0

typedef struct {

int _fd;

(1) 函数指针变量说明;/* 变量名用process */

} TYP_DEV_TAB;

TYP_DEV_TAB dev_tab[50]= {{101, Dev_drv1},{99, Dev_drv2},

{80, Dev_drv3},{120, Dev_dry4},};

/* 程序 */

void manage_device(int devid, int arg1, int arg2)

{ iht place ;

int ret;

(2) 函数指针变量说明;/*局部变量,变量名用ProcAction */

for(place=0 ; place<50 ; place++) {

if(dev_tab [place]._fd == devid) {

(3) 语句1;/* 变量名胜ProcAction, 得到具体函数的入口地址 */

break;

}

}

if(place>=50)

printf("NO DEVICE fd = %d\n",devid);

(4) 语句2;

if(ret!=NOERROR)

printf("DEVICE %d error!", devid);

}

简答题官方参考答案 (由简答题聘请的专业题库老师提供的解答)
查看官方参考答案
更多“阅读以下说明和C语言代码,回答问题1至问题4,将解答填入对应栏内。【说明】 在嵌入式操作系统设备管”相关的问题
第1题
阅读以下说明和C语言代码,回答问题1至问题5,将解答填入答题纸的对应栏内。[说明] 在实模式存储管

阅读以下说明和C语言代码,回答问题1至问题5,将解答填入答题纸的对应栏内。

[说明]

在实模式存储管理方案下,嵌入式系统的内存地址空间的布局一般可以分为五个段:代码段(text)、数据段(data)、bss段(bss)、堆(heap)和栈(stack)。

图16-4为一段例程。

1: include

2: unsigned char gvCh;

3: unsigned short gvShort;

4: unsigned int gvInt = 0x12345678;

5: unsigned long gvLong = 0x87654321;

6: void main(void)

7: {

8: unsigned char array[lO],*p;

9: p = malloc(lO*sizeof(char));

10: while (1);

代码段、数据段和bss段的大小是在什么时候确定的?

点击查看答案
第2题
阅读以下技术说明和C语言代码,根据要求回答问题1至问题6。 【说明】 有两个进程(编号分别为0和1)需

阅读以下技术说明和C语言代码,根据要求回答问题1至问题6。

【说明】

有两个进程(编号分别为0和1)需要访问同一个共享资源。为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个进程访问该共享资源。以下【C代码1】给出了一种实现方法。

【C代码1】

int flag[2]; /+flag数组,初始化为FALSE*/

Enter_Critical_Section(int my_task_id, int other_task_id)

{ while (flag[other_task_id]==TRUE); /*空循环语句*/

flag[my_task_id]=TRUE;

}

Exit_Critical_Section(int my_task_id, int other_task_id)

{ flag[my_task_id]=FALSE;

}

当一个进程要访问临界资源时,就可以调用【C代码1】给出的这两个函数。【C代码2】给出了进程0的一个例子。

【C代码2】

Enter_Critical_Section(0,1);

……使用这个资源……

Exit_Critical_Section(0,1);

……做其他的事情……

什么是临界资源(critical resource)?请用100字以内的文字简要说明。

点击查看答案
第3题
阅读以下说明和C语言代码,回答问题1至问题4,将解答填入答题纸的对应栏内。[说明] 有两个任务(编号

阅读以下说明和C语言代码,回答问题1至问题4,将解答填入答题纸的对应栏内。

[说明]

有两个任务(编号分别为0和1)需要访问同一个共享资源,为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个任务访问该共享资源。代码一给出了一种实现方法。

[代码一]

1: int flag[2]; /* flag 数组,初始化为FALSE */

2: Enter_Critical_Section(int my_task_id, int other_task_id)

3: {

4: while (flag[other_task_id] == TRUE); /* 空循环语句 */

5: flag[my_task_id] = TRUE;

6: }

7: Exit_Critical_Section(int my_task_id, int other_task_id)

8: {

9: flag[my_task_id] = FALSE;

10: }

当一个任务要访问临界资源时,就可以调用代码一给出的这两个函数。代码二给出了任务0的一个例子。

[代码二]

Enter_Critical_Section(0,1);

…使用这个资源…

Exit_Critical_Section(0,1);

…做其他事情…

什么是临界资源(critical resource)?请用100字以内文字简要说明。

点击查看答案
第4题
阅读以下应用说明、图和C++代码,根据要求回答问题1至问题3。 [说明] 已知以下C++程序运行时的输出

阅读以下应用说明、图和C++代码,根据要求回答问题1至问题3。

[说明]

已知以下C++程序运行时的输出结果如下。

1:1

1:1

1:1

[C++程序]

01 include <iostream>

02 using namespace std;

03 class Stock{

04 protect:

05 (1) { };

06 Stock(int n, int pr=1) {

07 shares = n; share_val=pr;

08 };

09 void ~Stock() { };

10 public:

11 //成员函数

12 void output() {

13 (2)<< shares << ":" << share_val << endl;

14 }

15 private:

16 //成员变量

17 int shares;

18 int share_val;

19 };

20

21 void main() {

22 Stock a(1); a.output

23 Stock b; b.output

24 Stock c = Stock (); c.output

25 }

请根据C++程序运行时的输出结果,将代码中(1)、(2)空缺处的内容补充完整。

点击查看答案
第5题
阅读下列说明,回答问题1至问题2,将解答填入答题纸的对应栏内。 [说明] 某地方政府投资建立了一个

阅读下列说明,回答问题1至问题2,将解答填入答题纸的对应栏内。

[说明]

某地方政府投资建立了一个科委网上审批系统,完成网上申报,审批,回复等功能,网站准备采用java语言开发,采用j2ee的开发结构,请就这个项目回答以下问题。在此网站审批模板中,审批购物车模块中自定义了两个session属性:RID用来记录用户提交文件; RNUM用来记录提交的文件的数量。

如果你是网站的设计人员,请为此网站配置一个开发环境,并说明理由。

点击查看答案
第6题
试题四(共15分)阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。【说明】设有n

试题四(共15分)

阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。

【说明】

设有n个货物要装入若干个容量为C的集装箱以便运输,这n个货物的体积分别为{S1,S2,...,Sn},且有si≤C(1≤i≤ n)。为节省运输成本,用尽可能少的集装箱来装运这n个货物。

下面分别采用最先适宜策略和最优适宜策略来求解该问题。

最先适宜策略(firstfit)首先将所有的集装箱初始化为空,对于所有货物,按照所给的次序,每次将一个货物装入第一个能容纳它的集装箱中。

最优适宜策略(bestfit)与最先适宜策略类似,不同的是,总是把货物装到能容纳它且目前剩余容量最小的集装箱,使得该箱子装入货物后闲置空间最小。

【C代码】

下面是这两个算法的C语言核心代码。

(1)变量说明

n:货物数

C:集装箱容量

s:数组,长度为n,其中每个元素表示货物的体积,下标从0开始

b:数组,长度为n,b[i]表示第i+1个集装箱当前已经装入货物的体积,下标从0开始

i,j:循环变量

k:所需的集装箱数

min:当前所用的各集装箱装入了第i个货物后的最小剩余容量

m:当前所需要的集装箱数

temp:临时变量

(2)函数firstfit

int firstfit(){

inti,j;

k=0:

for(i=0;i<n;i++){

b[i]=0;

}

for(i=0;i<n;i++){

(1);

while(C-b[j]<s[i]){

j++;

}

(2);

k=k>(j+1)?k:(j+1);

}

returnk;

}

(3)函数bestfit

int bestfit() {

int i,j,min,m,temp;

k=0;

for(i=0;i<n;i++){

b[i]=0;

}

For (i=0;i<n;i++){

min=C;

m=k+l;

for(j=O;j< k+l;j++){

temp=C- b[j] - s[i];

if(temp>0&&temp< min){

(3) ;

m=j,

}

}

(4);

k=k>(m+1)?k:(m+1);

}

return k;

}

【问题1】(8分)

根据【说明】和【C代码】,填充C代码中的空(1)~(4)。

【问题2】(4分)

根据【说明】和【C代码】,该问题在最先适宜和最优适宜策略下分别采用了(5) 和(6)算法设计策略,时间复杂度分别为 (7) 和 (8)(用O符号表示)。

【问题3】(3分)

考虑实例n= 10,C= 10,各个货物的体积为{4,2,7,3,5,4,2,3,6,2}。该实例在最先适宜和最优适宜策略下所需的集装箱数分别为(9)和(10)。考虑一般的情况,这两种求解策略能否确保得到最优解?(11) (能或否)

点击查看答案
第7题
阅读下列说明,回答问题1至问题3,将解答填入的对应栏内。[说明] 逻辑覆盖是通过对程序逻辑结构的遍

阅读下列说明,回答问题1至问题3,将解答填入的对应栏内。

[说明]

逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖,是设计白盒测试用例的主要方法之。以下代码由C浯言书写,请按要求回答问题。

void cal (int n)

{

int g, s, b, q;

if((n>1000) && (n<2000) )

{

g=n % 10;

s=n % 100 / 10;

b=n / 100 % 10;

q= n / 1000;

if((q+g) =={ s + b ) )

{

printf("%-5d",n);

}

}

printf("\n");

return;

}

请找出程序中所有的逻辑判断语句。

请分析并给出分别满足100%DC(判定覆盖)和100%CC(条件覆盖)时所需的逻辑条件。

假设n的取值范围是0<n<3000,请用逻辑覆盖法为n的取值设计测试用例,使用例集满足基本路径覆盖标准。

请帮忙给出每个问题的正确答案和分析,谢谢!

点击查看答案
第8题
阅读以下说明和Java代码,回答问题1和问题2,将解答填写在对应栏内。【Java代码】 class usethread im

阅读以下说明和Java代码,回答问题1和问题2,将解答填写在对应栏内。

【Java代码】

class usethread implements (1) {

int num

usethread(int n){

num=n;

}

public void (2) {

for(int i=0;i<3;i++)

System.out.println("running:"+num);

System.out.println("finished:"+num);

}

public class multhread{

public static void main(String args[]) (3) InterruptedException{

Thread m1=new Thread(new usethread(1));

Thread m2=new Thread(new usethread(2));

m1.start();

m2.start();

m1.join();

m2.join();

}

}

【问题1】

补充完整上面Java代码中(n)处。

【问题2】

写出上面Java代码运行的结果。

点击查看答案
第9题
阅读以下代码,回答问题:1至问题3 ,将解答填入答题纸的对应栏内。 【代码1】 include阅读以下代码,回答问题:1至问题3 ,将解答填入答题纸的对应栏内。 【代码1】 include void swap() 代码3的功能与代码2完全相同,请补充3中的空缺,将解答写入答题纸的对应栏内。
点击查看答案
第10题
先阅读以下说明,然后回答问题1至问题4。 [说明] Windows Server 2003是基于Windows NT的技术,支持

先阅读以下说明,然后回答问题1至问题4。

[说明]

Windows Server 2003是基于Windows NT的技术,支持完善的NTFS分区格式。

请简要说出NTFS的特点。

点击查看答案
重要提示: 请勿将账号共享给其他人使用,违者账号将被封禁!
查看《购买须知》>>>
重置密码
账号:
旧密码:
新密码:
确认密码:
确认修改
购买搜题卡查看答案
购买前请仔细阅读《购买须知》
请选择支付方式
微信支付
支付宝支付
点击支付即表示你同意并接受《服务协议》《购买须知》
立即支付
搜题卡使用说明

1. 搜题次数扣减规则:

功能 扣减规则
基础费
(查看答案)
加收费
(AI功能)
文字搜题、查看答案 1/每题 0/每次
语音搜题、查看答案 1/每题 2/每次
单题拍照识别、查看答案 1/每题 2/每次
整页拍照识别、查看答案 1/每题 5/每次

备注:网站、APP、小程序均支持文字搜题、查看答案;语音搜题、单题拍照识别、整页拍照识别仅APP、小程序支持。

2. 使用语音搜索、拍照搜索等AI功能需安装APP(或打开微信小程序)。

3. 搜题卡过期将作废,不支持退款,请在有效期内使用完毕。

请使用微信扫码支付(元)

订单号:

遇到问题请联系在线客服

请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系在线客服
恭喜您,购买搜题卡成功 系统为您生成的账号密码如下:
重要提示:请勿将账号共享给其他人使用,违者账号将被封禁。
发送账号到微信 保存账号查看答案
怕账号密码记不住?建议关注微信公众号绑定微信,开通微信扫码登录功能
警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

- 微信扫码关注简答题 -
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反简答题购买须知被冻结。您可在“简答题”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
- 微信扫码关注简答题 -
请用微信扫码测试
欢迎分享答案

为鼓励登录用户提交答案,简答题每个月将会抽取一批参与作答的用户给予奖励,具体奖励活动请关注官方微信公众号:简答题

简答题官方微信公众号

简答题
下载APP
关注公众号
TOP