嵌入式Linux中文站

Linux内核页回收swappiness参数有着什么作用

阅读(93)

这两天看微博上有人讨论swappiness相关问题,mysqlperformanceblog上也有人说将swappiness设成0后MySQL被意外 kill掉,另外自己所在团队线上也遇到过类似问题,大家对这个参数的含义可能还不是很清楚,个人尝试写篇文章详细解释下这个参数。 本文主要尝试解释两个问题: 1. swappiness的确切含义是什么,它对内核进行页回收机制的影响。 2. swappiness设置成0,为什么系统仍然可能会有swap发生。 一. 关于内存分配与页回收(page reclaim)

linux驱动之定时器的使用

阅读(199)

Linux的内核中定义了一个定时器的结构: #includelinux/timer.h struct timer_list { struct list_head list; unsigned long expires; //定时器到期时间 unsigned long data; //作为参数被传入定时器处理函数 void (*function)(unsigned long); }; 利用这个结构我们可以在驱动中很方便的使用定时器。 一: timer的API函数: 初始化定时器: void init_tim

Linux内核特性之VDSO

阅读(202)

这段时间看Linux内核源码的时候,经常碰到vdso这个东西(像在Feature-fixup中,获取时间等操作时),网上搜了一下,才知道了含义,原来这是Linux为了解决和glibc兼容而想出的绝招

linux kernel内存映射实例分析

阅读(250)

作者:JHJ(jianghuijun211@gmail.com) 日期:2012/08/24 欢迎转载,请注明出处 引子 现在android智能手机市场异常火热,硬件升级非常迅猛,arm cortex A9 + 1GB DDR似乎已经跟不上主流配置了。虽说硬件是王道,可我们还是不禁还怀疑这么强大的硬件配置得到充分利用了吗?因此以后我都会正对ARM平台分析kernel的内容。 正文 在linux内存管理中,有两个资源非常重要,一个是虚拟地址,一个是物理地址。听起来似乎是废话,实际上内存管理主要就是围绕这两个

Linux设备驱动中的并发控制

阅读(145)

并发是多个执行单元同时 并行被执行。而并发的执行单元对共享资源(硬件资源和软件上的全局变量,静态变量)的访问很容易导致竞态。 主要的竞态有以下三种情况:对称多处理器(SMP)的多个CPU;单个CPU内进程与抢占它的进程;中断(硬中断,软中断,Tasklet 底半部)与

用户空间和内核空间通讯-Netlink 下

阅读(104)

关于Netlink多播机制的用法 在上一篇博文中我们所遇到的情况都是用户空间作为消息进程的发起者,Netlink还支持内核作为消息的发送方的情况。这一般用于内核主动向用户空间报告一些内核状态,例如我们在用户空间看到的USB的热插拔事件的通告就是这样的应用。 先说一下我们的目标,内核线程每个一秒钟往一个多播组里发送一条消息,然后用户空间所以加入了该组的进程都会收到这样的消息,并将消息内容打印出来。 Netlink地址结构体中的nl_groups是32位,也就是说每种Netlink协议最多支持32个多播组。如

用户空间和内核空间通讯- Netlink 中

阅读(192)

今天我们来动手演练一下Netlink的用法,看看它到底是如何实现用户-内核空间的数据通信的。我们依旧是在2.6.21的内核环境下进行开发。 在/usr/include/linux/netlink.h文件里包含了Netlink协议簇已经定义好的一些预定义协议: 点击(此处)折叠或打开 #define NETLINK_ROUTE0/*Routing/device hook*/ #define NETLINK_UNUSED1/*Unused number*/ #define NETLINK_USERSOCK2/

用户空间和内核空间通讯-Netlink 上

阅读(110)

导读 Alan Cox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接口的方式提供内核与用户空间的双向数据通信;随后,在2.1内核开发过程中,Alexey Kuznetsov将Netlink改写成一个更加灵活、且易于扩展的基于消息通信接口,并将其应用到高级路由子系统的基础框架里。自那时起,Netlink就成了Linux内核子系统和用户态的应用程序通信的主要手段之一。 2001年,ForCES IETF委员会正式对Netlink进行了标准化的工作。Jamal Hadi