linux驱动开发面试题

1.linux中内核空间及用户空间的区别?

记住“22”,两级分段两级权限。

例如是32位的机器,从内存空间看:顶层1G是内核的,底3G是应用的;从权限看:内核是0级特权,应用是3级特权。

2.用户空间与内核通信方式有哪些?用户获得内核信息方式有哪些?

系统调用。proc。

3.系统调用是什么?

linux提供给应用层访问内核包括设备驱动、进程管理、内核参数的接口,例如字符设备驱动,对上层是统一的接口,对底层则由具体驱动实现。其本质是“门机制”,利用机器指令进入更高的特权空间(内核态)。

3.补-以read为例,描述系统调用的过程?

对一个已创建的普通文件,要先谈open过程:vfs,fs,cache,通用块,IO调度,块驱动,物理块,从而拿到fops给到文件描述符,之后read就和底层读写相关起来了。

4.字符设备和块设备的区别,请分别列举一些?

1.数据流2.系统接口(块有两套接口)

字符设备:串口、键鼠、摄像头

块设备:sd卡,u盘

5.uboot启动流程?

CTUFRC

CPU---->>TIM---->>UART/FLASH/DRAM---->>relocate_code---->>command

6.linux内核启动流程?

UMMISMB

uboot通过theKernel启动---->>Machine---->>MMU---->>Init---->>Setup---->>Mount---->>Busybox

7.linux调度原理?

完全公平/多级反馈队列/基于优先级

优先级:很好理解。缺点:调度是遍历的,饥饿现象

多级反馈队列:超过一定时间下放到低优先级队列。特点:bitmap

完全公平:红黑树动态调整优先级(计算虚拟时间)

8.注册一个字符设备流程,代码层面?

cdev_init(cdev,fops)---->>register_chrdev(设备号,设备节点,fops)

9.创建设备节点?

mknod/启动脚本+mdev -s

10.释放资源要注意的?

内存,ioremap,中断,定时器,工作队列等等要释放

11.内核函数mmap的实现原理,机制?

将文件fd内容映射到进程虚拟内存进行读写,不必经过read/write

void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset )

12.遇到Oops?怎么处理的?

当内核出错时(比如访问非法地址)打印出来的信息被称为 Oops 信息。

(未完待续)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/464303.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于Ubuntu虚拟机突然上不了网的问题

今天刚重新把Ubuntu虚拟机下回来准备大干一场,结果去吃饭回来虚拟机就上不去网了,具体体现为右上角没有网络的图标,下图是有网络的情况,废话不多说,直接给出解决方案:博客在此 我就是运行了这三行代码就成功…

记一些有关Element Plus的样式修改

先记一个放着,后续慢慢补充。。。 一个 Vue 3 UI 框架 | Element Plus Radio 单选框 1、去除radio的圆圈 .box-radio {/deep/ .el-radio__input {display: none;} }

jupyter notebook 突然莫名奇妙的白屏

jupyter notebook 突然莫名奇妙的白屏 事件背景: 最近在折腾openai,哎,一言难尽,使用的是conda管理python版本的切换,使用jupyter notebook来运行python程序,其实PyCharm也行,但是,…

python二级备考(2)-简单应用题

第1套 使用turtle库的turtle. right()函数和turtle.fd()函数绘制一个菱形,边长为200像素,4个内角度数为2个60度和2个120度 键盘输入一组人员的姓名、性别、年龄等信息,信息间采用空格分隔,每人一行,空行回车结束录入&a…

【基于HTML5的网页设计及应用】——改变文字和背景颜色

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

如何通过蓝牙获取手机时间同步时钟RTC万年历走ble或者edr经典蓝牙

一、功能简介 KT6368A支持连接手机获取手机的时间信息,可以同步时钟 无需安装任何app,直接使用系统蓝牙即可实现 走的就是edr的经典蓝牙 同时它不影响音频蓝牙,还能保持低功耗的运行 实现的方式就是手机连接好蓝牙芯片KT6368A&#xff0…

Jz32从上往下打印二叉树

//add()和remove()方法在失败的时候会抛出异常(不推荐) // 用offer 和poll 替代 import java.util.ArrayList; import java.util.*; /** public class TreeNode {int val 0;TreeNode left null;TreeNode right null;public TreeNode(int val) {this.val val;}} */ public …

NSSCTF 403,444,2145,3845,404,445

