1. 内核堆栈区别:

1.栈自动分配回收,函数里面声明的变量;2.堆:malloc kmalloc申请的空间,需要自己释放

https://blog.csdn.net/tainjau/article/details/79430905

https://www.cnblogs.com/alantu2018/p/8994603.html

https://blog.csdn.net/yaowangII/article/details/79851968

https://blog.csdn.net/thisway_diy/article/details/80857621

2. https://blog.csdn.net/lee244868149/article/details/80635411

http://www.wowotech.net/irq_subsystem/soft-irq.html

3. kernel 如何访问外围设备寄存器

http://blog.chinaunix.net/uid-25017441-id-3080023.html

ioremap (MMU打开后)iowrite32(uint32 val, void*addr)

*(volatile unsigned char*)address  //

4. 写一个驱动:https://blog.csdn.net/hanp_linux/article/details/90474432

https://blog.csdn.net/qwaszx523/article/details/65635071

5. workque(可睡眠,可调度) tasklet https://www.cnblogs.com/bbsno1/p/3280004.html

6.中断上文:ARM CPU会自动保存CPSR 到SPSR, 改变CPU模式到IRQ,保存返回地址到LR_IRQ, PC设成异常向量表对应的函数(irq_handle)

中断下文:SPSR->CPSR, LR_IRQ->LR, ARM 切回模式

https://blog.csdn.net/m0_37884601/article/details/81583551

进程上下文:所谓的“进程上下文”,就是一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈上的内容,当内核需要切换到另一个进程时,它需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。

一个进程的上下文可以分为三个部分:用户级上下文、寄存器上下文以及系统级上下文。

(1)用户级上下文: 正文、数据、用户堆栈以及共享存储区;
    (2)寄存器上下文: 通用寄存器、程序寄存器(IP)、处理器状态寄存器(EFLAGS)、栈指针(ESP);
    (3)系统级上下文: 进程控制块task_struct、内存管理信息(mm_struct、vm_area_struct、pgd、pte)、内核栈。
       当发生进程调度时,进行进程切换就是上下文切换(context switch).操作系统必须对上面提到的全部信息进行切换,新调度的进程才能运行。

各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等

其中处理器总处于以下状态中的一种:

内核态,运行于进程上下文,内核代表进程运行于内核空间;

内核态,运行于中断上下文,内核代表硬件运行于内核空间;

用户态,运行于用户空间。

英文解释: http://blog.itpub.net/31561984/viewspace-2220145/

https://www.cnblogs.com/Anker/p/3269106.html

https://blog.csdn.net/qq_38500662/article/details/80598486

7. spin lock:这是一个内核态概念。spin lock与semaphore的主要区别是spin lock是busy waiting,而semaphore是sleep。 http://blog.sina.com.cn/s/blog_8af6bbd10100xalu.html

https://www.cnblogs.com/tureno/articles/6067441.html***

mutex可以睡眠、调度

8. ARM 睡眠、唤醒的cpu实现http://blog.sina.com.cn/s/blog_5d1f66570102x2b6.html

http://www.wowotech.net/linux_kenrel/suspend_and_resume.html

9. Kernel 下的检测工具:

1. protex代码release前检查, coverity
2. findbugs gerrit提交检查(Hudson-build/kernel/scripts/checkpatch.pl/autoconfig.pl/copyright_claim/commit message/ DMS tag check),cpplint(google的)
3. scripts dtc(Device tree生成文件的解析)工具

10.

内核抢占API函数
在中断或临界区代码中,线程需要关闭内核抢占,因此,互斥机制(如:自旋锁(spinlock)、RCU等)、中断代码、链表数据遍历等需要关闭内 核抢占,临界代码运行完时,需要开启内核抢占。关闭/开启内核抢占需要使用内核抢占API函数preempt_disable和 preempt_enable。
内核抢占API函数说明如下(在include/linux/preempt.h中):
preempt_enable() //内核抢占计数preempt_count减1
preempt_disable() //内核抢占计数preempt_count加1

11. 内核在线源码:https://code.woboq.org/linux/linux/include/linux/spinlock_api_smp.h.html#__raw_spin_lock_irqsave

  spin_lock_irqsave->local_irq_save(关中断 保存中断到flags)

http://ishare.iask.sina.com.cn/f/bsYIWltJK13.html

https://www.cnblogs.com/sky-heaven/p/5746730.html

https://blog.csdn.net/changexhao/article/details/78287730

12. Bringup

defconfig: copy of msm8974-perf_defconfig
gpiomux : copy of board-8974-gpiomux.c
dts : copy of msm8974pro-ac-pm8941-mtp.dts

高通dsi display驱动:

https://cloud.tencent.com/developer/article/1149260
MDSS : 高通平台lcd multimedia Display sub system
DSI: Display Serial Interface

13. container_of

#ifndef offsetof
#define offsetof(type, md) ((unsigned long)&((type *)0)->md)
#endif #ifndef container_of
#define container_of(ptr, type, member) \
((type *)((char *)(ptr) - offsetof(type, member)))
#endif

14. bit revert


