2018年7月3日

一道有趣的数学题

摘要: Suppose you are trying to get from one end A of a terminal to the other end B. (For simplicity, assume the terminal is a one-dimensional line segment. 阅读全文

posted @ 2018-07-03 13:54 AlanTu 阅读(1115) 评论(2) 推荐(0) 编辑

2018年6月27日

面经 cisco 2

摘要: 1. cpu中的cache结构及cache一致性 一. 引子 在多线程环境中,经常会有一些计数操作,用来统计线上服务的一些qps、平均延时、error等。为了完成这些统计,可以实现一个多线程环境下的计数器类库,方便记录和查看用户程序中的各类数值。在实现这个计数器类库时,可以利用thread loca 阅读全文

posted @ 2018-06-27 22:34 AlanTu 阅读(1208) 评论(0) 推荐(0) 编辑

面经 cisco

摘要: 1. 优先级反转问题及解决方法 (1)什么是优先级反转 简单从字面上来说,就是低优先级的任务先于高优先级的任务执行了,优先级搞反了。那在什么情况下会生这种情况呢? 假设三个任务准备执行,A,B,C,优先级依次是A>B>C; 首先:C处于运行状态,获得CPU正在执行,同时占有了某种资源; 其次:A进入 阅读全文

posted @ 2018-06-27 22:27 AlanTu 阅读(1864) 评论(0) 推荐(0) 编辑

2018年6月26日

2018全球最强物联网公司榜单揭晓

摘要: 2018全球最强物联网公司榜单揭晓 | 20家企业物联网战略大起底 导言:IDG旗下杂志《NetWork World》近期公布了全球最强物联网公司名单。本文根据入选评语,对20家企业战略布局进行搜集整理,供业内人士参考!根据Gartner预测,到2020年将有超过200亿台联网设备。全球第二大市场研 阅读全文

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

2018年6月25日

物联网

摘要: 下面是对这个系统的简单的通俗介绍。标准的物联网系统可以大致分为四个层面:感知识别层,网络构建层,管理服务层,综合应用层。1)感知识别层:你应该听说过什么“通过感知识别技术,让物品‘开口说话、发布信息’,是融合物理世界和信息世界的重要一环,是物联网区别于其他网络的最独特的部分。。。”blabla。这些 阅读全文

posted @ 2018-06-25 15:49 AlanTu 阅读(1455) 评论(0) 推荐(0) 编辑

kalman滤波

摘要: kalman滤波原理(通俗易懂) 1. 在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人! 卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯 阅读全文

posted @ 2018-06-25 13:56 AlanTu 阅读(5052) 评论(0) 推荐(1) 编辑

自动驾驶

摘要: 自动驾驶开发流程 实现一个智能驾驶系统,会有几个层级: 感知层 → 融合层 → 规划层 → 控制层 更具体一点为: 传感器层 → 驱动层 → 信息融合层 → 决策规划层 → 底层控制层 各个层级之间都需要编写代码,去实现信息的转化。 最基本的层级有以下几类:采集及预处理、坐标转换、信息融合 采集 传 阅读全文

posted @ 2018-06-25 13:46 AlanTu 阅读(2189) 评论(0) 推荐(0) 编辑

2018年6月21日

CAN总线基础

摘要: CAN总线基础(上) 概述 汽车电子设备的不断增多,对汽车上的线束分布以及信息共享与交流提出了更高的要求。传统的电气系统往往采用单一连接的方式通信,这必将带来线束的冗余以及维修的成本的提高。 传统的单一通信的对接方式,已经不能满足现代汽车电子发展的需求,采用更为先进的总线技术势在必行。总线技术可以实 阅读全文

posted @ 2018-06-21 16:49 AlanTu 阅读(4157) 评论(0) 推荐(1) 编辑

Linux系统下x86和ARM的区别有哪些?

摘要: 问题: 最近在用三星的一款i5处理器的Windows平板,和iPad,以及其他使用ARM处理器的手机相比,发热量大很多,甚至需要借助风扇来散热,耗电量也大了不少。 那么就很奇怪,在主频相差不大,并且实际执行效果差不多的情况下,x86架构的处理器的发热量和功耗为什么会那么大?这种差异到底是硬件以及处理 阅读全文

