05 2018 档案

深入理解linux系统下proc文件系统内容
摘要:深入理解linux系统下proc文件系统内容 内容摘要:Linux系统上的/proc目录是一种文件系统,即proc文件系统。 内容摘要:Linux系统上的/proc目录是一种文件系统,即proc文件系统。 Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的 阅读全文

posted @ 2018-05-22 10:54 AlanTu 阅读(3708) 评论(0) 推荐(0) 编辑

使用 /sys 文件系统访问 Linux 内核
摘要:使用 /sys 文件系统访问 Linux 内核 sysfs 虚拟文件系统提供了一种比 proc 更为理想的访问内核数据的途径 sysfs 与 /sys sysfs 文件系统总是被挂载在 /sys 挂载点上。虽然在较早期的2.6内核系统上并没有规定 sysfs 的标准挂载位置,可以把 sysfs 挂载 阅读全文

posted @ 2018-05-22 09:26 AlanTu 阅读(6853) 评论(0) 推荐(0) 编辑

linux下udev
摘要:如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46 内核中。M 阅读全文

posted @ 2018-05-19 11:20 AlanTu 阅读(6000) 评论(0) 推荐(0) 编辑

Linux下逻辑地址、线性地址、物理地址详细总结
摘要:一、逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到。 我们写个最简单的hello world程序,用gcc编译,再反编译后会看到以下指令: mov 0x80495b0, %eax 复制代码 这里的 阅读全文

posted @ 2018-05-07 14:22 AlanTu 阅读(9780) 评论(1) 推荐(3) 编辑

MMU内存管理单元
摘要:arm-linux学习-(MMU内存管理单元) 什么是MMU MMU(Memory Management Unit)主要用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权、多任务多进程操作系统。(来自百度百科,对其几个点不熟悉,因此可以只考虑加 阅读全文

posted @ 2018-05-07 14:06 AlanTu 阅读(30347) 评论(0) 推荐(3) 编辑

linux内存管理之malloc、vmalloc、kmalloc的区别
摘要:一、简述 1、 kmalloc申请的是较小的连续的物理内存,虚拟地址上也是连续的。kmalloc和get_free_page最终调用实现是相同的,只不过在调用最终函数时所传的flag不同而已。除非被阻塞否则他执行的速度非常快,而且不对获得空间清零。 2、get_free_page()申请的内存是一整 阅读全文

posted @ 2018-05-07 07:10 AlanTu 阅读(8111) 评论(0) 推荐(2) 编辑

TLB的作用及工作原理
摘要:以下内容摘自《步步惊芯——软核处理器内部设计分析》一书 页表一般都很大,并且存放在内存中,所以处理器引入MMU后,读取指令、数据需要访问两次内存:首先通过查询页表得到物理地址,然后访问该物理地址读取指令、数据。为了减少因为MMU导致的处理器性能下降,引入了TLB,TLB是Translation Lo 阅读全文

posted @ 2018-05-07 07:06 AlanTu 阅读(90202) 评论(2) 推荐(8) 编辑

Linux内核同步
摘要:主要内容 1、内核请求何时以交错(interleave)的方式执行以及交错程度如何。 2、内核所实现的基本同步机制。 3、通常情况下如何使用内核提供的同步机制。 内核如何为不同的请求服务 哪些服务? >>> 为了更好地理解内核是如何执行的,我们把内核看做必须满足两种请求的侍者:一种请求来自顾客,另一 阅读全文

posted @ 2018-05-06 09:48 AlanTu 阅读(3987) 评论(0) 推荐(0) 编辑

linux驱动(续)
摘要:网络通信 --> IO多路复用之select、poll、epoll详解 IO多路复用之select、poll、epoll详解 目前支持I/O多路复用的系统调用有 select,pselect,poll,epoll,I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是 阅读全文

posted @ 2018-05-06 09:03 AlanTu 阅读(1063) 评论(0) 推荐(0) 编辑

Linux 驱动开发
摘要:基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, 驱动开发中设计到的硬件: * 数字电路知识 * ARM硬件知识 * 熟练使用万用表和示波器 * 看懂芯片手册和原理图 4, lin 阅读全文

posted @ 2018-05-06 07:46 AlanTu 阅读(4530) 评论(0) 推荐(0) 编辑

linux 设备驱动概述
摘要:目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer): 主要利用C库函数和Linux API进行应用软件的编写; 从事这方面的开发工作,主要需要学习:符合linux posix标准的API函数及系统调用,linu 阅读全文

