自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

华的专栏

讨论与进步

  • 博客(25)
  • 资源 (2)
  • 收藏
  • 关注

原创 VIA头域

Via头域是标志了用于事务传输的传输设备,并且也标志了应答送回的地址。只有当需要通过选择传输设备到达下一个节点(hop)的时候,才需要在头域中包含Via域。当UAC创建一个请求,它必须在头域中添加一个Via域。protocol 名字和protocol版本必须分别是SIP和2.0。Via头域必须包含一个branch参数。这个参数用于区分请求创建的事务。这个参数客户端和服务器都会使用。除了CANCEL

2015-09-28 08:37:04 2373

转载 Linux signal 那些事儿 (3)

这篇博客,想集中在signal 与线程的关系上,顺带介绍内核signal相关的结构。如何组织我其实并没想好,想到哪就写到哪里吧。主题一定会落在signal之内而不跑题。    提到signal与thread的关系,就得先提POSIX标准。POSIX标准决定了Linux为何将signal如此实现:   1 信号处理函数必须在多线程应用的所有线程之间共享,但是,每个线程要有自己的挂起信号掩码和

2015-09-23 14:31:24 700

转载 linux 进程的pid分配策略——pid位图算法

在研究进程fork()的时候,这个调用了do_fork(),其中do_fork()又涉及到进程的pid分配,这个东西的源代码有许多个版本,而且各自都不是一样的。昨天晚上研究了一晚上,今天从下午研究到现在,总算把内核中pid位图算法有一个整体的把握了。明天早上继续完成这篇博客,现在小小的庆祝一下,明天完成。    首先我们先看一个程序,这个程序是我从网上找的,这个程序的主要部分也是内核中的代码,

2015-09-23 13:46:34 1502

转载 linux signal 处理

源地址:http://blog.csdn.net/zhuixundelang/article/details/5979465linuxsignal 处理 说明:本文主要翻译自ULK 3rd chapter 11.主要受 http://blog.csdn.net/yunsongice 影响,故发表在csdn.另外,本文是最初版本,估计以后会有一个改

2015-09-22 11:03:12 3939

转载 如何查看linux 版本

1.  查看Linux内核版本命令:1)  linux:~ # cat /proc/version            Linux version 2.6.37.1-1.2-desktop (geeko@buildhost) (gcc version 4.5.1 20101208 [gcc-4_5-branch revision 167585] (SUSE Linux)

2015-09-22 10:41:35 502

转载 linux内核相关的两个问题

