
linux内核
东晋偏安
天行健,君子以自强不息!
展开
-
内核态和用户态的区别
内核态和用户态的区别就像世界上的人并不平等一样,并不是所有的程序都是平等的。世界上有的人占有资源多,有的人占有资源少,有的人来了,别人得让出资源,有的人则专门为别人让出资源。程序也是这样,有的程序可以访问计算机的任何资源,有的程序则只能访问非常受限的少量资源。而操作系统作为计算机的管理者,自然不能和被管理者享受一样的待遇,它应该享有更多的方便或特权。为了区分不用程序的不同权利,人们发胆了内核和...转载 2019-03-15 20:16:58 · 5791 阅读 · 0 评论 -
make menuconfig
make menuconfig在嵌入式领域当中,在配置内核的时候会有很多配置方法,比如说make config(基于文本的为传统的配置界面)、make oldconfig(如何只想在原来内核配置的基础上修改一部分,则会省去很多麻烦)、make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)、make menuconfig(基于文本选择的配置界面,字符终端下推荐使用),以...转载 2019-03-15 20:14:13 · 640 阅读 · 0 评论 -
谈谈Linux内核驱动的编码风格
谈谈Linux内核驱动的编码风格最近在向Linux内核提交一些驱动程序,在提交的过程中,发现自己的代码离Linux内核的coding style要求还是差很多。当初自己对内核文档里的CodingStyle一文只是粗略的浏览,真正写代码的时候在很多细节上会照顾不周。不过, 在不遵守规则的程序员队伍里,我并不是孤独的。如果去看drivers/staging下的代码,就会发现很多驱动程序都没有严格遵...转载 2019-03-08 23:49:42 · 224 阅读 · 0 评论 -
Linux内核中常用的C语言技巧
Linux内核中常用的C语言技巧相信读者在阅读本文之前已经学习过C语言了,但是想精通C语言还需要下一番苦功夫。Linux内核是基于C语言编写的,熟练掌握C语言是深入学习Linux内核的基本要求。本文摘自《奔跑吧Linux内核 入门篇》。GNU C语言的扩展GCC的C编译器除了支持ANSI C标准之外,还对C语言进行了很多的扩充。这些扩充对代码优化、目标代码布局以及安全检查等方面提供了很...转载 2019-03-06 09:03:20 · 2606 阅读 · 0 评论 -
Linux驱动面试常见题总结
Linux驱动面试常见题总结1、驱动中操作物理绝对地址为什么要先ioremap?因为在内核中操作的都是虚拟地址,内核访问不到物理地址,只能通过ioremap映射为虚拟地址 内核才能访问此内存空间2、设备驱动模型三个重要成员是?platform总线的匹配规则是?在具体应用上要不要先注册驱动再注册设备?有先后顺序没?设备驱动模型的三个重要成员是总线,驱动,设备。platfoem总线...转载 2019-03-01 14:21:00 · 419 阅读 · 0 评论 -
Linux 启动流程图
linux 启动流程图代码的执行代码执行过程中,CS:IP始终指向下一条指令的地址~顺序执行:总是指向地址连续的下一条指令跳转/分支:执行这样的指令的时候,cs : eip的值会根据程序需要被修改call:将当前cs : eip的值压入栈顶,cs : eip指向被调用函数的入口地址ret:从栈顶弹出原来保存在这里的cs : eip的值,放入cs : eip中x86体系结...转载 2019-02-25 20:17:18 · 1108 阅读 · 0 评论 -
Linux IO模式及 select、poll、epoll详解
Linux IO模式及 select、poll、epoll详解注:本文是对众多博客的学习和总结,可能存在理解错误。请带着怀疑的眼光,同时如果有错误希望能指出。同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。本文讨论的背景是Linux环境下的network IO。一 概念说明在进行...转载 2019-02-25 15:14:29 · 184 阅读 · 0 评论 -
Linux内核通知链机制的原理及实现
Linux内核通知链机制的原理及实现一、概念: 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子 系统,Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用,而不能够在内核与用户空间之间进行事件的通知。 通知链表是一个函数链表,链表上的每一个节点都注册了一个函数。当某个事...转载 2019-02-25 15:14:20 · 372 阅读 · 0 评论 -
Linux 总线、设备、驱动模型的探究,以及设备树的由来(2/2)
Linux 设备树(DTS)的深入理解设备树的出现上一节说过设备树的出现是为了解决内核中大量的板级文件代码,通过 DTS 可以像应用程序里的 XML 语言一样很方便的对硬件信息进行配置。关于设备树的出现其实在 2005 年时候就已经在 PowerPC Linux 里出现了,由于 DTS 的方便性,慢慢地被广泛应用到 ARM、MIPS、X86 等架构上。为了理解设备树的出现的好处,先来看下在...转载 2019-02-21 17:42:51 · 1197 阅读 · 0 评论 -
Linux 总线、设备、驱动模型的探究,以及设备树的由来(1/2)
Linux 总线、设备、驱动模型的探究设备驱动模型的需求总线、设备和驱动模型,如果把它们之间的关系比喻成生活中的例子是比较容易理解的。举个例子,充电墙壁插座安静的嵌入在墙面上,无论设备是电脑还是手机,插座都能依然不动的完成它的使命——充电,没有说为了满足各种设备充电而去更换插座的。其实这就是软件工程强调的高内聚、低耦合概念。所谓高内聚低耦合是模块内各元素联系越紧密就代表内聚性就越高,模...转载 2019-02-21 17:40:50 · 564 阅读 · 0 评论 -
Linux内核分析:dup、dup2的实现
Linux内核分析:dup、dup2的实现 一、首先需要看一下这两个函数的作用:1 #include <unistd.h>2 3 int dup(int oldfd);4 int dup2(int oldfd, int newfd);根据manual的解释:dup:创建一份oldfd的拷贝,使用最小的文件描述符作为新的文件描述符。dup2:创建一份oldfd...转载 2019-02-01 09:41:55 · 466 阅读 · 0 评论 -
Linux内核分析:打开文件描述符实现
Linux内核分析:打开文件描述符实现在Linux中每一个进程的数据是存储在一个task_struct结构(定义在sched.h中)中的。 1 struct task_struct { 2 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ 3 struct threa...转载 2019-02-01 09:12:23 · 375 阅读 · 0 评论 -
Device Tree(三):代码分析
原文网址:http://www.wowotech.net/linux_kenrel/dt-code-analysis.html一、前言Device Tree总共有三篇,分别是:1、为何要引入Device Tree,这个机制是用来解决什么问题的?(请参考引入Device Tree的原因)2、Device Tree的基础概念(请参考DT基础概念)3、ARM linux中和Devic...转载 2018-01-24 14:45:47 · 222 阅读 · 0 评论 -
Device Tree(二):基本概念
原文网址:http://www.wowotech.net/linux_kenrel/dt_basic_concept.html一、前言一些背景知识(例如:为何要引入Device Tree,这个机制是用来解决什么问题的)请参考引入Device Tree的原因,本文主要是介绍Device Tree的基础概念。简单的说,如果要使用Device Tree,首先用户要了解自己的硬件配置和系统运行...转载 2018-01-24 14:43:38 · 168 阅读 · 0 评论 -
Device Tree(一):背景介绍
原文网址:http://www.wowotech.net/device_model/why-dt.html一、前言作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的、扯皮的俗务占据了大部分的时间。当有机会下载3.14的内核并准备学习的时候,突然发现linux kernel对于我似乎变得非常的陌生了,各种新的机制,各种framewo...转载 2018-01-24 14:41:02 · 184 阅读 · 0 评论 -
Linux内核之中断概述
1、中断概述1.1、为什么需要中断?处理器的速度跟外围硬件设备的速度往往不在一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求,然后专门等待回应的办法,显然差强人意。既然硬件的响应这么慢,那么内核就应该在此期间处理其他事务,等到硬件真正完成了请求的操作之后,再回过头来对它进行处理。想要实现这种功能,轮询(polling)可能会是一种解决办法。可以让内核定期对设备的状态进行查询,然后...转载 2013-08-28 13:47:02 · 645 阅读 · 0 评论 -
Linux内核之进程上下文和中断上下文的区别
进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。 处理器总处于以下状态中的一种: 1、内核态,运行于进程上下文,内核代表进程运行于内核空间; 2、内核态,运行于中断...转载 2013-08-28 11:38:21 · 1093 阅读 · 0 评论