posted @ 2018-05-06 06:27 AlanTu 阅读(3310) 评论(0) 推荐(1) 编辑

调试器工作原理
摘要:调试器工作原理(1):基础篇 本文是一系列探究调试器工作原理的文章的第一篇。我还不确定这个系列需要包括多少篇文章以及它们所涵盖的主题,但我打算从基础知识开始说起。 关于本文 我打算在这篇文章中介绍关于Linux下的调试器实现的主要组成部分——ptrace系统调用。本文中出现的代码都在32位的Ubun 阅读全文

posted @ 2018-05-06 05:45 AlanTu 阅读(9741) 评论(0) 推荐(0) 编辑

Linux内核调试方法总结
摘要:一 调试前的准备 二 内核中的bug 三 内核调试配置选项 1 内核配置 2 调试原子操作 四 引发bug并打印信息 1 BUG()和BUG_ON() 2 dump_stack() 五 printk() 1 printk函数的健壮性 2 printk函数脆弱之处 3 LOG等级 4 记录缓冲区 5 阅读全文

posted @ 2018-05-06 05:15 AlanTu 阅读(20833) 评论(0) 推荐(0) 编辑

对 IIC 总线的理解、调用函数以及常见面试问题
摘要:一、IIC 总线概述: IIC 即Inter-Integrated Circuit(集成电路总线) I2C总线是PHLIPS公司推出的一种串行总线, I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由 阅读全文

posted @ 2018-05-05 14:51 AlanTu 阅读(16409) 评论(0) 推荐(2) 编辑

linux驱动工程面试必问知识点
摘要:linux内核原理面试必问(由易到难) 简单型 1:linux中内核空间及用户空间的区别?用户空间与内核通信方式有哪些? 2:linux中内存划分及如何使用?虚拟地址及物理地址的概念及彼此之间的转化,高端内存概念? 3:linux中中断的实现机制,tasklet与workqueue的区别及底层实现区 阅读全文

posted @ 2018-05-05 14:37 AlanTu 阅读(2348) 评论(0) 推荐(0) 编辑

linux驱动面试题整理
摘要:1、字符型驱动设备你是怎么创建设备文件的,就是/dev/下面的设备文件,供上层应用程序打开使用的文件? 答:mknod命令结合设备的主设备号和次设备号,可创建一个设备文件。 评:这只是其中一种方式,也叫手动创建设备文件。还有UDEV/MDEV自动创建设备文件的方式,UDEV/MDEV是运行在用户态的 阅读全文

posted @ 2018-05-05 14:16 AlanTu 阅读(10907) 评论(0) 推荐(0) 编辑

Linux驱动面试题
摘要:1、 Linux设备中字符设备与块设备有什么主要的区别?请分别列举一些实际的设备说出它们是属于哪一类设备。 字符设备:字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少实现open,close,read和write系统调用。字符终端、串口 阅读全文

posted @ 2018-05-05 14:12 AlanTu 阅读(7911) 评论(0) 推荐(0) 编辑

linux内核剖析(十一)进程间通信之-共享内存Shared Memory
摘要:共享内存 共享内存是进程间通信中最简单的方式之一。 共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。 共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更 阅读全文

posted @ 2018-05-04 16:47 AlanTu 阅读(3882) 评论(0) 推荐(0) 编辑

linux内核剖析(十)进程间通信之-信号量semaphore
摘要:信号量 什么是信号量 信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。 信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们 阅读全文

posted @ 2018-05-04 16:45 AlanTu 阅读(4268) 评论(0) 推荐(0) 编辑

