华的专栏

讨论与进步

Linux系统中cgroup功能介绍

 1  Cgroups简介 1.1 What are cgroups ? Cgroups(控制组)是Linux内核的一个功能,用来限制、统计和分离一个进程组的资源(CPU、内存、磁盘输入输出等)。换句话说就是,如果一个进程加入了某一个控制组,该控制组对Linux的系统资源都有严格的限制,...

2016-09-30 14:57:19

阅读数:7160

评论数:0

把块存放在页高速缓存中

VFS(映射层)和各种文件系统以叫做“块”的逻辑单位组织磁盘数据。在Linux内核的旧版本中,主要有两种不同的磁盘高速缓存:页高速缓存和缓冲区高速缓存,前者用来存放访问磁盘文件内容时生成的磁盘数据页,后者把通过VFS(管理磁盘文件系统)访问的块的内容保留在内存中。   从2.4.10的...

2016-09-27 09:56:00

阅读数:264

评论数:0

Linux kernel中 __bitmap_weight函数的理解

对Linux kernel中 __bitmap_weight函数的理解  int __bitmap_weight(const unsigned long *bitmap, int bits) { int k, w = 0, lim = bits/BITS_PER_LONG; for (k ...

2016-09-22 08:00:33

阅读数:1164

评论数:0

Linux Scheduling Domains

Scheduling Domains 引入的背景 Scheduling Domains 是现代硬件技术尤其是多 CPU 多核技术发展的产物。现在,一个复杂的高端系统由上到下可以这样构成: 它是一个 NUMA 架构的系统,系统中的每个 Node 访问系统中不同区域的内存有不同的速度。...

2016-09-20 09:11:50

阅读数:329

评论数:0

linux多CPU进程负载均衡解析

在linux中,支持对称smp的处理器模型,在多处理器的情况下,每个处理器都有自己的一个运行队列,这样就存在着分配不均的情况,有的cpu运行队列很多进程,导致一直很忙,有的cpu运行队列可能很少的进程甚至没有任何运行进程,导致cpu经常处于空转的状态,因此我们需要一种机制,来均衡各个cpu上运行队...

2016-09-20 07:33:26

阅读数:3218

评论数:0

linux内存管理之DMA

说起DMA我们并不陌生,但是实际编程中去用的人不多吧,最多就是网卡驱动里的环形buffer,再有就是设备的dma,下面我们就分析分析.    DMA用来在设备内存和内存之间直接数据交互。而无需cpu干预    内核为了方便驱动的开发,已经提供了几个dma 函数接口。 dma跟硬件架构相关,...

2016-09-18 08:00:16

阅读数:3502

评论数:0

DMA技术

5.1  DMA概述   DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。   要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU的利用率。     但是采用中断传送有...

2016-09-18 07:58:22

阅读数:276

评论数:0

DMA的demo

DMA的demo static void fsl_dma_test_callback(void *dma_async_param) { struct completion *cmp = dma_async_param; printk( KERN_ERR "dma trans...

2016-09-16 22:15:04

阅读数:563

评论数:1

__xchg 函数的用法

CPU X86 32位 文件:arch\x86\include\asm\cmpxchg_32.h #define __xchg(x, ptr, size) \ ({ \ __typeof(*(ptr)) __x = (x); \ switch (size) { \ case 1: \ { \ v...

2016-09-16 21:15:47

阅读数:1565

评论数:0

Linux内核DMA机制

目录 [隐藏] 1 2 DMA控制器硬件结构 2.1 DMA通道使用的地址 2.2 DMA操作函数 2.3 DMA映射 2.3.1 (1)建立一致 DMA 映射 2.3.2 (2)建立流式 DMA 映射 2.3.3 (3)分散/集中映射 ...

2016-09-16 20:47:50

阅读数:838

评论数:0

ffmpeg代码实现自定义decoder

1、概述 本文主要讲述如何用ffmpeg代码实现自己的decoder。 2、代码 [cpp] view plain copy /*   *本程序主要实现一个自己的decoder并加入到decoder链中去,供api调用  *作者:缪国凯(MK...

2016-09-14 17:24:02

阅读数:296

评论数:0

把自定义的demuxer加入ffmpeg源码

简介:把上一篇文章中的demuxer加入ffmpeg源码中去,使可以用命令行方式调用自定义的demuxer 第一步: 在libavformat目录下新建mkdemuxer.c和mkdemuxer.h,代码如下: mkdemuxer.c: [cpp] view...

2016-09-14 17:21:48

阅读数:371

评论数:0

ffmpeg代码实现自定义encoder

1、概述 本文主要讲述如何用ffmpeg代码实现自己的encoder。 2、代码 [cpp] view plain copy /*   *本程序主要实现一个自己的encoder并加入到encoder链中去,供api调用  *作者:缪国凯(MK...

2016-09-14 17:20:25

阅读数:450

评论数:0

把自定义encoder加入ffmpeg源码

第一步: 在libavcodec目录下新建mkencoder.c并加入代码: [cpp] view plain copy /*   *实现一个自己的encoder,编码工作其实就是把frame的数据拷贝到pkt  *作者:缪国凯(MK)   ...

2016-09-14 17:19:26

阅读数:574

评论数:0

ffmpeg 自定义数据来源

ffmpeg 自定义数据来源, 可以是文件,可以是内存,可以是网络 // ffmpeg_custom_context.cpp : Defines the entry point for the console application. // #include "...

2016-09-14 16:24:34

阅读数:549

评论数:0

linux kernel 工作队列

朋友,你相信,一只蝴蝶在北京拍拍翅膀,将使得纽约几个月后出现比狂风还厉害的龙卷风吗?看过那部经典的影片蝴蝶效应的朋友们一定会说,这不就是蝴蝶效应吗.没错.蝴蝶效应其实是混沌学理论中的一个概念.它是指对初始条件敏感性的一种依赖现象.蝴蝶效应的原因在于蝴蝶翅膀的运动,导致其身边的空气系统发生变化,并引...

2016-09-14 07:58:09

阅读数:217

评论数:0

Linux工作队列实现机制

工作项、工作队列和工作者线程 把推后执行的任务叫做工作(work),描述它的数据结构为work_struct ,这些工作以队列结构组织成工作队列(workqueue),其数据结构为workqueue_struct ,而工作线程就是负责执行工作队列中的工作。系统默认的工作者线程为events。...

2016-09-14 07:56:30

阅读数:321

评论数:0

Linux中的工作队列

工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。 工作队列是2.6内核开始引入的机制,在2.6.20之后,工作队...

2016-09-14 07:55:01

阅读数:195

评论数:0

内核抢占与中断返回

1、上下文 一般来说,CPU在任何时刻都处于以下三种情况之一: (1)运行于用户空间,执行用户进程; (2)运行于内核空间,处于进程上下文; (3)运行于内核空间,处于中断上下文。 应用程序通过系统调用陷入内核,此时处于进程上下文。现代几乎所有的CPU体系结构都支持中断。当外部设备产生中...

2016-09-14 07:17:45

阅读数:444

评论数:0

同步(1)

1、概述 同步问题是操作系统中的经典问题,它伴随着并发处理而自诞生。现代体系结构中常见的并发处理情况可以分为如下三种情况: (1)多个线程在单处理器上执行——多线程编程 (2)多个线程在多处理器上执行——并行计算 (3)多个线程在分布的多个处理上执行——分布式计算 相应的编程也分成三种情...

2016-09-14 07:16:28

阅读数:168

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