linux驱动基础试题资料
Linux平台驱动试卷 (答案)
湖南科技学院二○ 一四 年 下 学期期末考试电信、电科 专业 2011 年级 Linux 平台驱动 试题考试类型:闭卷 试卷类型: A 卷 考试时量: 120 分钟一、选择题(每题3分,共30分)1) 嵌入式系统,是以(B )为中心,以计算机为基础,并且软硬件可定制,适用于各种应用场合,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统A.LinuxB.应用C.数据处理D.产品 2) 嵌入式系统的四大组成部分,分别是:嵌入式微处理器、外围硬件设备、( D )、用户应用程序A.嵌入式底层驱动B.嵌入式系统调用C.嵌入式根文件系统D.嵌入式操作系统3) 目前人们所指的嵌入式微处理器一般是指( D )位A.4bitB.8bitC.16bitD.32bit4) Linux 系统中,内核以(D )区分设备。
A.设备节点名B :设备设备节点号 C.设备名称 D 。
设备号 5) 对交叉编译描述正确的是(B )A.在同一平台完成编译和运行B.在一种平台上能编译出不同平台上运行的程序C.使用同一交叉编译器编译出来的可执行文件是跨平台运行的D.动态库是跨平台的,不需要交叉编译6) s5pv210上电首先执行的代码来自于那里 ( A)A.iROMB.iRAMC.NAND flashD.SD卡7)将C源程序编译成目标文件(*.o),而不进行链接的编译选项是(D)A.-oB.-E -oC.-S -oD.-c -o8)通常情况下,kmalloc函数能分配的最大内存是(C)A.4KB.64KC.128KD.4M9)Linux系统启动后,一般将设备文件放在以下那个目录( B)A . /etcB . /dev C. /sys D. /var10)对于嵌入式C程序描述正确的是?(C )A. 必须以_start作为程序入口B. 必须以main函数作为程序入口C. 必须设置堆栈D. 裸机可执行程序是ELF格式的二、填空题(本题共5小题,每空1分共10分)1)Linux系统驱动设备分为字符设备、块设备和网络设备三大类。
《Linux基础》复习备考试题库(含答案))
一、选择题1. Linux是一种什么类型的操作系统?A. 单用户操作系统B. 多用户操作系统C. 实时操作系统D. 以上都是答案:B2. Linux的内核主要是由哪个组织维护和开发?A. 微软B. 苹果C. Linux基金会D. 英特尔答案:C3. Linux的发行版中,以下哪个是最为流行的?A. DebianB. UbuntuC. Red HatD. SUSE答案:B4. 在Linux系统中,以下哪个是根目录?A. /homeB. /C. /usr答案:B5. Linux系统中,哪个命令用于查看系统信息?A. systeminfoB. infoC. uname -aD. whoami答案:C6. 在Linux系统中,以下哪个命令用于查看当前登录用户?A. whoB. usersC. whoamiD. w答案:A7. Linux系统中,以下哪个命令用于查看当前系统负载?A. loadavgB. uptimeC. topD. free答案:B8. 在Linux系统中,以下哪个命令用于查看文件内容?A. catB. moreD. head答案:A9. Linux系统中,以下哪个命令用于查找文件?A. findB. locateC. whereisD. grep答案:A10. 在Linux系统中,以下哪个命令用于创建文件?A. touchB. createC. makeD. write答案:A二、填空题1. Linux系统中的“用户”和“组”是通过文件________来管理的。
答案:/etc/passwd2. Linux系统中,_______是用户登录时的默认主目录。
答案:/home3. Linux系统中,_______命令用于查看当前工作目录。
答案:pwd4. Linux系统中,_______命令用于删除文件。
5. Linux系统中,_______命令用于移动或重命名文件。
答案:mv6. Linux系统中,_______命令用于查看文件权限。
Linux驱动试题(参考答案)
Linux驱动试题笔试题:1参考答案:字符设备是指存取时没有缓存的设备,大多数字符设备只能顺序读写。
比如鼠标、键盘、声卡。
块设备的读写则都有缓存来支持,只能以块为单位进行读写,并且块设备必须能够随机存取(random access),即不管块处于设备的什么地方都可以对它进行读写,字符设备则没有这个要求。
比如硬盘、U盘、SD卡。
2、参考答案:查看驱动中的打印信息用dmesg命令。
查看内核中字符设备和块设备信息可以使用命令cat /proc/devices。
查看正在使用的中断号可以使用命令cat /proc/interrupts。
3、参考答案:Linux内核是一种单一大内核,如果没有模块机制,在调试阶段,我们需要修改内核中的某个驱动,必须把内核整个编译一遍,还要重新启动机器,这样操作会非常耗时。
有了模块,我们只需要对我们关心的驱动以模块方式单独编译,无须编译整个内核,也不需要重启机器。
4、参考答案:copy_to_user实现从内核空间向用户空间拷贝数据的功能。
copy_from_user实现从用户空间向内核空间拷贝数据的功能。
分别用于实现驱动中的read 和write函数。
如果交换数据都发生在内核空间中,可以直接使用内核定义的memcpy函数。
5、参考答案:主设备号用于区别不同的驱动程序,次设备号用于区别使用同一个驱动程序的同一类设备中的不同设备。
chartest使用和ttyS0一样的驱动程序。
6、参考答案:register_chrdev(MAJOR_NUMBER, DRIVER_NAME, &xxx_fops)该函数有三个参数,分别是主设备号,驱动名字和file_operations结构的指针7、参考答案:中断是一段程序,当外部设备引起中断时由CPU执行。
DMA是直接内存访问,用于外设与主存储器之间快速的交换数据,利用DMA,在交换数据时可以不通过CPU,提高了CPU的利用率。
注册中断使用request_irq(IRQ_NUMBER, (*handler), IRQ_FLAGS, DRIVER_NAME, dev_id)。
驱动程序基础知识单选题100道及答案解析
驱动程序基础知识单选题100道及答案解析1. 驱动程序的主要作用是()A. 优化硬件性能B. 连接硬件和操作系统C. 提供用户界面D. 管理文件系统答案:B解析:驱动程序主要负责连接硬件设备和操作系统,使得操作系统能够识别和控制硬件。
2. 以下哪种不是常见的驱动程序类型()A. 显卡驱动B. 音频驱动C. 办公软件驱动D. 网卡驱动答案:C解析:办公软件不属于硬件,不需要专门的驱动程序。
3. 安装新硬件后,首先要安装的是()A. 应用程序B. 驱动程序C. 系统补丁D. 杀毒软件答案:B解析:为了让新硬件正常工作,首先要安装对应的驱动程序。
4. 驱动程序通常由()提供A. 硬件制造商B. 操作系统开发商C. 第三方软件公司D. 以上都有可能答案:D解析:硬件制造商、操作系统开发商和第三方软件公司都可能提供驱动程序。
5. 驱动程序版本更新的主要目的是()A. 增加新功能B. 修复漏洞C. 提高兼容性D. 以上都是答案:D解析:驱动程序版本更新可以实现增加新功能、修复漏洞、提高兼容性等目的。
6. 不正确安装驱动程序可能导致()A. 硬件无法正常工作B. 系统崩溃C. 数据丢失D. 以上都有可能答案:D解析:不正确安装驱动程序可能引发各种问题,包括硬件无法正常工作、系统崩溃、数据丢失等。
7. 以下哪种方式获取驱动程序最可靠()A. 从随机附带的光盘获取B. 从硬件制造商官网获取C. 从第三方下载网站获取D. 使用驱动精灵等工具自动获取答案:B解析:从硬件制造商官网获取的驱动程序通常是经过严格测试和适配的,最为可靠。
8. 对于Windows 操作系统,驱动程序文件的扩展名通常是()A..exeB..dllC..sysD..inf答案:C解析:.sys 是Windows 操作系统中常见的驱动程序文件扩展名。
9. 在Linux 系统中,驱动程序通常被编译进()A. 内核B. 应用程序C. 库文件D. 脚本答案:A解析:在Linux 系统中,很多驱动程序会被编译进内核。
Linux基础(习题卷26)
Linux基础(习题卷26)第1部分:单项选择题,共60题,每题只有一个正确答案,多选或少选均不得分。
1.[单选题]Linux系统引导将启动 ( )进程A)initB)gettyC)syslogdD)lpd答案:A解析:2.[单选题]下面不是 vi 工作模式的是( )A)末行模式B)插入模式C)命令模式D)检查模式答案:D解析:3.[单选题]实时操作系统(RTOS)内核与应用程序之间的接口称为。
A)输入/输出接口B)文件系统C)APID)图形用户接口答案:C解析:4.[单选题]在 Linux 系统中,通过使用文件链接命令(ln)功能,可实现一个文件被下述哪种形式来处理()。
A)仅一个文件名称B)不超过两个文件名称C)每个目录可有一个文件名称D)两个或更多个文件名称答案:D解析:5.[单选题]LINUX根分区的大小为( )比较合适A)512KBB)5GBC)1MBD)和内存同样的大小答案:B解析:B)有40个包等待通过这个路由进行传输C)10.13.5的网段可以通过本地的在eth1设备上的NIC配置D)IP地址为10.13.5.0的主机现在是激活的答案:A解析:7.[单选题]怎样了解您在当前目录下还有多大空间?A)df .B)du /C)du .D)df答案:D解析:8.[单选题]设与某资源相关联的信号量初始值为 3,当前值为 1,若 M 表示该资源的可用个数,N 表示等待资源的进程数,则 M,N 分别是( )。
A)0,1B)1,0C)1,2D)2,0答案:B解析:9.[单选题]( )。
想要将当前目录下的voa_paper目录拷贝到/tmp目录下,可以执行命令()。
A)cpB)cpC)cpD)cp答案:C解析:10.[单选题]答案:( )。
要将在Linux系统中安装软件包vlc-2.0.4-5.el6.i686.rpm,应该执行命令( )。
A)rpmB)rpmC)rpmD)rpm答案:C解析:11.[单选题]两个旅行社甲和乙为旅客到某航空公司订飞机栗,形成互斥资源的是( )。
《linux设备驱动程序设计》课程试卷A及答案
《linux设备驱动程序设计》课程试卷A适用专业:考试日期:闭卷所需时间:120分钟总分:100分一、填空题(每空1分,共10分)1.驱动程序全称为______________,是一种可以使计算机和________通信的特殊程序。
2.Linux设备驱动程序可以分为__________、__________、___________三类。
3.Linux内核主要由以下五个子系统组成____________、______________________、_______________、________________二、问答题(每题10分,共70分)1.什么是设备驱动?请详细说明(10分)2.无操作系统和有操作系统的设备驱动的区别在哪里?为什么要使用操作系统?(10分)3.驱动程序可以分为哪两类?请举例说明(10分)4.LINUX中引入了“模块”的概念,那么什么是“模块”?它有什么特点?(10分)主设备号和次设备号是什么?LINUX中如何使用它们?(10分)5.MAKEFILE的用途是什么?下面是一个简单的MAKEFILE文件,试分析其每句的功能(10分)aaa = hello.ohello:global.o $(aaa)hello.o: global.hglobal.o:global.hclean:rm *.o hello7. 常用的驱动编写相关的命令有以下几个,请分别写出它们的用途:(10分)printkInsmodLsmodRmmodDmesg三、程序阅读(共20分)下面是一个比较完整的驱动程序例子,请阅读代码,详细写出每段的意义(每空2分,共20分)头文件略MODULE_LICENSE("GPL");#define MAJOR_NUM 252 ①static ssize_t hello_read(struct file *, char *, size_t, loff_t * off);static ssize_t hello_write(struct file *, const char *, size_t, loff_t * off);static int hello_open(struct inode *inode,struct file *filp);static int hello_release(struct inode *inode,struct file *filp);struct file_operations hello_fops ={open: hello_open,read: hello_read,write: hello_write,release:hello_release,}; ②static int global_var = 0;static int __init hello_init(void){int ret;ret = register_chrdev(MAJOR_NUM, "hello", &hello_fops);if (ret){printk("hello register failure!\n");}else{printk("hello register success!\n");}return ret;} ③static void __exit hello_exit(void){int ret;ret = unregister_chrdev(MAJOR_NUM, "hello");if (ret){printk("hello unregister failure\n!");}else{printk("hello unregister success!\n");}} ④static int hello_open(struct inode *inode,struct file *filp) {printk("this is hello_open!\n");return 0;} ⑤static int hello_release(struct inode *inode,struct file *filp) {printk("this is hello_release!\n");return 0;} ⑥static ssize_t hello_read(struct file *filp, char *buf, size_t len, loff_t *off){printk("this is hello_read!\n");if (copy_to_user(buf, &global_var, sizeof(int))){return 0;}return sizeof(int);} ⑦static ssize_t hello_write(struct file *filp, const char *buf, size_t len, loff_t *off){printk("this is hello_write!\n");if (copy_from_user(&global_var, buf, sizeof(int))){return 0;}return sizeof(int);} ⑧module_init(hello_init); ⑨module_exit(hello_exit); ⑩《linux设备驱动程序设计》课程试卷A答案一、填空题1 设备驱动程序设备2. 字符设备块设备网络设备3 进程调度内存管理虚拟文件系统网络接口进程间通信二,问答题1驱动程序(Device Driver)全称为“设备驱动程序”,是一种可以使计算机和设备通信的特殊程序。
Linux基础(习题卷47)
Linux基础(习题卷47)第1部分:单项选择题,共58题,每题只有一个正确答案,多选或少选均不得分。
1.[单选题]当台式机操作系统工作负载增加时, _______将会提高。
A)cpu工作频率B)内存容量C)系统响应时间D)空闲系统资源答案:C解析:2.[单选题]用户程序发出磁盘 IO 请求后, 系统的处理流程是.用户程序→系统调用处理程序→设备驱动程序 → 中断处理程序。
其中,计算数据所在磁盘的柱面号、磁头号、扇区号的程序是( )。
A)用户程序B)系统调用处理程序C)设备驱动程序D)中断处理程序答案:C解析:3.[单选题]Samba服务器的配置文件是 。
A)httpd.confB)inetd.confC)rc.DD)smb.conf答案:D解析:4.[单选题]有关归档和压缩命令,下面描述正确的是( )A)用uncompress命令解压缩由compress 命令生成的后缀为.zip 的压缩文件B)unzip命令和gzip命令可以解压缩相同类型的文件C)tar归档且压缩的文件可以由gzip命令解压缩D)tar命令归档后的文件也是一种压缩文件答案:D解析:5.[单选题]嵌入式微控制器相比嵌入式微处理器的的最大特点。
A)体积大大减小B)单片化C)功耗低D)成本高答案:B解析:6.[单选题]存盘并退出vi可用命令:wq,还可以用()命令解析:7.[单选题]在Redhat Linux中,如果只要显示/etc/passwd文件中以冒号分隔开的第一列和第六列的内容,以下哪个命令是正确的( )A)cutB)cutC)cutD)cut答案:C解析:explain:cut命令可以从一个文本文件或者文本流中提取文本列。
8.[单选题]改变当前所在目录的命令是: ( )A)pwdB)lsC)cdD)mkdir答案:C解析:9.[单选题]一个文件的权限-rw-rw-r--,这个文件所有者的权限是()。
A)read-onlyB)writeC)read-writeD)read-write-execute答案:C解析:10.[单选题]为匹配以001结尾的行,我们可以使用如下的正则表达式:A)^001B)$001C)001$D)\001答案:C解析:11.[单选题]添加用户时使用参数_______可以指定用户登录shell解释器。
《Linux基础》复习备考试题库(含答案))
《Linux基础》复习备考试题库(含答案))一、选择题(每题2分,共20分)1. Linux操作系统属于以下哪种类型?A. 单用户操作系统B. 多用户操作系统C. 实时操作系统D. 分布式操作系统答案:B2. Linux系统中的超级用户账号是?A. studentB. rootC. userD. guest答案:B3. 在Linux中,哪个命令用于查看当前系统的时间?A. dateB. timeC. whoD. whoami答案:A4. 下面哪个文件系统是Linux系统默认的文件系统?A. ext3B. ext4C. reiserfsD. xfs答案:B5. 在Linux中,哪个命令用于查看磁盘使用情况?A. dfB. duC. dmesgD. diskinfo答案:A6. 下面哪个命令可以用于查看当前进程?A. psB. topC. killD. pidof答案:A7. 在Linux中,哪个文件用于存储系统配置?A. /etc/inittabB. /etc/profileC. /etc/sysconfigD. /etc/init.d答案:A8. 下面哪个命令用于查找文件?A. findB. grepC. locateD. mlocate答案:A9. 在Linux中,哪个命令用于压缩文件?A. zipB. unzipC. gzipD. bzip2答案:C10. 下面哪个命令用于查看文件权限?A. chmodB. chownC. chgrpD. ls -l答案:D二、填空题(每题2分,共20分)11. Linux操作系统的主要特点有开放源代码、________、多用户、多任务。
答案:自由软件12. Linux的文件权限中,数字"7"表示________。
答案:读、写、执行权限13. Linux的文件权限中,数字"6"表示________。
答案:读、写权限14. Linux的文件权限中,数字"4"表示________。
Linux考试试题100道(附答案)
Linux考试试题100道(附答案)1、Linux系统中,用户文件描述符0 表示______。
A.标准输入设备文件描述符B.标准输出设备文件描述符B.管道文件描述符 D.标准错误输出设备文件描述符答案:A2、以长格式列目录时,若文件test的权限描述为:drwxrw-r–,则文件test的类型及文件主的权限是______。
A.目录文件、读写执行B.目录文件、读写C.普通文件、读写D.普通文件、读答案:A3、当字符串用单引号(’’)括起来时,SHELL将______。
A.解释引号内的特殊字符B.执行引号中的命令C.不解释引号内的特殊字符D.结束进程答案:C4、/etc/shadow文件中存放______。
A.用户账号基本信息B.用户口令的加密信息C.用户组信息D.文件系统信息答案:B5、若当前目录为/home,命令ls–l 将显示home 目录下的()。
A.所有文件B.所有隐含文件C.所有非隐含文件D.文件的具体信息答案:D6、为卸载一个软件包,应使用_____。
A.rpm -iB.rpm -eC.rpm -qD.rpm -V答案:B7、下面关于文件“/etc/sysconfig/network-scripts/ifcfg-eth0”的描述哪个是正确的?( )。
A.它是一个系统脚本文件B.它是可执行文件C.它存放本机的名字D.它指定本机eth0的IP地址答案:D8、如何快速切换到用户John的主目录下?( )A.cd @JohnB.cd #JohnC.cd &JohnD.cd ~John答案:D9、启动DNS服务的守护进程()A. httpd startB.httpd stopC. named startD. named stop答案:C10、Linux有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用命令()A.cat B. more C. less D. menu答案:C11、在LINUX中,要查看文件内容,可使用()命令。
linux驱动基础试题
Linux驱动基础试题(时间:1个小时)一、选择题(每题 4 分,共40 分,包括单选和多选,多选、少选均不得分)1. Linux 系统中将设备进行分类管理,下列设备中(ACD )属于字符设备,(BC )属于块设备[A] 键盘[B] 硬盘[C] 闪存设备[D] 帧缓存设备[E] 网卡2. Linux 系统中,内核以(D )区分设备[A] 设备节点名[B] 设备节点号[C] 设备名称[D] 设备号3. Linux 系统中设备节点可以创建在([A] /dev 目录下[B] 根目录下A)[C] /tmp 目录下[E] 以上都可以4. Linux 驱动程序运行在(A )[A] 内核空间[B] 用户空间[C] 用户空间和内核空间5. Linux 系统中设备驱动程序是以模块形式组织的,编译驱动时可以用哪种方式编译(AB )[A] 静态编译进内核[B] 动态编译6. Linux 2.6 内核中,设备的主设备号用([A] 8 [B] 12 [C ] 16 [D ] 20B )位来表示,次设备号用([E] 24 [F] 32D )位来表示7. Linux 系统中哪些种类的设备有设备节点([A] 定时器[B] 字符设备[C ]BD )块设备[D ] 网络设备8. 通常情况下,kmalloc 函数能分配的最大内存是(C )[A] 4K [B] 64K [C ] 128K [D ] 4M9. 能保证物理空间上连续的内存分配函数是(A B )[A] __get_free_pages [B] kmalloc [C ] vmalloc [D ]malloc10. Linux 系统中通过add_timer 添加的timer 是(A )[A] 一次的[B] 循环的[C ] 以上两种都可以二、简答题(每题 6 分,共60 分)1. Linux 系统中以模块方式组织设备驱动程序,请列举在一个模块程序中必不可少的组成部分。
(可以写个Hello world 模块的程序)2•请从定义、性质、操作方式等方面对比说明字符设备和块设备。
linux驱动工程师面试题整理
下面的设备文件,供上层应用程/dev/1、字符型驱动设备你是怎么创建设备文件的,就是序打开使用的文件?命令结合设备的主设备号和次设备号,可创建一个设备文件。
答:mknod自动创建设备文件的方还有UDEV/MDEV评:这只是其中一种方式,也叫手动创建设备文件。
包括创建和删除设备文件,可以动态管理设备文件,式,UDEV/MDEV是运行在用户态的程序,一创建了设备文件。
运行在用户态意味着系统要运行之后。
那么在系统启动期间还有devfs共有三种方式可以创建设备文件。
、写一个中断服务需要注意哪些?如果中断产生之后要做比较多的事情你是怎么做的?2的任务尽量放在后)答:中断处理例程应该尽量短,把能放在后半段(tasklet,等待队列等半段。
包括硬写一个中断服务程序要注意快进快出,在中断服务程序里面尽量快速采集信息,评:也就是中断上方式。
tasklet件信息,然后推出中断,要做其它事情可以使用工作队列或者半部和下半部。
第二:中断服务程序中不能有阻塞操作。
为什么?大家可以讨论。
第三:中断服务程序注意返回值,要用操作系统定义的宏做为返回值,而不是自己定义的之类的。
FAILOK,、自旋锁和信号量在互斥使用时需要注意哪些?在中断服务程序里面的互斥是使用自旋锁3 还是信号量?还是两者都能用?为什么?中断服务例程中的互斥使用使用信号量的进程可以睡眠。
答:使用自旋锁的进程不能睡眠,的是自旋锁,原因是在中断处理例程中,硬中断是关闭的,这样会丢失可能到来的中断。
、原子操作你怎么理解?为了实现一个互斥,自己定义一个变量作为标记来作为一个资源4 只有一个使用者行不行?自己定义一个变量怎么我没懂第二句是什么意思,答:原子操作指的是无法被打断的操作。
可能标记资源的使用情况?其他进程又看不见这个变量评:第二句话的意思是:定义一个变量,比如 int flag =0;if(flag == 0){flag = 1;操作临界区;flag = 0;这样可否?}呢?这两个函数在设计上要注insmod 一个驱动模块,会执行模块中的哪个函数?rmmod5、意哪些?遇到过卸载驱动出现异常没?是什么问题引起的?这两个函数在设计时要注意什么?卸载函数。
linux驱动面试题
linux驱动面试题Linux驱动是指在Linux操作系统中,用于控制与硬件之间的交互和通信的软件模块。
在Linux的工作环境中,驱动程序起着至关重要的作用。
如果你准备参加Linux驱动的面试,以下是一些常见的Linux驱动面试题,希望可以对你有所帮助。
一、简述Linux驱动的作用和功能。
Linux驱动是一种软件模块,用来控制硬件设备与操作系统之间的通信和交互。
它负责将输入/输出请求传递给硬件设备,并处理来自硬件设备的中断和事件。
Linux驱动的功能包括设备初始化和配置、数据传输和处理以及错误处理等。
二、请简要介绍Linux驱动程序的加载过程。
当系统启动时,Linux内核首先会加载核心模块和驱动程序模块。
驱动程序模块是以目标硬件设备为基础的,它们包含了与设备通信所需的函数和数据结构。
一般情况下,系统会根据硬件设备信息自动加载对应的驱动程序模块。
加载驱动程序模块需要通过insmod或modprobe命令进行,这些命令可以在启动时自动执行。
三、请简述Linux驱动程序的实现方式。
Linux驱动程序的实现方式包括内核空间驱动和用户空间驱动。
内核空间驱动是指驱动程序运行在内核空间,直接与硬件设备进行交互。
用户空间驱动是指驱动程序运行在用户空间,通过系统调用和内核模块实现与硬件设备的通信。
内核空间驱动的优势是性能更好,但需要对内核进行编译和加载,而用户空间驱动的优势是开发更加容易,但性能会稍差。
四、请介绍Linux驱动程序中常用的数据结构和函数。
在Linux驱动程序中,常用的数据结构有file结构体、inode结构体和cdev结构体等。
file结构体用于表示一个打开的设备文件,可以通过它传递与设备相关的信息。
inode结构体用于表示一个文件的元数据信息,包括文件的权限、大小和创建时间等。
cdev结构体用于表示一个字符设备,包含了设备文件的操作函数和设备号等信息。
常用的函数包括register_chrdev、unregister_chrdev、request_irq和release_irq等。
linux驱动面试题目汇总
linux驱动⾯试题⽬汇总1、linux驱动分类2、信号量与⾃旋锁3、platform总线设备及总线设备如何编写4、kmalloc和vmalloc的区别5、module_init的级别6、添加驱动7、IIC原理,总线框架,设备编写⽅法,i2c_msg8、kernel panic9、USB总线,USB传输种类,urb等10、android boot 流程11、android init解析init.rc12、同步和互斥答案:Linux设备驱动的分类 (1)字符设备。
(2)块设备。
(3)⽹络设备。
字符设备指那些必须以串⾏顺序依次进⾏访问的设备,如触摸屏、磁带驱动器、⿏标等。
块设备可以⽤任意顺序进⾏访问,以块为单位进⾏操作,如硬盘、软驱等。
字符设备不经过系统的快速缓冲,⽽块设备经过系统的快速缓冲。
但是,字符设备和块设备并没有明显的界限,如对于Flash设备,符合块设备的特点,但是我们仍然可以把它作为⼀个字符设备来访问。
统⾥⽀持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的⽀持。
⾃旋锁 ⾃旋锁是专为防⽌多处理器并发⽽引⼊的⼀种锁,它应⽤于中断处理等部分。
对于单处理器来说,防⽌中断处理中的并发可简单采⽤关闭中断的⽅式,不需要⾃旋锁。
⾃旋锁最多只能被⼀个内核任务持有,如果⼀个内核任务试图请求⼀个已被争⽤(已经被持有)的⾃旋锁,那么这个任务就会⼀直进⾏忙循环——旋转——等待锁重新可⽤。
要是锁未被争⽤,请求它的内核任务便能⽴刻得到它并且继续进⾏。
⾃旋锁可以在任何时刻防⽌多于⼀个的内核任务同时进⼊临界区,因此这种锁可有效地避免多处理器上并发运⾏的内核任务竞争共享资源。
事实上,⾃旋锁的初衷就是:在短期间内进⾏轻量级的锁定。
⼀个被争⽤的⾃旋锁使得请求它的线程在等待锁重新可⽤的期间进⾏⾃旋(特别浪费处理器时间),所以⾃旋锁不应该被持有时间过长。
如果需要长时间锁定的话, 最好使⽤信号量。
但是⾃旋锁节省了上下⽂切换的开销。
Linux驱动开发笔试集锦
6. I2C 触摸屏芯片与 CPU 的数据传输流程?画出相关图例?(这题目记得不是太清楚了, 大概是考查 I2C 设备驱动的数据传输过程)
本 篇 文 章 来 源 于 Linux 公 社 网 站 () /Linux/2011-04/33960.htm
以下题目可能与原题目有差入,但力争使题目与原题目接近。
这是某个公司的 linux 内核驱动笔试题目,希望对各位要参加面试的朋友提供一点帮助,同时又要对公司果这样还是“那个”的话(^_^),请公司及时与偶联系,偶会第一时间将其删除,谢谢! (一)主要题型: 选择题(每题 3 分,约 20 题吧,具体什么题都有,包括网络、C 以及其他硬件方面的基础知识); 简答题(总分约 40 分,主要包括读 C 程序给出结果同时给出适当的解释及其他一些硬件方面的问题); (二)主要内容: 1、题目概述 (1)C 方面: 这一部分比较简单,主要是类似指针空间分配、strcpy(主要是考第一个参数是否有空间,结合指针空间 分配考)、二重指针、++及――(先加后加,先减后减)等,还有就是 volatile 及 register 修饰符的意思。 (2)其他方面: 这一部分比较杂,什么都可以考你,多半都是基础知识,尤其是硬件方面,华为的主要题目为:(主要列 出 C 以外的题目,我认为 C 是非常简单的,^_^) 2、具体题目 (1)选择题部分: 1、255.255.254.0 网段最多能支持多少主机?(大概有 5 个备选项) 2、10M 网卡传输过程中物理层采用什么编码?(SNAP?)(大概有 4 个备选项) 3、栈与队列的特点?(备选大概只有两个,A 为 FIFO,B 为 LIFO) 4、Cache 的工作方式划分?(大概也有 4 个答案,大概是:write-none,write-all,write-through,writeback)。 5、什么叫 NMI 中断?(四个备选项) 6、RISC 主要性能及特性?(大概有 6 个备选项) 7、在嵌入式系统中,所谓的北桥指的是什么? (2)简答题: 1、说说轮巡任务调度与抢占式任务调度的区别?(大概为 8 分吧,记不清了) 2、什么叫存储器高速缓存技术,其主要目的?(大概 6 分) 3、画出计算机组成的最小逻辑框图。(哼,这道题竟然 10 分) 4、谈谈 Volatile 与 Register 修饰符的作用?
linux驱动基础试题
Linux驱动基础试题(时间:1个小时)一、选择题(每题 4 分,共40 分,包括单选与多选,多选、少选均不得分)1.Linux系统中将设备进行分类管理,下列设备中( ACD )属于字符设备, ( BC )属于块设备[A] 键盘[B] 硬盘[C] 闪存设备[D] 帧缓存设备[E] 网卡2.Linux系统中,内核以(D )区分设备[A] 设备节点名[B] 设备节点号[C] 设备名称[D] 设备号3.Linux系统中设备节点可以创建在( A)[A] /dev目录下[B] 根目录下[C] /tmp 目录下[E] 以上都可以4.Linux驱动程序运行在( A )[A] 内核空间[B] 用户空间[C] 用户空间与内核空间5.Linux系统中设备驱动程序就是以模块形式组织的,编译驱动时可以用哪种方式编译( AB )[A] 静态编译进内核[B] 动态编译6.Linux 2、6 内核中,设备的主设备号用( B)位来表示,次设备号用(D )位来表示[A] 8[B] 12 [C ] 16 [D ] 20 [E] 24 [F] 327.Linux系统中哪些种类的设备有设备节点( BD )[A] 定时器[B] 字符设备[C ] 块设备[D ] 网络设备8.通常情况下,kmalloc函数能分配的最大内存就是( C )[A] 4K[B] 64K [C ] 128K [D ] 4M9.能保证物理空间上连续的内存分配函数就是( A B )[A] __get_free_pages [B] kmalloc [C ] vmalloc [D ] malloc10.Linux系统中通过add_timer 添加的timer就是( A)[A] 一次的[B] 循环的[C ] 以上两种都可以二、简答题(每题 6 分,共60 分)1、Linux系统中以模块方式组织设备驱动程序,请列举在一个模块程序中必不可少的组成部分。
(可以写个Hello world模块的程序)2、请从定义、性质、操作方式等方面对比说明字符设备与块设备。
linux驱动面试题及答案
linux驱动面试题及答案一、概述在Linux开发领域,驱动程序是至关重要的组成部分。
为了帮助读者更好地准备Linux驱动开发面试,本文将介绍一些常见的Linux驱动面试题及其答案。
二、Linux驱动基础知识1. 什么是Linux驱动?答:Linux驱动是一段软件程序,用于与特定硬件设备进行通信,实现对硬件设备的控制和数据传输。
2. Linux驱动由哪些组成部分构成?答:Linux驱动由多个组成部分构成,包括设备和驱动模块。
设备代表硬件设备,而驱动模块负责驱动设备并与内核进行交互。
3. 内核态和用户态之间的区别是什么?答:内核态是操作系统的核心部分,具有最高的权限。
用户态是应用程序运行的环境,权限较低。
在内核态中,驱动可以直接访问硬件设备。
4. 请解释Linux设备树(Device Tree)是什么?答:Linux设备树是一种描述硬件设备及其连接方式的数据结构,用于在启动时为设备提供必要的参数和配置信息。
5. 使用哪个命令来加载和卸载Linux驱动?答:insmod命令用于加载驱动模块,rmmod命令用于卸载驱动模块。
三、Linux驱动开发相关问题6. 在Linux驱动中,什么是Platform驱动?答:Platform驱动是一种Linux内核驱动,用于支持与硬件设备直接连接的平台设备。
其驱动模块通过设备树(Device Tree)来识别和初始化设备。
7. 请解释字符设备驱动是什么?答:字符设备驱动是一种Linux驱动,用于支持以字符为单位进行I/O操作的设备,如串口、终端等。
8. 什么是中断处理程序?如何在Linux驱动中实现中断处理程序?答:中断处理程序是在CPU接收到硬件设备发出的中断信号时执行的函数。
在Linux驱动中,可以通过注册中断处理程序的方式来实现,通常使用request_irq函数来注册中断处理函数。
9. 在Linux驱动中,如何进行内存管理?答:在Linux驱动中,可以使用kmalloc和kfree函数来进行动态内存的分配和释放。
LINUX试题参考及答案.docx
一•填空题:1.在Linux系统中,以文件方式访问设备。
2.Linux内核引导时,从文件/etc/fstab中读取要加载的文件系统。
3.Linux文件系统屮每个文件用i节点來标识。
4.全部磁盘块由四个部分组成,分别为引导块、专用块、i节点表块和数据存储块。
5.链接分为:硕链接和符号链接。
6.超级块包含了i节点表和空闲块表等重要的文件系统信息。
7.某文件的权限为:drw-r-r-, PJ数值形式表示该权限,则该八进制数为:644 ,该文件属性是目录。
8.前台起动的进程使用Ctrl c终止。
9.挣态路由设定厉,若网络拓扑结构发牛变化,需由系统管理员修改路由的设置。
10•网络管理的重要任务是:控制和监控。
11.安装Linux系统对破盘分区时,必须有两种分区类型:文件系统分区和交换分区。
13.编写的Shell程序运行前必须赋予该脚木文件执行权限。
14.系统管理的任务Z-•是能够在分布式环境中实现对程序和数据的童全保护、备份、恢复和更新。
15.系统交换分区是作为系统虎拟存储器的一块区域。
16.内核分为进程管理系统、内存管理系统、I/O管理系统和文件管理系统等四个子系统。
17.内核配置是系统管理员在改变系统配置硬件时要进行的重要操作。
18.在安装Linux系统中,使用netconfig程序对网络进行配置,该安装程序会一步步捉示用户输入主机名、域名、域名服务器、IP地址、网关地址和子网掩码等必要信息。
19•唯一标识每一个用户的是用户ID和用户名。
20 . RIP协议是最为普遍的一种内部协议,一般称为动态路由选择协议。
21.在Linux系统屮所有内容都被表示为文件,组织文件的各种方法称为文件系统。
22.DIICP可以实现动态1P地址分配。
23.系统网络管理员的管理对彖是服务器、用户和服务器的进程以及系统的各种资源。
24.网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的中心。
25.当想删除木系统用不上的设备驱动程序时必须编译内核,当内核不支持系统上的设备驱动程序时, 必须对内核升级。
Linux基础(习题卷21)
Linux基础(习题卷21)第1部分:单项选择题,共60题,每题只有一个正确答案,多选或少选均不得分。
1.[单选题]在大多数linux发行版本中,图形方式的运行级定义为?A)1B)2C)3D)5答案:D解析:2.[单选题]以下那个不是vi/vim的三种基本模式?A)命令模式B)输入模式C)操作模式D)底线命令模式答案:C解析:3.[单选题]计算机系统中, 不属于 DMA 控制器的是( ).A)命令/状态寄存器B)内存地址寄存器C)数据寄存器D)堆栈指针寄存器答案:D解析:4.[单选题]以下( )指令可以将文件系统为iso9660类型的光盘设备/dev/cdrom挂载在目录/mnt/media上。
A)mountB)mountC)mountD)mount答案:D解析:5.[单选题]存放设备文件的目录为( )。
A)/devB)/etcC)/libD)/bin答案:A解析:6.[单选题]下面()不是Apahce基于主机的访问控制指令。
答案:D解析:7.[单选题]当系统工作负载增加时,CPU的_______将占很大比重。
A)用户时间B)系统时间C)空闲时间D)进程时间答案:A解析:8.[单选题]将光盘/dev/cdrom安装到/mnt/cdrom的命令是()。
A)mount /dev/cdromB)mount /mnt/cdrom /dev/cdromC)mount /dev/cdrom /mnt/cdromD)mount /mnt/cdrom /dev/hdc答案:C解析:9.[单选题]在GRUB配置文件中,以哪个关键字开头的行定义了用户的可见菜单标签?A)labelB)titleC)choiceD)menuitem答案:B解析:10.[单选题]下面有关shell的说法正确的是A)shell是用户与Linux操作系统内核之间的接口B)shell是操作员使用的程序C)shell是linux核心程序D)shell是Windows的命令行程序答案:A解析:11.[单选题]下面的叙述中,正确的是()。
linux驱动工程师面试题整理
1、字符型驱动设备你是怎么创建设备文件的,就是/dev/下面的设备文件,供上层应用程序打开使用的文件?答: mknod 命令结合设备的主设备号和次设备号,可创建一个设备文件。
评:这只是其中一种方式,也叫手动创建设备文件。
还有 UDEV/MDEV 自动创建设备文件的方式,UDEV/MDEV 是运行在用户态的程序,可以动态管理设备文件,包括创建和删除设备文件,运行在用户态意味着系统要运行之后。
那末在系统启动期间还有 devfs 创建了设备文件。
一共有三种方式可以创建设备文件。
2、写一个中断服务需要注意哪些?如果中断产生之后要做比较多的事情你是怎么做的?答:中断处理例程应该尽量短,把能放在后半段(tasklet,等待队列等)的任务尽量放在后半段。
评:写一个中断服务程序要注意快进快出,在中断服务程序里面尽量快速采集信息,包括硬件信息,然后推出中断,要做其它事情可以使用工作队列或者 tasklet 方式。
也就是中断上半部和下半部。
第二:中断服务程序中不能有阻塞操作。
为什么?大家可以讨论。
第三:中断服务程序注意返回值,要用操作系统定义的宏做为返回值,而不是自己定义的OK,FAIL 之类的。
3、自旋锁和信号量在互斥使用时需要注意哪些?在中断服务程序里面的互斥是使用自旋锁还是信号量?还是两者都能用?为什么?答:使用自旋锁的进程不能睡眠,使用信号量的进程可以睡眠。
中断服务例程中的互斥使用的是自旋锁,原因是在中断处理例程中,硬中断是关闭的,这样会丢失可能到来的中断。
4、原子操作你怎么理解?为了实现一个互斥,自己定义一个变量作为标记来作为一个资源惟独一个使用者行不行?答:原子操作指的是无法被打断的操作。
我没懂第二句是什么意思,自己定义一个变量怎么可能标记资源的使用情况?其他进程又看不见这个变量评:第二句话的意思是:定义一个变量,比如 int flag =0;if(flag == 0){flag = 1;操作临界区;flag = 0;}这样可否?5、insmod 一个驱动模块,会执行模块中的哪个函数? rmmod 呢?这两个函数在设计上要注意哪些?遇到过卸载驱动浮现异常没?是什么问题引起的?答: insmod 调用 init 函数, rmmod 调用 exit 函数。
华清__初级驱动试题
驱动基础试题(时间:1个小时)一、选择题(每题 4 分,共40 分,包括单选和多选,多选、少选均不得分)1. Linux系统中将设备进行分类管理,下列设备中(ACD )属于字符设备,(BC)属于块设备[A] 键盘[B] 硬盘[C] 闪存设备[D] 帧缓存设备[E] 网卡2.Linux系统中,内核以(D)区分设备[A] 设备节点名[B] 设备类名称[C] 设备名称[D] 设备号3.Linux系统中设备节点可以创建在(D )[A] /dev目录下[B] 根目录下[C] /tmp目录下[D] 以上都可以4.Linux驱动程序运行在( A )[A] 内核空间[B] 用户空间[C] 内核空间和用户空间5.Linux系统中设备驱动程序是以模块形式组的,编译驱动时可以用哪种方式编译(AB )[A] 静态编译进内核[B] 动态编译6.Linux 2.6.35 内核中,设备的主设备号用( B )位来表示,次设备号用(D)位来表示[A]8 [B] 12[C]16 [D] 20[E] 24 [F] 327.Linux系统中哪些种类的设备有设备节点(BC)[A] 定时器[B] 字符设备[C] 块设备[D] 网络设备8.通常情况下,kmalloc函数能分配的最大内存是(C)[A] 4K [B] 64K[C]128K [D] 4M9.能保证物理空间上连续的内存分配函数是(AB)[A]__get_free_pages[B] kmalloc [C] vmalloc[D] malloc10.Linux系统中通过add_timer 添加的timer是(A)[A] 一次的[B] 循环的[C] 以上两种都可以二、简答题(每题 6 分,共60 分)1. Linux系统中以模块方式组织设备驱动程序,请列举在一个模块程序中必不可少的组成部分。
(可以写个Hello world模块的程序)#include <linux/init.h>#include <linux/kernel.h>#include <linux/module.h>static int __init fsmod_init(void){printk(KERN_INFO "Hello, Farsight!\n");return 0;}static void __exit fsmod_exit(void){printk(KERN_INFO "Goodbye, Farsight!\n");}module_init(fsmod_init);module_exit(fsmod_exit);MODULE_LICENSE("Dual BSD/GPL");MODULE_AUTHOR("KevinJiang<*******************>");MODULE_DESCRIPTION("This is an example for linux driver module");2. 请从定义、性质、操作方式等方面对比说明字符设备和块设备。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
谢谢4 3. 请列举Linux设备驱动程序中,程序延缓执行的机制。 4. 简述Linux设备驱动中使用中断的步骤。 5. 简述信号量和自旋锁的异同和使用时的注意事项。 6. 简述命令 mknod /dev/zero c 1 5 的做用和命令各个部分的含义,并写出创建一个块设备节点的命令。
谢谢5 7. 简述命令insmod,rmmod,lsmod 的功能。 8. 驱动程序中采用动态申请设备号的,我们如何得到对应设备的设备号? 9. 简述设备驱动程序和普通应用程序的异同点。
谢谢6 10. 简述mmap机制的作用和使用谢谢2 Linux驱动基础试题(时间:1个小时) 一、选择题(每题 4 分,共 40 分,包括单选和多选,多选、少选均不得分) 1. Linux系统中将设备进行分类管理,下列设备中( ACD )属于字符设备, ( BC )属于块设备 [A] 键盘 [B] 硬盘 [C] 闪存设备 [D] 帧缓存设备 [E] 网卡 2. Linux系统中,内核以(D )区分设备 [A] 设备节点名 [B] 设备节点号 [C] 设备名称 [D] 设备号 3. Linux系统中设备节点可以创建在( A) [A] /dev目录下 [B] 根目录下 [C] /tmp 目录下 [E] 以上都可以 4. Linux驱动程序运行在( A ) [A] 内核空间 [B] 用户空间 [C] 用户空间和内核空间 5. Linux系统中设备驱动程序是以模块形式组织的,编译驱动时可以用哪种方式编译( AB ) [A] 静态编译进内核 [B] 动态编译 6. Linux 2.6 内核中,设备的主设备号用( B)位来表示,次设备号用(D )位来表示 [A] 8 [B] 12 [C ] 16 [D ] 20 [E] 24 [F] 32
谢谢3 7. Linux系统中哪些种类的设备有设备节点( BD ) [A] 定时器 [B] 字符设备 [C ] 块设备 [D ] 网络设备 8. 通常情况下,kmalloc函数能分配的最大内存是( C ) [A] 4K [B] 64K [C ] 128K [D ] 4M 9. 能保证物理空间上连续的内存分配函数是( A B ) [A] __get_free_pages [B] kmalloc [C ] vmalloc [D ] malloc 10. Linux系统中通过add_timer 添加的timer是( A) [A] 一次的 [B] 循环的 [C ] 以上两种都可以 二、简答题(每题 6 分,共60 分) 1. Linux系统中以模块方式组织设备驱动程序,请列举在一个模块程序中必不可少的组成部分。 (可以写个Hello world模块的程序) 2. 请从定义、性质、操作方式等方面对比说明字符设备和块设备。