- 博客(29)
- 资源 (2)
- 收藏
- 关注
转载 实现RTP协议的H.264视频传输系统
1. 引言 随着信息产业的发展,人们对信息资源的要求已经逐渐由文字和图片过渡到音频和视频,并越来越强调获取资源的实时性和互动性。但人们又面临着另外一种不可避免的尴尬,就是在网络上看到生动清晰的媒体演示的同时,不得不为等待传输文件而花费大量时间。为了解决这个矛盾,一种新的媒体技术应运而生,这就是流媒体技术。流媒体由于具有启动时延小、节省客户端存储空间等优势,逐渐成为人们的首选,流媒
2016-02-23 16:27:40 500
转载 H264--1--编码原理以及I帧B帧P帧
H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内。所以对于一段变化不大图像画面,我们可以先编码出一个完整的图像帧A,随后的B帧就不编码全部图像,只写入与A帧的差别,这样B帧的大小就只有完整帧的1
2016-02-23 16:26:39 631
转载 linux内核装载vfs过程
linux虚拟文件系统是设备驱动程序的之上的一个抽象层,致力于提供给应用程序一个统一的操作文件的接口。虚拟文件系统的各个数据结构之间的关系比较复杂,画了一张各个数据结构之间的关系图在 http://download.csdn.net/detail/lonewolfxw/4588935,这个清晰的给出了各结构的关系。1. 目录查找linux的虚拟文件系统最核心的结构就是dentry缓存,
2016-02-21 17:34:40 1376
转载 关于VFS文件系统中的superblock、inode、d_entry和file数据结构
Linux下的文件系统中宏观上主要分为三层:一是上层的文件系统的系统调用;二是虚拟文件系统VFS(Virtual File System)层,三是挂载到VFS中的各种实际文件系统。 VFS是一种软件机制,只存在于内存中,每次系统初始化期间Linux都会先在内存中构造一棵VFS的目录树(也就是源码中的namespace)。VFS主要的作用是对上层应用屏蔽底层不同的调用方法,提
2016-02-19 14:54:20 803
转载 Linux3.2.8系统启动过程及启动延时初步分析
一、vmlinux、zImage与uImage之间的关系vmlinux是编译出来的最原始的内核文件,未压缩;zImage是经过gzip压缩后的文件;uImage是u-boot专用的映像文件,它是在zImage之前加上一个长度为64字节的tag。注:影响系统启动速度的关键因素分析看到这,我本想不压缩以提升启动速度,但是实验发现,影响系统启动速度的关键因素还
2016-02-18 11:55:53 556
转载 ffmpeg对H.264进行rtp打包
ffmpeg对h.264进行RTP打包ffmpeg -i test22.264 -f rtp rtp://10.102.5.226:15000会报如下错误:Output file #0 does not contain any stream后来查原因发现是因为没有加上x264新修改命令如下:ffmpeg -i test22
2016-02-17 11:49:47 4577
转载 Linux虚拟文件系统之文件读取(sys_read())
在文件成功打开之后,进程将使用内核提供的read和write系统调用,来读取或修改文件的数据。内核中文件读写操作的系统调用实现基本都一样,下面我们看看文件的读取。[cpp] view plain copy print?/*sys_read()*/ SYSCALL_DEFINE3(read, unsigned int, fd, char
2016-02-15 17:56:31 3937
转载 Linux虚拟文件系统之文件打开(sys_open())
在文件读写之前,我们必须先打开文件。从应用程序的角度来看,这是通过标准库的open函数完成的,该函数返回一个文件描述符。内核中是由系统调用sys_open()函数完成。[cpp] view plain copy print?/*sys_open*/ SYSCALL_DEFINE3(open, const char __user *, filen
2016-02-15 17:55:16 1160
转载 Linux虚拟文件系统之文件系统卸载(sys_umount())
Linux中卸载文件系统由umount系统调用实现,入口函数为sys_umount()。较于文件系统的安装较为简单,下面是具体的实现。[cpp] view plain copy print?/*sys_umont系统调用*/ SYSCALL_DEFINE2(umount, char __user *, name, int, flags)
2016-02-15 17:54:11 1032
转载 Linux虚拟文件系统之文件系统安装(sys_mount())
对于前面的根目录文件系统的安装中涉及到了mount系统调用的调用,这里我们考虑一个文件系统将被安装在一个已经安装文件系统之上的情形,即调用mount系统调用实现。mount系统调用被用来安装一个普通文件系统,他的服务例程为sys_mount()。 [cpp] view plain copy print?/*sys_mount系统调用*/ /*d
2016-02-15 17:53:13 859
转载 Linux虚拟文件系统(安装根文件系统)
安装根文件系统式系统初始化的关键部分。Linux内核允许根文件系统放在很多不同的地方,比如硬盘分区、软盘、通过NFS共享的远程文件系统以及保存在ramdisk中。内核要在变量ROOT_DEV中寻找包含根文件系统的磁盘主设备号。当编译内核时,或者像最初的启动装入程序传递一个合适的“root”选项时,根文件系统可以被指定为/dev目录下的一个设备文件。安装根文件系统分为两个阶段:1,内
2016-02-15 17:52:12 544
转载 Linux虚拟文件系统(内核初始化<二>)
这部分主要对linux虚拟文件系统内核初始化部分做些补充。关于shrinker,inode和dentry cache初始化阶段都需要注册自己的shrinker,用于缩减cache。两个操作原理类似。shrinker数据结构介绍[cpp] view plain copy print?/* * A callback you
2016-02-15 17:51:16 549
转载 Linux虚拟文件系统(内核初始化<一>)
Linux虚拟文件系统在内核初始化的start_kernel()函数中主要调用两个函数来实现。[cpp] view plain copy print?asmlinkage void __init start_kernel(void) { …… vfs_caches_init_early(); ……
2016-02-15 17:50:13 730
转载 Linux虚拟文件系统(节点路径搜索)
前面对linux虚拟文件系统的架构以及设计到的数据结构有了一个整体的认识,这里看看linux内核怎么根据给定的文件路径名在内存中找到和建立代表着目标文件或目录的dentry结构和inode结构。文件路径的搜索是文件系统中最基本也是最重要的一部分之一,后面我们会看到,文件的打开、关闭等等操作都将涉及到文件路径的搜索。下面我们看看linux内核中时怎么实现的。一、搜索中所用数据结构
2016-02-15 17:47:09 574
转载 Linux虚拟文件系统(概述)
Linux虚拟文件系统是一个内核软件层,用来处理与UNIX标准文件系统相关的所有系统调用。其健壮性表现在能为各种文件系统提供一个通用的接口。Linux虚拟文件系统支持的文件系统可以划分为三种主要的类型:磁盘文件系统这些文件系统管理在本地磁盘分区中可用的磁盘空间或者其他可以起到磁盘作用的设备(比如说一个USB闪存)。网络文件系统这些文件系统允许访问属于其他网络
2016-02-15 17:45:57 762
转载 linux下ffmpeg安装
1.ffmpeg下载地址: http://www.ffmpeg.org/download.html2.解压1$ tar zvfj ffmpeg.tar.bz2这里作者假设已经重命名为ffmpeg.tar.bz23.解压后进入ffmpeg的文件夹,查看readme, 可以看到和正常的编译安装步骤无异configure && make && make install
2016-02-15 09:10:16 9498 3
转载 图解cgroup架构中cgroup与css之间的多对多的关系
这就是经典的cgroup与css之间的多对多关系,它们之间的联系依靠cg_group_link对象组织在一起,每一个css与cgroup的配对都会有一个cg_cgroup_link对象。
2016-02-03 09:26:33 1011
转载 gcov覆盖率测试
这里使用gcov工具,gcov是伴随着gcc发布。gcc编译加入-fprofile-arcs -ftest-coverage参数生成二进制程序,执行测试用例生成代码覆盖率信息。fprofile-arcs参数使gcc创建一个程序的流图,之后找到适合图的生成树。只有不在生成树中的弧被操纵 (instrumented):gcc添加了代码来清点这些弧执行的次数。当这段弧是一个块的唯一出口或入口时,操纵
2016-02-03 09:23:22 565
转载 cgroup学习(八)——CPUSET子系统
对于CPUSET子系统我们主要解释对cpuset.cpus的操作。Read操作根据《cgroup学习(三)——伪文件》可以很容易的跟踪到代码,并解读,所以我们这里就不赘述,直接解释write及attach操作。首先我们看一下write操作的bt(使用systemtap见《使用systemtap获得内核函数的局部变量》):[html] view plain copy
2016-02-03 09:21:11 1491
转载 cgroup学习(七)——cpu子系统
CPU子系统 对于CPU子系统最常见的参数就是cpu.shares,我们来通过《cgroup学习(三)——伪文件》的表格来跟踪一下对该参数的读写操作。 通过systemtap我们可以看到读的bt:(cat cpu.shares)[html] view plain copy2327 (cat) cpu_share
2016-02-03 09:20:26 847
转载 cgroup学习(六)——attach task
attach task 该过程对应于我们上面的实例操作的:echo 512 > tasks的过程,其实质就是先对cgroup下tasks文件进行写操作,建立该进程新的css_set与所有管理它的cgroup的关系;然后再根据各个子系统自己的attach函数进行attach操作。在这里我们先介绍第一个过程,第二个过程在各个子系统中介绍。先看一下bt:[html]
2016-02-03 09:19:50 906
转载 cgroup学习(五)—— create new cgroup
create new cgroup 该过程就是mkdir/cgroup/cpu/test_cpu:在一个/cgroup/cpu hierarchy上创建一个cgroup,下面的bt是创建一个cpu hierarchy下的cgroup:[html] view plain copymkdir /cgroup/cpu/test_c
2016-02-03 09:19:14 555
转载 cgroup学习(四)——mount hierarchy
mount hierarchy 该过程对应于mount -t cgroup -o cpu,cpuset cpuandset /cgroup 首先它解析mount参数-o ***:parse_cgroupfs_option,创建一个新的cgroupfs_root:cgroup_root_from_opts,通过cgroup_test_super判断新的mou
2016-02-03 09:15:13 582
转载 cgroup学习(三)——伪文件
伪文件 cgroup是通过VFS与上层进行交互的,它定义了自己的cgroup文件系统,同时也定义了哪些文件,这些文件也是最终影响着cgroup行为,这一节我们介绍一下,每个子系统的伪文件定义在哪里?以及内核如何去操作这些伪文件。下面我们通过一张表来展示这些关系:SubsysFilesTo_csslocat
2016-02-03 09:14:37 471
转载 cgroup的学习(一)——what cgroup?
本序列文章将介绍cgroup概念,cgroup框架,cgroup的子系统 What Cgroup? Control Groups provide a mechanism foraggregating/partitioning sets of tasks, and all their future children, intohierarchical groups
2016-02-03 09:13:57 627
转载 cgroup学习(二)——cgroup框架结构
cgroup框架结构这一章里,我们先整体介绍一个cgroup的框架结构,以及cgroup文件系统的相应文件定义。这里我们先看一下cgroup的主要结构关系: 图2 主要数据结构关系该图包含了cgroup的所有主要数据结构及它们的关系。其中cgroupfs_root相当于我们mount操作指定的dir;cgroup表示在mount目录下的mkdir cg_test
2016-02-03 09:13:20 620
转载 Linux Cgroups详解(一)
Cgroups是什么?Cgroups是control groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。最初由google的工程师提出,后来被整合进Linux内核。Cgroups也是LXC为实现虚拟化所使用的资源管理手段,可以说没有cgroups就没有LXC。Cgroup
2016-02-01 23:19:52 1085
转载 Linux Cgroups详解(二)
cgroups 数据结构设计我们从进程出发来剖析cgroups相关数据结构之间的关系。在Linux中,管理进程的数据结构是task_struct,其中与cgroups有关的:#ifdef CONFIG_CGROUPS /* Control Group info protected by css_set_lock */ struct css_set *cgroups;
2016-02-01 23:19:09 1143
转载 cgroup: Control Group 分析 转载
这篇文章分析Cgroup不错, 阅读Kernel代码的start_kernel函数到cgroup_init_early时,搜了下,找到了这篇文章,大致看了下,不错,收藏。 ------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/----
2016-02-01 09:36:36 1032
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人