[SWPUCTF 2021 新生赛]简简单单的逻辑 py文件,使用pycharm打开进行分析 其中,hex()[2:]:将十进制转化为十六进制 zfill(2):位数不足2,前补0 这里即将flag的ASCII码与key进行异或,再将每位转化为十六进制…

大数据 - Spark系列《十四》- spark集群部署模式

Spark系列文章: 大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客 大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客 大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客 大数据 - Spark系列《…

kubernetes学习总结

kubernetes学习大纲 kubernetes的发展历程 Kubernetes的组件和架构 Kubernetes API对象基本组成 Kubernetes中的yml详解1 Kubernetes中的yml详解2 Deployment与Service

【GIS系列】GeoTools简介及工具类分享

本文将对GeoTools相关概念进行介绍,同时会给大家分享我工作中用到的工具类及使用方法。 作者:后端小肥肠 目录 1.前言 2. GeoTools简介 3. Geotools使用示例 3.1. 开发环境搭建 3.1.1. 所需版本和工具 3.1.2. pom依赖 3.1.3. 示例代码 4. 工具类…

[VCTF2024纳新赛]-PWN:ezhp_code解析

查看保护 查看ida 简单来说就是创建堆块和删除堆块而已,创建堆块的函数附带有写入函数。 但这里要注意一个程序里面的特殊的地方 在我们创建堆块时,程序会先创建一个0xa0大小堆块,并且这个地方还有个特殊的check_handle函数,如果…

SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)

文章目录 1.整合MyBatis1.需求分析2.数据库表设计3.数据库环境配置1.新建maven项目2.pom.xml 引入依赖3.application.yml 配置数据源4.Application.java 编写启动类5.测试6.配置类切换druid数据源7.测试数据源是否成功切换 4.Mybatis基础配置1.编写映射表的bean2.MonsterMapper…

✅技术社区—通过Canal框架实现MySQL与ElasticSearch的数据同步

Canal 是一个由阿里巴巴开源的,基于 Java 的数据库变更日志解析的中间件,其原理是基于Binlog订阅的方式实现,模拟一个MySQL Slave 订阅Binlog日志,从而实现CDC,主要用于实现 MySQL 数据库的增量数据同步。它主要的使用…

理解计算属性等

计算属性 计算属性的作用是将写在computed内的写了对应的属性名,属性值都是函数,将这属性值的函数调用之后的返回值赋给属性名的变量。因此其实计算属性内的是值,不是方法,因此写插值等语句是只是写变量,而不是调用。且…

第三篇 - 概述- IAB受众和技术标准 - IAB视频广告标准《数字视频和有线电视广告格式指南》

第三篇 - 概述- IAB受众和技术标准​​​​​​​ - 我为什么要翻译介绍美国人工智能科技公司IAB技术标准系列(2) 本文目录 一、IAB技术实验室简介 二、概述及IAB受众 三、资源- IAB倡导的相关视频广告技术标准 四、案例分享-介绍一家数字化营销服务…

STM32F407_多点电容触摸(GT911)驱动

目录标题 前言1、简单介绍2、触摸芯片与主机的硬件连接3、内部寄存器3.1、控制寄存器(0X8040)3.2、配置寄存器组(0X8047~0X8100)3.3、状态寄存器(0x814E)3.4、坐标寄存器(0x8150-0x8177) 4、初始化流程4.1、IIC地址选择4.2、更新G…

OpenHarmony—应用UX设计原则

设计原则 当为多种不同的设备开发应用时,有如下设计原则: 差异性 充分了解所要支持的设备,包括屏幕尺寸、交互方式、使用场景、用户人群等,对设备的特性进行针对性的设计。 一致性 除了要考虑每个设备的特性外,还…

修复 error Delete `␍` prettier/prettier 错误

修复 error Delete ␍ prettier/prettier 错误 问题背景报错信息报错原因解决办法修改CRLF----针对单个文件yarn run lint --fix 一键修复(官方提供) 问题背景 今天在使用 openapi 自动生成前端接口代码的时候,爆了一个类似 eslint 规范的错…

AtCoder Beginner Contest 345 A - E 题解

A - Leftrightarrow 思路 判断第一个字符是否为&#xff0c;最后一个字符是否为&#xff0c;都满足的话&#xff0c;再判断中间字符是否都为 代码 #include<iostream> using namespace std; #define int long longbool check(string s){int ns.size();if(s[0]!<) …