自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (4)
  • 收藏
  • 关注

原创 linux进程调度

抢占就是进程调度,用户进程抢占发生在

2014-08-31 15:39:20 458

转载 Linux内核中的等待队列--init_waitqueue_head等

inux内核中的等待队列    Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在Linux2.4.21中,等待队列在源代码树include/linux/wait.h中,这是一个通过list_head连接的典型双循环链表,如下图所示。在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t

2014-08-28 10:26:17 487

转载 linux内核等待队列方法

当你在用户空间需要读写一大片数据的时候,这个就用上了。 以下来自:http://www.yuanma.org/data/2006/1207/article_1916.htm假设我们在 kernel 里产生一个 buffer,user 可以经由 read,write 等 system call 来读取或写资料到这个 buffer 里。如果有一个 user 写资料到 buffe

2014-08-28 09:37:27 378

原创 工作笔记(USB performance networkmap)

函数指针在作为函数参数传递给函数A的时候,在函数A的定义中,如果

2014-08-28 09:05:27 462

原创 内核套接字sock

用户socket与内核sock是一一对应的,在用户socket结构体中有成员变量

2014-08-27 20:07:16 586

原创 原子位操作

如果你连续执行两个原子位操作,

2014-08-27 17:42:39 447

转载 LINUX的Netlink机制

Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火

2014-08-25 19:16:15 549

转载 内核中container_of

