linux面试题及答案.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一 1. 如何编写一个 LINUX驱动? 2. Linux 设备中字符设备与块设备有什么主要的区别?请分别列举一些实际的设备说出它们是 属于哪一类设备。 字符设备:字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序 来实现这种特性。字符设备驱动程序通常至少实现 open,close,read 和 write 系统调用。字符终端、 串口、鼠标、键盘、摄像头、声卡和显卡等就是典型的字符设备。 块设备:和字符设备类似,块设备也是通过 /dev 目录下的文件系统节点来访问。块设备上能 够容纳文件系统,如: u 盘, SD卡,磁盘等。 字符设备和块设备的区别仅仅在于内核内部管理数据的方式,也就是内核及驱动程序之间的软 件接口,而这些不同对用户来讲是透明的。 3. 查看驱动模块中打印信息应该使用什么命令?如何查看内核中已有的字符设备的信息?如何 查看正在使用的有哪些中断号? 1) 查看驱动模块中打印信息的命令: dmesg 2) 查看字符设备信息可以用 lsmod 和 modprobe,lsmod 可以查看模块的依赖关系, modprobe 在加载模块时会加载其他依赖的模块。 3 )显示当前使用的中断号 cat/proc/interrupt 4. 请简述主设备号和次设备号的用途。如果执行 mknodchartestc464 ,创建 chartest 使用的是那一类设备驱动程序。 1)主设备号:主设备号标识设备对应的驱动程序。虽然现代的 linux 内核允许多个驱动程序共 享主设备号,但我们看待的大多数设备仍然按照“一个主设备对应一个驱动程序”的原则组织。 次设备号:次设备号由内核使用,用于正确确定设备文件所指的设备。依赖于驱动程序的编写 方式,我们可以通过次设备号获得一个指向内核设备的直接指针,也可将此设备号当作设备本地数组 的索引。 2 )chartest 由驱动程序 4 管理,该文件所指的设备是 64 号设备。(感觉类似于串口终端或者 字符设备终端)。 5. 设备驱动程序中如何注册一个字符设备?分别解释一下它的几个参数的含义。 注册一个字符设备驱动有两种方法: 1)voidcdev_init(structcdev*cdev,structfile_operations*fops) 该注册函数可以将 cdev 结构嵌入到自己的设备特定的结构中。 cdev 是一个指向结构体 cdev 的指针,而 fops 是指向一个类似于 file_operations 结构(可以是 file_operations 结构,但不 限于该结构)的指针 . 页脚内容 1 一 2 ) intregister_chrdev(unsignedintmajor,constchar*namem,structfile)operations*fopen); 该注册函数是早期的注册函数, major 是设备的主设备号, name是驱动程序的名称, 而 fops 是默认的 file_operations 结构(这是只限于 file_operations 结构)。 6. 请简述中断于 DMA的区别。 Linux 设备驱动程序中,使用哪个函数注册和注销中断处理程序? 1)MDA不需 CPU参与而中断是需要 CPU参与的。 2 )中断注册函数和中断注销函数 注册中断: intrequest_irq(unsignedintirq,irqreturn_t(*handler)(int,void*,structpt_regs*),unsi gnedlongflags,constchar*dev_name,void*dev_id); 注销中断; Voidfree_irq(unsignedintirq,void*dev_id);

文档评论(0)

拉拉链 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档