Linux的任督二脉:进程调度和内存管理

比如进程的调度延时是多少?Linux能否硬实时?多核下多线程如何执行?系统的内存究竟耗到哪里去了?我写的应用程序究竟耗了多少内存?什么是内存泄漏,如何判定内存是否真的泄漏?CPU速度、内存大小和系统性能的关联究竟是什么?内存和I/O存在着怎样的千丝万缕的联系?...
阅读(13627) 评论(18)

《总线设备驱动模型》《深入探究Linux的设备树》讲座ppt分享和录播地址发布

本课程的录播视频已经放在了(已经报名直播的看录播无需重新报名): http://edu.csdn.net/course/detail/5627 《Linux总线、设备、驱动模型》的录播视频放在了(已经报名直播的看录播无需重新报名): http://edu.csdn.net/course/detail/5329...
阅读(1142) 评论(1)

在ARM Linux内核中增加一个新的系统调用

实验平台内核版本为4.0-rc1,增加的系统调用仅仅是简单打印一个Hello World,最后我们在用户空间用swi验证。...
阅读(4279) 评论(0)

Network write system call latency

Linux ftrace案例...
阅读(2468) 评论(0)

Linux电源管理系统架构和驱动(1)-Linux电源管理全局架构

1.   Linux电源管理全局架构Linux电源管理非常复杂,牵扯到系统级的待机、频率电压变换、系统空闲时的处理以及每个设备驱动对于系统待机的支持和每个设备的运行时电源管理,可以说和系统中的每个设备驱动都息息相关。对于消费电子产品来说,电源管理相当重要。因此,这部分工作往往在开发周期中占据相当大的比重,图1呈现了Linux内核电源管理的整体架构。大体可以归纳为如下几类:1.      CPU在运...
阅读(8243) 评论(1)

Linux芯片级移植与底层驱动(基于3.7.4内核)

宋宝华 BarrySong 21cnbao@gmail.com> 新浪微博: @宋宝华Barry   1.   SoC Linux底层驱动的组成和现状 为了让Linux在一个全新的ARM SoC上运行,需要提供大量的底层支撑,如定时器节拍、中断控制器、SMP启动、CPU hotplug以及底层的GPIO、clock、pinctrl和DMA硬件的封装等。定时器节拍、中断控制器、SMP启动和C...
阅读(43261) 评论(4)

ARM Linux 3.x的设备树(Device Tree)

宋宝华 Barry Song 1.    ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/pla...
阅读(187010) 评论(53)

Linux RT(2)-硬实时Linux(RT-Preempt Patch)的中断线程化

底半部:线程化IRQ 线程化中断的支持在2009年已经进入Linux官方内核,详见Thomas Gleixner的patch: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3aa5...
阅读(8564) 评论(5)

Linux RT(1)-硬实时Linux(RT-Preempt Patch)在PC上的编译、使用和测试

特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。by  @宋宝华Barry  Vanilla kernel的问题 Linux kernel在spinlock、irq上下文方面无法抢占,因此高优先级任务被唤醒到得以执行的时间并不能完全确定。同时,Linux kernel本身也不处理优先级反转。RT-Preempt Patch是在Linux社区kernel的基础上,加...
阅读(14983) 评论(2)

Essential Linux Device Driver附录A . Linux汇编

By 宋宝华 / 本系列文章交流与讨论:@宋宝华Barry 设备驱动程序有时需要用汇编实现一些代码片断,因此让我们看看Linux上汇编编程的不同特性。 图A.1显示了Linux在PC兼容系统上的引导顺序,是第2章“内核一瞥”中图2.1的缩减版。图中的固件组件是用不同的汇编语法实现的: · BIOS通常全部用汇编编写。一些流行的PC BIOS使用像Microsoft Macro Assem...
阅读(3657) 评论(0)

让busybox里的free命令可以显示page cache

busybox的free命令不能显示page cache,导致于其功能大打折扣,因为page cache大小很大,在用户申请内存时可以回收,打上如下补丁后,busybox的free命令变得完整: commit 2219fd301a7f319258ad4be9217cd0d6db9240d4 Author: Barry Song Date: Mon Mar 26 11:47:10 2012...
阅读(5163) 评论(0)

Linux gdb调试器用法全面解析

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序。 让被调试的程序在工程师指定的断点处停住,断点可以是条件表达式。 当程序被停住时,可以检查此时程序中所发生的事,并追索上文。 动态地改变程序的执行环境。 不管是调试Linux内核空间的驱动还是调试用户空间的应用程序,掌握...
阅读(52011) 评论(3)

Linux内核最新的连续内存分配器(CMA)——避免预留大块内存

by 宋宝华 在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,这部分内存平时不用,但是一般的做法又必须先预留着。目前,Marek Szyprowski和Michal Nazarewicz实现了一套全新的Contiguous Memory Allocator。通过这套机制,我们可以做到不预留内存,这些内存平时是可用的,只有当需要...
阅读(24766) 评论(5)

OMAP4 pandaboard上CPU hotplug进程迁移与负载均衡测试

尝试把pandaboard images升级为 11.12 Linaro release,SMP热插拔测试了一下。第一组测试评估在高负载情况下热插拔CPU进程迁移的情况,希望是拔出和插入CPU1后,各进程仍然活跃,测试case如下: int main(int argc, char *argv[]) { struct timeval last_tv, cur_tv; int pid; c...
阅读(3748) 评论(0)

tegra3 CPU auto hotplug和Big/little switch工作的基本原理

by 宋宝华 在《Tegra3 vSMP架构Android运行时CPU热插拔及高低功耗CPU切换》一文中我们通过运行华硕平板电脑看出来tegra3的dvfs结合了CPU热插拔和G/LP core cluster之间的切换,本文从代码角度分析其运行机理。 tegra3是典型的BIG/LITTLE模式,4个G core(高性能,高功耗)加上1个LP core(低性能,低功耗)。运行过程中,我们...
阅读(5710) 评论(2)
18条 共2页1 2 下一页 尾页
    个人资料
    • 访问:1010631次
    • 积分:8568
    • 等级:
    • 排名:第2337名
    • 原创:63篇
    • 转载:4篇
    • 译文:3篇
    • 评论:608条
    新浪微博