如果在命令行执行kill -9 1,那么结果是没有反应,连个提示都没有,实际上init进程是杀不死的,到底为何呢?kill指令实际上是发信号,如果一个进程对一个信号没有反应那么 原因可能有以下三点:1.该进程屏蔽了此信号;2.该进程是内核线程,手动屏蔽了此信号;3.内核忽略了此信号.我们看看init进程,它不是内核线程 (实际上在rest_init之初的init是内核线程,只是它马上exec到用户

2015-09-22 09:09:03 381

原创 SIP路由机制解析

现在来介绍一下SIP中的路由机制。总的来说,SIP中存在两种路由场景:1、请求消息的路由;2、响应消息的路由 ,响应消息的路由非常简单,就是完全依靠Via来完成的,具体请见我关于RFC3261中会话流程的分析。下面我们只谈SIP请求消息的路由。 首先,我们要搞清楚什么是严格路由和松散路由。 严格路由(Strict Routing):可以理解为比较“死板”的理由机制,这种路由机制在SIP

2015-09-19 18:18:59 3101

转载 通过inotify监控linux文件系统变化

http://www.mjmwired.net/kernel/Documentation/filesystems/inotify.txthttp://www.ibm.com/developerworks/linux/library/l-ubuntu-inotify/index.html?ca=drs-http://linux.die.net/man/7/inotifyhtt

2015-09-17 20:38:20 886

原创 DIV_ROUND_CLOSEST函数

功能描述该函数主要进行四舍五入计算使用。例如:3/2=1.5,计算机中的整数运算结果为 3/2=1,经过DIV_ROUND_CLOSEST函数四舍五入运算后,3/2=2代码Linux内核中DIV_ROUND_CLOSEST函数的代码如下:#define DIV_ROUND_CLOSEST(x, divisor)(                        \{

2015-09-17 20:14:47 6645

转载 Idle进程的切换过程

每个cpu都有自己的运行队列,如果当前cpu上运行的任务都已经dequeue出运行队列,而且idle_balance也没有移动到当前运行队列的任务,那么schedule函数中,按照rt ,cfs,idle这三种调度方式顺序,寻找各自的运行任务,那么如果rt和cfs都未找到运行任务,那么最后会调用idle schedule的idle进程,作为schedule函数调度的下一个任务。    

2015-09-16 09:54:40 1061

转载 Linux内核CPU负载均衡机制

还是神奇的进程调度问题引发的,参看Linux进程组调度机制分析,组调度机制是看清楚了,发现在重启过程中,很多内核调用栈阻塞在了double_rq_lock函数上,而double_rq_lock则是load_balance触发的,怀疑当时的核间调度出现了问题,在某个负责场景下产生了多核互锁,后面看了一下CPU负载平衡下的代码实现,写一下总结。内核代码版本:kernel-3.0.13-0.27

2015-09-16 09:31:43 2451

原创 海康摄像头GB28181对接

必须要素:1.      必须包含subject头域2.      SDP中session name必须填写Play3.      SDP中不能懈怠audio4.      SDP中的video必须携带recvonly属性5.      SDP中的video必须支持H264以上5要素缺一不可。示例:1.      正确流程P1->IPCINVITEsip:3

2015-09-13 13:34:17 36893 6

转载 PostgreSQL学习手册(PL/pgSQL过程语言)

一、概述:    PL/pgSQL函数在第一次被调用时,其函数内的源代码(文本)将被解析为二进制指令树,但是函数内的表达式和SQL命令只有在首次用到它们的时候,PL/pgSQL解释器才会为其创建一个准备好的执行规划,随后对该表达式或SQL命令的访问都将使用该规划。如果在一个条件语句中,有部分SQL命令或表达式没有被用到,那么PL/pgSQL解释器在本次调用中将不会为其准备执行规划,这样的好

2015-09-10 16:27:25 525

转载 linux调度器(十)——调度器/proc信息解读

注下面的时间或时刻都是从rq->clock中获得的,而这个值是由update_rq_clock底层cpu来更新的。并且很多信息是需要内核配置CONFIG_SCHEDSTATS才有。/proc//sched$cat /proc/28733/sched    cpu_test (28733, #threads: 1)---------------------

2015-09-09 09:49:46 798

转载 linux调度器(九)——调度器的配置参数

调度器的配置参数/proc/sys/kernel/sched_min_granularity_ns(4000000ns):sysctl_sched_min_granularity,表示进程最少运行时间,防止频繁的切换,对于交互系统(如桌面),该值可以设置得较小,这样可以保证交互得到更快的响应(见周期调度器的check_preempt_tick过程)/proc/sys/kernel/sc

2015-09-09 09:48:39 682

转载 linux调度器(八)——实时调度与SMP

实时调度器类实时调度类有两类进程:循环进程SCHED_RR:循环进程有时间片,随着进程的运行时间会减少。当时间片用完时又将其置为初值,并将进程置于队列末尾。先进先出SCHED_FIFO:没有时间片调度,运行后可执行任意长时间直到自己放弃CPU。实际上两类进程在相同优先级队列上都是先进先出的,只是一个有时间片一个没有时间片。    现在实时进程的调度其实就是使用之前内核的O(

2015-09-09 09:47:53 1135

转载 linux调度器(七)——other cfs class api and functions

OTHER CFS CLASS APIset_curr_task_fair(rq):将cpu运行队列里的当前运行进程设置为cfs运行队列里当前运行的进程(set_curr_task_fair),对于组调度则必须把它上级的se也设置为相应cfs_rq的当前运行进程。该接口主要用于修改某个进程的调度策略(__sched_setscheduler调度器类的运行队列信息也需要更新)或把一个进程从一

2015-09-09 09:47:05 522

转载 linux调度器(六)——应用层理解CFS及组调度

上面我们介绍了CFS及组调度相关的主要内容,但可能很多人还跟我一样有点云里雾里的,下面我们直接从应用层面上也查看CFS及组调度的效果。首先对于非组调度,决定它们运行时间的唯一因素就是weight,也就是我们知道的nice,我们可以通过renice来重新调整进程的优先级,然后再使用taskset将它们限定在同一个CPU上(CFS只是保证一个CPU的公平,所以你可以看到一个有趣的现象:如指定两个进程的

2015-09-09 09:46:10 592

转载 linux调度器(五)——进程管理与CFS

进程调度初始化         由于该过程涉及到进程的管理模块,这个模块的详细过程我们将在以后的机会介绍,所以这里,我们主要扣出与调度相关的内容。进程的创建内核入口为do_fork,首先我们简单的看一下它的主要行为:图 do_fork与CFS的交互         上图我们只是画了do_fork最普通的fork操作,及正常的启动状态,上面的三个sched_cla

2015-09-09 09:45:20 670

转载 linux调度器(四)——主调度器与CFS

当内核从系统调用返回,或者从中断处理程序返回,内核都会检查当前进程是否设置了TIF_NEED_RESCHED标志;或者进程主动放弃CPU时(sched_yield,sleep或者收到SIGSTOP,SIGTTOP信号)都会进入主调度器。同样的我们先看一下主调度的框架部分,该部分就是sched.c:schedule(void):关闭内核抢占如果进程之前是不可运行并且被内核抢占了,那么如果它现

2015-09-09 09:44:39 1173

转载 linux调度器(三)——周期性调度器与CFS

注:这里并没有详细分析到每个内部函数,如果要了解这些细节的话,可以看后面的OTHER CFS CLASS API及CFS主要的内部函数。    周期性调度器在调度框架上由scheduler_tick完成:在每一个cpu的时钟周期都触发一次该函数调用,它更新运行队列的时钟及load,然后调用当前进程的调度器类的周期调度函数。[cpp] view plaincopy

2015-09-09 09:43:24 1450

转载 linux调度器(二)——CFS模型

本系列文章阅读的core是:2.6.32-220这里使用“模型”而不是“算法”是因为这东西实在不好用算法描述(但是它却运行得很好,包括性能)。         核心思想: 把CPU总时间按运行队列的所有se的权重分配给每个se。每个se使用cpu的顺序由它们已使用的cpu虚拟时间(vruntime)决定的,已使用的虚拟时间越少,它在运行队列的位置越靠左,那么它再次被调度执行的概率也就越高。

2015-09-09 09:42:31 539

转载 linux调度器(一)——概述

本次分析的kernel代码为2.6.32-220。并且我们先不考虑SMP。当前linux的调度程序由两个调度器组成:主调度器,周期性调度器(两者又统称为核心调度器);并且每个调度器包括两个内容:调度框架(其实质就是两个函数框架)及调度器类。调度器类是实现了不同调度策略的实例,如 CFS、RT class。它们的关系如下图:图 调度器的组成当前的内核支持两种调度器类(sc

2015-09-09 09:41:05 703

原创 P-Associated-URI处理流程

UA 的处理流程一个 UAC 可能在 REGISTER 的 200 OK 响应中收到 P-Associated-URI 头字段. 该字段的出现意味着 registrar 支持该项扩展.头字段的值包含 AOR 的 0 个或多个关联 URIs. UAC 可以接下来的请求中可以使用任意一个来填写 From 头字段或为标识 calling party 提供信息的其他 SIP 头字段.UAC 可检测

2015-09-05 18:13:43 1933

原创 linux查询rpm包详细信息

rpm -pqi 安装包名称例如:rpm -pqi asg-8.2.6-6_upgrade.i386.rpmName        : asg                          Relocations: (not relocatable)Version     : 8.2.6                             Vendor: Anta

2015-09-01 18:51:33 2115

ps解封包处理

PS视频流的解封包处理过程,详细请看源码!

2015-08-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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