嵌入式驱动实习生试题(答案)

一、选择题

1~5   C , B , D,D,C                  6~10  C ,D, C,D,D

二、填空题

1.( name ), (probe) ( of_match_table)

2.(系统调用), (硬件中断)

3.(find kernel -name "*.c" | xargs grep "test" -n)

4.(程序崩溃)

5.(总线) (驱动) (设备) 

三.简答题

1.答: fork 调用陷入内核,内核中建立子进程,此后启动调度,内核返回到两个不同的进程。2. 答:可能是乱码。
因为GetMemory 返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原先的内容已经被清除,新内容不可知。

3.答:如 int (*getmemory)(int nun);为返回值是int 类型的函数指针,本质是一个指针。

 如 int *getmemory (int nun); 为返回值是指向int 类型指针函数,本质是一个函数;

 函数声明三要素:返回类型类型、名称、参数。

4.答:
(1)能够输出hello
(2)内存泄漏。

(3)代码修改

void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);

free(str);

if(str!=NULL)//避免出现野指针。

str=NULL;
}

5.

现代CPU通常实现了不同的工作模式,以ARM为例,实现了7种工作模式:用户模式(usr)、快速中断(fiq)、外部中断(irq)、管理模式(svc)、数据访问中止(abt)、系统模式(sys)、未定义指令异常(und)

Linux系统利用了CPU的这一特性,使用了其中的两级来分别运行Linux内核与应用程序,这样使操作系统本身得到充分的保护。

6.答: 

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);

其实现调用系统调用 clone

原文地址:https://www.cnblogs.com/lexuele/p/4691604.html