在linux 内核中有一个大名鼎鼎的宏container_of(),这个宏是用来干嘛的呢?我们先来看看它在内核中是怎样定义的。呵呵,乍一看不知道是什么东东。我们先来分析一下container_of(ptr,type,member),这里面有ptr,type,member分别代表指针、类型、成员。看一个例子:Struct test        {      

2014-08-25 13:43:17 356

原创 深入理解linux计数内幕(学习笔记帧传出)

要传输帧时,内核会提供dev_queue_xmit函数,此函数会从设备的

2014-08-24 15:29:03 594

原创 深入理解linux网络技术内幕(学习笔记)

一般的,驱动程序将其设备的一个

2014-08-23 18:55:28 1149

原创 将博客搬至CSDN

本博客是本人工作学习中的一些笔记性文字,防止丢失进行博客搬家备份

2014-08-23 15:08:52 303

转载 杂乱知识总结(strcpy,memcpy.fork,)

当内核执行C程序时,(使用一个exec函数),在调用main函数之前县调用一个特殊

2014-08-21 20:41:53 575

原创 linux 的一个调试命令 strace

strace 直接后面加命令,会将该命令执行过程中所调用的所有系统调用和接收到的信号打印出来

2014-08-21 14:00:55 463

原创 进程工作目录

linux的lsof命令能够显示被进程打开的文件或目录。被进程打开的文件就是在某个

2014-08-20 17:21:48 1285

原创 应用层log函数的写法

int my_log(const char *format,...){ va_list args; FILE *fp; fp = fopen("/tmp/my_log","a+"); if(!fp) { fprintf(stderr,"fp is NULL\n"); return -1;

2014-08-19 11:57:32 721

转载 浅谈HTTP中的GET与POST

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。  1

2014-08-18 13:30:45 345

转载 C语言常用的各种操作字符串的函数

/*字符串长度函数*/  size_t strlen(const char *string); /*不受限制的字符串函数*/   char *strcpy(char *dst, const char *src);   char *strcat(char *dst, const char *src);   int strcmp(const char *s1,

2014-08-18 11:20:42 631

转载 cgi

http://www.programfan.com/article/2858.htmlhttp://222.30.226.10/hhcmc/study/teach_vc/teach_sp_11.htmhttp://www.moon-soft.com/program/bbs/readelite887957.htm一、CGI概述   CGI(Common Gateway

2014-08-15 15:44:07 459

转载 URI

Web上可用的每种资源 -HTML文档、图像、视频片段、程序等 - 由一个通用资源标识符(Uniform Resource Identifier, 简称"URI")进行定位。目录1组成2使用3区别4与URN▪ 技术观点▪ RFC 33055相关介绍▪ 发展▪ 标准改良▪ 与XML命名

2014-08-15 09:36:37 682

转载 软中断

软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果。很多情况下,软中断和"信号"有些类似,同时,软中断又是和硬中断相对应的,"硬中断是外部设备对CPU的中断","软中断通常是硬中断服务程序对内核的中断","信号则是由内核(或其他进程)对某个进程的中断"(《Linux内核源代码情景分析》第三章)。软中断的一种典型应用就是所谓的"下半部"(bottom half),它的得

2014-08-14 11:09:09 489

原创 内核为什么需要各种解决同步的锁、互斥量等

线程和进程同时运行是基于内核的调度系统。为了

2014-08-14 10:53:38 373

转载 同步IO、异步IO、阻塞IO、非阻塞IO的区别

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不

2014-08-13 19:29:19 565

转载 同步IO与异步IO

I/O 既 输出/输入 (Input/Output)既然是输入输出,为什么又会有同步和异步的不同方式呢?同步 当一个IO操作进行时,系统停下来等待这个IO的操作完成后才会继续进行下面的计算。异步 当一个IO操作进行时,通过多线程等方法,当CPU去处理那些不需要依赖IO执行结果的计算,充分的利用CPU的运算能力。当IO操作执行完毕时,继续执行后续的操作。一般情况下,作

2014-08-13 19:10:35 439

原创 工作笔记

分析start_kernel函数 位于init/main.c#8 kernel/irq/handle.c 中断描述符的初始化在early_irq_init中进行中断描述符的action没有进行初始化默认为NULL,可以调用request_irq来进行注册#9 start_kernel函数中调用t

2014-08-13 11:30:08 490

转载 Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现

上一篇文章,我介绍了传统的低分辨率定时器的实现原理。而随着内核的不断演进,大牛们已经对这种低分辨率定时器的精度不再满足,而且,硬件也在不断地发展,系统中的定时器硬件的精度也越来越高,这也给高分辨率定时器的出现创造了条件。内核从2.6.16开始加入了高精度定时器架构。在实现方式上,内核的高分辨率定时器的实现代码几乎没有借用低分辨率定时器的数据结构和代码,内核文档给出的解释主要有以下几点:

2014-08-13 11:21:54 499

转载 Linux时间子系统之一:clock source(时钟源)

clock source用于为linux内核提供一个时间基线,如果你用linux的date命令获取当前时间,内核会读取当前的clock source,转换并返回合适的时间单位给用户空间。在硬件层,它通常实现为一个由固定时钟频率驱动的计数器,计数器只能单调地增加,直到溢出为止。时钟源是内核计时的基础,系统启动时,内核通过硬件RTC获得当前时间,在这以后,在大多数情况下,内核通过选定的时钟源更新实时时

2014-08-13 11:21:46 466

转载 Linux时间子系统之四:定时器的引擎:clock_event_device

红色字体为转载时早期的内核版本中,进程的调度基于一个称之为tick的时钟滴答,通常使用时钟中断来定时地产生tick信号,每次tick定时中断都会进行进程的统计和调度,并对tick进行计数,记录在一个jiffies变量中,定时器的设计也是基于jiffies。这时候的内核代码中,几乎所有关于时钟的操作都是在machine级的代码中实现,很多公共的代码要在每个平台上重复实现。随后,随着通用时钟框

2014-08-12 10:13:07 465

转载 Linux中断浅析http://bbs.chinaunix.net/thread-3566316-1-1.html

本文描述内容针对2.6.31+x86平台,不包含硬件相关的细节。作者:独孤九贱;版权所有,转载请注明出处。有问题欢迎与我交流讨论。一、概述中断,本质上是一个电信号,早期的计算的并没有中断这一概念,这使得CPU与外围设备的交互变得困难,CPU需要不断的轮询,以探测外围设备是否有数据需要处理。这浪费大量的资源。中断的出现,将CPU从这一任务中解放出来,CPU与外设的处理,变为异

2014-08-11 20:17:32 912

转载 c语言宏定义和宏函数

要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。  在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。  我们来看一个例子,比较两个数或者表达式大小,首先我们把它写成宏定义:  #define MAX(

2014-08-11 09:49:29 1026

转载 软中断与硬件中断的区别

①硬中断是由外部事件引起的因此具有随机性和突发性;软中断是执行中断指令产生的,无面外部施加中断请求信号,因此中断的发生不是随机的而是由程序安排好的。②硬中断的中断响应周期,CPU需要发中断回合信号(NMI不需要),软中断的中断响应周期,CPU不需发中断回合信号。③硬中断的中断号是由中断控制器提供的(NMI硬中断中断号系统指定为02H);软中断的中断号由指令直接给出,无需使用中断控制器。

2014-08-08 17:33:50 685

原创 进程上下文与中断上下文

进程上下文:一个进程在执行的时候,CPU中的所有寄存器中的值

2014-08-08 17:13:29 460

转载 为什么中断不能休眠

1. 中断处理的时候,不应该发生进程切换,因为在中断context中,唯一能打断当前中断handler的只有更高优先级的中断,它不会被进程打断(这点对 于softirq,tasklet也一样,因此这些bottom half也不能休眠),如果在中断context中休眠,则没有办法唤醒它,因为所有的 wake_up_xxx都是针对某个进程而言的,而在中断context中,没有进程的概念,没有一个tas

2014-08-08 16:13:37 547

转载 jiffies等内核时间概念

类似于软件中断的机制不能执行休眠或可能引起休眠的函数。在内核空间sleep这种用户空间的延时函数是不能用的,可以使用msleep等代替,详情见《Linux设备驱动程序》一书第七章。linux HZLinux核心几个重要跟时间有关的名词或变数,底下将介绍HZ、tick与jiffies。 HZLinux核心每隔固定周期会发出timer int

2014-08-06 09:07:41 1118

原创 工作笔记 内核模块

内核模块属于内核的一部分,是运行于内核空间的

2014-08-01 18:20:53 429

转载 Linux的hrtimer高精度定时器的使用

#include #include #include #include MODULE_LICENSE("GPL");#define MS_TO_NS(x) (x * 1E6L)//zstatic struct hrtimer hr_timer;enum hrtimer_restart my_hrtimer_callback( struct hrtimer *timer ){

2014-08-01 17:53:16 1613

原创 linux下一个定时器的使用方法

这是linux下一个精确定时器的使用方法#define READ_INTERVAL            40*1000000static int timer_init(){    int ret;    struct sigevent sev;    struct itimerspec its;    sev.sigev_notify = SIGEV_TH

2014-08-01 10:44:55 578

转载 Linux定时器

摘要】本文主要介绍了linux的时间和定时器。【关键词】Linux 定时器 时间一、问题的提出我们开发程序时,经常会遇到时间和定时器的问题,为了更好的使用时间和定时器,现在列举一个一些时间结构体、函数和定时器。二、解决思路1.时间类型1) time_t是一个长整型,一般用来表示用1970年以来的秒数。2)struct timeval有两个

2014-08-01 10:41:24 470

数据结构 C语言严蔚敏著

循序渐进讲解数据结构,国内数据结构的经典教材,数据结构类书籍的畅销书

2012-11-27

空空如也

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

TA关注的人

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