随笔分类 -  Linux内核

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 阅读(20189) 评论(0) 推荐(0) 编辑

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

导航