posted @ 2018-06-21 15:07 AlanTu 阅读(13422) 评论(0) 推荐(0) 编辑

算法课笔记系列(七)—— 平摊分析Amortized Analysis

摘要: 本周的内容是Amortized Analysis,是对算法复杂度的另一种分析。它的基本概念是,给定一连串操作,大部分的操作是非常廉价的,有极少的操作可能非常昂贵,因此一个标准的最坏分析可能过于消极了。因此,其基本理念在于,当昂贵的操作特别少的时候,他们的成本可能会均摊到所有的操作上。如果人工均摊的花 阅读全文

posted @ 2018-06-21 14:02 AlanTu 阅读(10536) 评论(0) 推荐(2) 编辑

2018年6月13日

深入理解Linux内存分配

摘要: 深入理解Linux内存分配 为了写一个用户层程序,你也许会声明一个全局变量,这个全局变量可能是一个int类型也可能是一个数组,而声明之后你有可能会先初始化它,也有可能放在之后用到它的时候再初始化。除此之外,你有可能会选择在函数内部去声明局部变量,又或者为变量动态申请内存。 不管你在用户程序中采取哪种 阅读全文

posted @ 2018-06-13 13:41 AlanTu 阅读(11189) 评论(3) 推荐(0) 编辑

linux内核--自旋锁的理解

摘要: linux内核--自旋锁的理解 http://blog.chinaunix.net/uid-20543672-id-3252604.html 自旋锁:如果内核配置为SMP系统,自旋锁就按SMP系统上的要求来实现真正的自旋等待,但是对于UP系统,自旋锁仅做抢占和中断操作,没有实现真正的“自旋”。如果配 阅读全文

posted @ 2018-06-13 09:39 AlanTu 阅读(4901) 评论(0) 推荐(0) 编辑

2018年6月5日

DMA(直接存储器存取)

摘要: DMA(Direct Memory Access) DMA(Direct Memory Access)即直接存储器存取,是一种快速传送数据的机制。 工作原理 DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。 要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成 阅读全文

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

2018年5月22日

深入理解linux系统下proc文件系统内容

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

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

使用 /sys 文件系统访问 Linux 内核

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

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

2018年5月19日

linux下udev

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

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

2018年5月7日

Linux下逻辑地址、线性地址、物理地址详细总结

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

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

MMU内存管理单元

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

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

linux内存管理之malloc、vmalloc、kmalloc的区别

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

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

TLB的作用及工作原理

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

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

2018年5月6日

Linux内核同步

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

posted @ 2018-05-06 09:48 AlanTu 阅读(3924) 评论(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 阅读(1026) 评论(0) 推荐(0) 编辑

Linux 驱动开发

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

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

linux 设备驱动概述

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

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

调试器工作原理

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

posted @ 2018-05-06 05:45 AlanTu 阅读(9486) 评论(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 阅读(20018) 评论(0) 推荐(0) 编辑

2018年5月5日

对 IIC 总线的理解、调用函数以及常见面试问题

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

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

linux驱动工程面试必问知识点

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

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

linux驱动面试题整理

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

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

Linux驱动面试题

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

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

2018年5月4日

linux内核剖析(十一)进程间通信之-共享内存Shared Memory

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

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

linux内核剖析(十)进程间通信之-信号量semaphore

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

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

linux内核剖析(九)进程间通信之-信号signal

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

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

linux内核剖析(八)进程间通信之-管道

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

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

linux内核剖析(七)Linux进程间通信的几种方式总结

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

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

linux内核剖析(六)Linux系统调用详解(实现机制分析)

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

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

Linux内核剖析(五)Linux内核的构建过程

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

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

Linux内核剖析(四)为arm内核构建源码树

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

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

Linux内核剖析(三)构建源码树

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

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

Linux内核剖析(二)Linux内核绪论

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

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

导航