unsigned char revertBit(unsigned char a){
unsigned char ret=;
int i=;
while(i<){
ret = ret<<;
ret |= (a&0x1);
a = a>>;
i++;
} return ret;
} //
// vector< vector<int> > b(10, vector<int>(5, 0)) ; //创建一个10*5的int型二维向量
int main()(
cout<<"xxxx"<<endl;
}
//按bit位反转unsigned int(32)
unsigned int revertUnsignedint(unsigned int val){
  unsigned int ret=;
for(int i=; i<; i++){
    ret = ret<<;
    ret |= val&0x1;
    val = val>>;
  }
  return ret;
}

  

  

Kernel--试题的更多相关文章

  1. 【转】 71道经典Android面试题和答案,重要知识点都包含了

    ,,面试题1.        下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存  B.内存回收程序负责释放无用内存   C.内存回收程序允许程序员直接释放内存 ...

  2. 经典71道Android试题及答案

    本文为开发者奉献了70道经典Android面试题加答案--重要知识点几乎都涉及到了,你还等啥,赶紧收藏吧!! 1. 下列哪些语句关于内存回收的说明是正确的? (b) A. 程序员必须创建一个线程来释放 ...

  3. 19、android面试题整理(自己给自己充充电吧)

    (转载,出处丢失,请原作者原谅,如有意见,私信我我会尽快删除本文) JAVA 1.GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问 ...

  4. 71道经典Android面试题和答案

    ,,面试题1.        下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存  B.内存回收程序负责释放无用内存   C.内存回收程序允许程序员直接释放内存 ...

  5. android面试题集1

    Android 面试题(有详细答案) 附带答案,共100分 一.选择题(30题,每题1.5分,共45分) 1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分类,按功 ...

  6. android面试题之一

    在接下来的一段时间,我将收集一些常见面试题,综合网上资料加自己测试与理解,将其总结出来和大家分享,里面难免有一些问题,希望大家提出宝贵意见以便及时更正. 一.Activity.Service.Broa ...

  7. ipcs、ipcrm、sysresv、kernel.shmmax

    ipcs.ipcrm.sysresv.kernel.shmmax 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可 ...

  8. Shell企业案例实战和企业面试题

    shell企业面试题 1.批量创建带有随机小写字符文件程序 使用for循环在/pizza目录下创建10个html文件,其中每个文件包含10个随机小写字母加固定字母_pizza 1.思路分析: 核心是: ...

  9. Linux rhcsa认证考试试题模拟

    声明: 此套试题是2017年rhcsa考试题库,本题库需配合相对应的机器操作,实验环境在我的网盘下载 考试环境: server.group8.example.com 172.24.8.254/24 s ...

  10. linux运维工程师面试题收集

    面试必考 mysql5和mysql6 有什么区别 mysql-server-5.5:默认引擎改为Innodb,提高了性能和扩展性,提高实用性(中继日志自动恢复) mysql-server-5.6:In ...

随机推荐

  1. LR性能测试课程及视频教程

    LR性能测试课程及视频教程课程如下: 1.性能测试核心技术-2.性能测试脚本开发-3.LR场景设计-4.LR指标分析. 1.性能测试是通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各 ...

  2. Zhejiang Provincial Collegiate Programming Contest + ZOJ Monthly

    题目链接:https://vjudge.net/contest/152802#overview. 前五题以前做过了.不过还是没能全A= =. 前三题水题,略过. 第四题是找规律,暴力打表找一下循环节即 ...

  3. vue draggable 火狐拖拽搜索问题

    最近在使用vuedraggable做导航时候,谷歌拖拽是没问题的,但是在火狐测试时候,拖拽时候是可以成功,但是火狐还是打开了一个新的tab,并且搜索了,一开始想着是阻止默认行为,但是在@end时间中阻 ...

  4. 浅述不同版本ios系统有什么特点 ios 1 -ios 12

    版本记录 版本号 时间 V2.0 2019.08.20 前言 到目前为止,ios的版本已经发到了ios11的测试版,今年正式版马上就会出来,ios发布了这么多的版本,到底每个版本都有什么显著的特点?用 ...

  5. fastadmin 增加外键表搜索

    1.老规矩,先上效果图  (例子:https://ask.fastadmin.net/question/1035.html) 2.  关键字眼  selectpage

  6. jmeter-Charles抓包显示的请求方式错误了,难道

    抓包显示的请求方式为get,但是get一直报错见上图 将get修改为post就正确了

  7. 分布式系统的应用程序性能监视工具,专为微服务、云本机架构和基于容器(Docker、K8s、Mesos)架构而设计。 SkyWalking

    Apache SkyWalking™ | SkyWalking Teamhttp://skywalking.apache.org/zh/ Application performance monitor ...

  8. python项目生成及导入依赖的第三方库

    requirements.txt用来记录项目所有的依赖包和版本号,只需要一个简单的pip命令就能完成. pip freeze >requirements.txt 然后就可以用 pip insta ...

  9. Mac下安装MySQL 5.6.40

    Mac下安装MySQL 5.6.40 - 干勾鱼的CSDN博客 - CSDN博客   原创 Mac下安装MySQL 5.6.40 2018-06-18 10:34:03 我是干勾鱼 阅读数 5927 ...

  10. 整理了一份比较全面的PHP开发编码规范.

    这些年来多从事Linux下PHP和C相关的开发,带过很多项目和团队,下面是根据经验整理的PHP编码规范,可以用作给大家的范例和参考,根据需要进行取舍和修改! (可能最新的一些php5的规范不够完整,今 ...