最简单Linux内核和驱动考试题





填空题

1. Linux的设备驱动分为 _________________三类,串口是什么类型设备______?

2.下面的程序,在Ubuntu PC的terminal运行,打印几个hello__________

main()

{

       fork();

       printf("hello\n");

       fork();    

       printf("hello\n");

       while(1);

}

3. 用>=,>,  =,  <,  <=  连接进程的如下4个内存描述形式,分析它们之间的大小关系:

VSS______________ RSS

PSS_______________RSS

USS_______________PSS

4. 下面这个程序,三次打印的data分别是__, __, __。

int data = 10;

 

int child_process()

{

        printf("Child process %d, data%d\n",getpid(),data);

        data = 20;

        printf("Child process %d, data%d\n",getpid(),data);

        _exit(0);

}

 

int main(int argc,char* argv[])

{

        if(vfork()==0) {

                child_process();    

        }

        else{

                sleep(1);

                printf("Parent process %d,data %d\n",getpid(), data);

        }

}

5.  请描述内核代码如下三种编译方式的含义

[] ____________________

[*] __________________

[M] ___________________

6.  gdb设置断点的指令是______,单步n和s的区别是____________________________________

7. 下面一段python程序:

hello.py

print "Hello World! Love, Python"

echo 3 > /proc/sys/vm/drop_caches后,第2次运行比第一次运行快的原因是?

 

______________________________________________________________

______________________________________________________________


8. 请用公式描述下图free命令中数字的关系

 

a = ___________ +  ________

g = b - ________ - _________

h = c + ________ + _________

 

问答题

1. 描述内核atomic, spinlock, mutex这三个锁分别的实用场景和主要区别

 

2. 论述Linux设备驱动模型里面,总线、设备和驱动三者各自的作用及关系。


Linux内核驱动最简单考试题


作者:Linuxer

长按二维码关注



敢不敢留言回复答案啊?