linux内核剖析(九)进程间通信之-信号signal
摘要:信号及信号来源 什么是信号 信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。通常信号是由一个错误产生的。但它们还可以作为进程间通信或修改行为的一种方式,明确地由一个进程发送给另一个进程。一个信号的产生叫生成,接收到一个信号叫捕获。 信号本质 信号是 阅读全文

posted @ 2018-05-04 16:41 AlanTu 阅读(4164) 评论(0) 推荐(1) 编辑

linux内核剖析(八)进程间通信之-管道
摘要:管道 管道是一种两个进程间进行单向通信的机制。 因为管道传递数据的单向性,管道又称为半双工管道。 管道的这一特点决定了器使用的局限性。管道是Linux支持的最初Unix IPC形式之一,具有以下特点: 数据只能由一个进程流向另一个进程(其中一个读管道,一个写管道);如果要进行双工通信,需要建 立两个 阅读全文

posted @ 2018-05-04 16:37 AlanTu 阅读(1753) 评论(0) 推荐(0) 编辑

linux内核剖析(七)Linux进程间通信的几种方式总结
摘要:进程间通信概述 进程通信的目的 数据传输 一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间 共享数据 多个进程想要操作共享数据,一个进程对共享数据 通知事 一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。 资源共享 多个进 阅读全文

posted @ 2018-05-04 16:35 AlanTu 阅读(1495) 评论(0) 推荐(0) 编辑

linux内核剖析(六)Linux系统调用详解(实现机制分析)
摘要:本文介绍了系统调用的一些实现细节。首先分析了系统调用的意义,它们与库函数和应用程序接口(API)有怎样的关系。然后,我们考察了Linux内核如何实现系统调用,以及执行系统调用的连锁反应:陷入内核,传递系统调用号和参数,执行正确的系统调用函数,并把返回值带回用户空间。最后讨论了如何增加系统调用,并提供 阅读全文

posted @ 2018-05-04 16:33 AlanTu 阅读(15346) 评论(0) 推荐(4) 编辑

Linux内核剖析(五)Linux内核的构建过程
摘要:参考 一次实验引发的故事 – kernel build system探索—vmlinux是如何炼成的– kernel makefile 深度探索Linux操作系统:系统构建和原理解析.pdf 问题 在前面的博文中,我们先是为自己的Ubuntu安装了一套内核源码树,然后为了方便进行嵌入式交叉编译,我们 阅读全文

posted @ 2018-05-04 16:31 AlanTu 阅读(3958) 评论(0) 推荐(0) 编辑

Linux内核剖析(四)为arm内核构建源码树
摘要:前面说到要做linux底层开发或者编写Linux的驱动,必须建立内核源码树,之前我们提到过在本机上构建源码树—-Linux内核剖析(三),其建立的源码树是针对i686平台的,但是我么嵌入式系统用的是arm平台,这就需要我们为arm板交叉构建一份板子可用的内核源码树。 首先下载与你嵌入式系统平台版本号 阅读全文

posted @ 2018-05-04 16:19 AlanTu 阅读(1261) 评论(0) 推荐(0) 编辑

Linux内核剖析(三)构建源码树
摘要:linux源码树结构 参考 http://www.360doc.com/content/13/0410/17/7044580_277403053.shtml 获取源码包的方式 为什么要活取源码包? 在笔者到官网下载源码时,源码下面有如下说明: 如果你的ubuntu是保持更新的(比如您经常执行sudo 阅读全文

posted @ 2018-05-04 16:18 AlanTu 阅读(3142) 评论(0) 推荐(0) 编辑

Linux内核剖析(二)Linux内核绪论
摘要:什么是内核 内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。内核的分类可分为单内核和双内核以及微内核。严格地说,内核并不是计算机系统中必要的组成部分。 内核是一个操作系统的核心。是基于硬件 阅读全文

posted @ 2018-05-04 16:16 AlanTu 阅读(1180) 评论(0) 推荐(1) 编辑

