驱动实习生试题
一、选择题(2.5 ‘/个)
1. device和driver的对应关系( )
A.1(device):1(driver) B.1(device):n(drivers)
C.n(devices):1(driver) D. n(devices):n(drivers)
2.int counter(int i){
static int count = 0;
count = count + i;
return count;
}
main()
{
int i, j;
for(i=0; i <=5; i++)
j = count(i);
}
本程序执行到最后,j的值是( ):
A. 10 B. 15 C. 6 D. 7
3.下列不是Linux系统进程类型的是( ) 。
A 交互进程 B 批处理进程 C 守护进程 D 就绪进程
4.内核不包括的子系统是( ) 。
A 进程管理系统 B 内存管理系统 C I/O管理系统 D硬件管理系统
5.改变文件所有者的命令为( ) 。
A chmod B touch C chown D cat
6.进程有三种状态:( )。
A 准备态、执行态和退出态 B 精确态、模糊态和随机态
C 运行态、就绪态和等待态 D 手工态、自动态和自由态
7.Samba服务器的配置文件是( ) 。
A httpd.conf B inetd.conf C rc.samba D smb.conf
8.Linux文件名的长度不得超过 ( ) 个字符。
A 64 B 128 C 256 D 512
9.不需要编译内核的情况是( )。
A 删除系统不用的设备驱动程序时 B 升级内核时
C 添加新硬件时 D 将网卡激活
10. 写出下面函数的输出结果( )
main()
{
int a[5] = {1, 2, 3, 4, 5};
int *ptr = (int *)(&a+1);
printf("%d, %d", *(a+1), *(ptr -1));
}
A.2,2 B 2,3 B 2,4 D 2,5
二.填空题(2.5’/空)
- linux设备驱动模型三要素:device,driver,bus。Device和driver分别注册到bus上,然后通过( )匹配,最终走到driver的( )函数中, 现在有了DTS后,则可以采用( )的方式匹配。
2.内核空间与用户空间是程序执行的两种不同状态,通过( )和( )能够完成从用户空间到内核空间的转移。
3.请写出在kernel文件夹中搜索字符串“test”,指定类型为*.c的shell命令
( )
4.voidGetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
请问运行Test 函数会有什么样的结果?
( )
5.linux设备驱动模型,设备模型元素( )( )( )
三、简答题
- 请解释 fork 为什么调用一次,返回两次?(5’)
2.(5’)
char *GetMemory(void) {
char p【】 = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test 函数会有什么样的结果?
3. 请举例说明函数指针与指针函数的区别,同时说明函数声明三要素。(10’)
4.(10’)
void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
请问运行Test 函数会输出什么?是否会造成内存泄露?如会,请修改。
5 Linux由用户空间和内核空间两部分组成。为什么这样设计?(10’)
6 Linux 系统使用什么库函数建立线程, 其原型如何?其实现调用什么系统调用?(10’)