Linux内核剖析(一)Linux的历史
摘要:Unix操作系统 Unix的由来 汤普逊和里奇最早是在贝尔实验室开发Unix的,此后的10年,Unix在学术机构和大型企业中得到了广泛的应用,当时的UNIX拥有者AT&T公司以低廉甚至免费的许可将Unix源码授权给学术机构做研究或教学之用,许多机构在此源码基础上加以扩充和改进,形成了所谓的“Unix 阅读全文

posted @ 2018-05-04 16:13 AlanTu 阅读(4827) 评论(0) 推荐(0) 编辑

linux内核剖析(零)linux系统启动过程详解-开机加电后发生了什么
摘要:本文参考了如下文章 深入理解linux启动过程 mbr (主引导记录(Master Boot Record)) 电脑从开机加电到操作系统main函数之前执行的过程 详解linux系统的启动过程及系统初始化 linux系统的启动流程 关于linux系统的启动流程我们可以按步进行划分为如下: BIOS 阅读全文

posted @ 2018-05-04 16:07 AlanTu 阅读(3416) 评论(0) 推荐(1) 编辑

详解linux系统的启动过程及系统初始化
摘要:一、linux系统的启动流程 关于linux系统的启动流程我们可以按步进行划分为如下: POST加电自检-->BIOS(Boot Sequence)-->加载对应引导上的MBR(bootloader)-->主引导设置加载其BootLoader-->Kernel初始化-->initrd—>/etc/i 阅读全文

posted @ 2018-05-04 16:04 AlanTu 阅读(6126) 评论(0) 推荐(1) 编辑

计算机是如何启动的
摘要:从打开电源到开始操作,计算机的启动是一个非常复杂的过程。 我一直搞不清楚,这个过程到底是怎么回事,只看见屏幕快速滚动各种提示...... 这几天,我查了一些资料,试图搞懂它。下面就是我整理的笔记。 零、boot的含义 先问一个问题,"启动"用英语怎么说? 回答是boot。可是,boot原来的意思是靴 阅读全文

posted @ 2018-05-04 15:41 AlanTu 阅读(554) 评论(0) 推荐(0) 编辑

Linux 引导过程内幕
摘要:Linux 引导过程内幕 从主引导记录到第一个用户空间应用程序的指导 早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序。尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行必要的简化。 让我们先从高级的 阅读全文

posted @ 2018-05-04 15:33 AlanTu 阅读(280) 评论(0) 推荐(0) 编辑

C++ 匿名namespace的作用以及与static的区别
摘要:匿名namespace的作用以及它与static的区别 一。匿名namespace的作用 在C语言中,如果我们在多个tu(translation unit)中使用了同一个名字做 为函数名或者全局变量名,则在链接阶段就会发生重定义错误,为了解决这个 问题,我们可以在定义这些标识符(identifier 阅读全文

posted @ 2018-05-03 23:53 AlanTu 阅读(2267) 评论(0) 推荐(1) 编辑

《二叉树》学习心得
摘要:树的介绍 1. 树的定义 树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。 把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:(01) 每个节点有零个或多个子节点;(02) 没有父节点的节点称为根节点;(03) 每一个非根节点有 阅读全文

posted @ 2018-05-03 16:07 AlanTu 阅读(5775) 评论(0) 推荐(0) 编辑

《红黑树》学习心得
摘要:R-B Tree简介 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。 红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL 阅读全文

posted @ 2018-05-03 15:48 AlanTu 阅读(810) 评论(0) 推荐(0) 编辑

C++知识点
摘要:路之遥_其漫漫 路之遥_其漫漫 路之遥_其漫漫 C++基础知识点 五.迭代器的理解: 1.erase()函数的返回值,它的迭代器在循环遍历中的奇特之处; 2.循环遍历,it++放置不同的位置; 1)在正常的for循环位置 1)符合条件时erase()容器中的某个元素,但是没有接返回值 2)符合条件时 阅读全文

posted @ 2018-05-01 21:56 AlanTu 阅读(608) 评论(0) 推荐(0) 编辑

导航