自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (3)
  • 收藏
  • 关注

转载 本地POSIX线程库(NPTL)(经典,说明了真实linux系统的实现)

<br />在linux操作系统中,本地posix线程库(nptl)是一种软件特性,它可让linux的内核,高效地运行那些使用posix风格的线程所编写的程序。<br /><br /> <br /> <br /> <br /> <br /> <br />测试中,nptl在一个ia-32处理器上,成功地同时跑了10万个线程,启动这些线程只用了不到2秒。比较起来,在不支持nptl的内核上,这个测试花费了大约15分钟。<br /><br /> <br /> <br /> <br /> <br /> <br

2010-09-30 16:35:00 1400

转载 Linux 用户态与内核态的交互——netlink 篇

<br />Linux 用户态与内核态的交互 <br />——netlink 篇[/size] <br /><br />作者:Kendo <br />2006-9-3 <br /><br />这是一篇学习笔记,主要是对《Linux 系统内核空间与用户空间通信的实现与分析》中的源码imp2的分析。其中的源码,可以到以下URL下载: <br />http://www-128.ibm.com/developerworks/cn/linux/l-netlink/imp2.tar.gz <br /><br />[si

2010-09-30 15:33:00 733

转载 应用2.6内核超线程模式

<br />对于大多数应用软件开发者来说,Linux 2.4和2.6内核家族间的大部分差异对它们没有直接的影响。大多数内核变化只是为了提高系统性能而已。但也有例外,对某些应用软件而言,内核和系统的变化对它们的推广和它们对其它进程和线程的管理都具有一定的影响。 <br />    2.6内核为用户带来了一种新的、改进的超线程模式。这种模式是通过NPTL(Native POSIX Thread Library)实施的。新的超线程模式的采用对于开发人员、系统运行时间库(如GNU C库)、共享应用软件库等有着非凡的

2010-09-30 14:47:00 1110

转载 内核线程、轻量级进程、用户线程

<br />在现代操作系统中,进程支持多线程。进程是资源管理的最小单元;而线程是程序执行的最小单元。一个进程的组成实体可以分为两大部分:线程集合资源集。进程中的线程是动态的对象;代表了进程指令的执行。资源,包括地址空间、打开的文件、用户信息等等,由进程内的线程共享。<br />线程有自己的私有数据:程序计数器,栈空间以及寄存器。Why Thread?(传统单线程进程的缺点)<br /><!--[if !supportLists]-->1.<!--[endif]-->现实中有很多需要并发处理的任务,如数据库的

2010-09-30 12:39:00 905

转载 Linux下的定时器:alarm()与setitimer()

<br />说明: setitimer一个进程中只能有一个 下一个会覆盖前一个的定时 想一个进程多个定时器只能自己实现。<br /><br />Linux下的定时器有两种,以下分别介绍:<br /> <br />1、alarm<br /> <br />如果不要求很精确的话,用alarm()和signal()就够了<br /> <br />unsigned int alarm(unsigned int seconds)<br /> <br />函数说明: alarm()用来设置信号SIGALRM在经过参数se

2010-09-29 14:22:00 5111

转载 linux下多定时器的实现(经典)

linux下多定时器的实现<br />一、已有的定时器接口<br />   时空管理是计算机系统的主要任务。在时间管理中,我们经常利用定时器处理事情:比如tcp协议中利用定时器管理包超时,视频显示中利用定时器来定时显示视频帧,web服务中利用定时器来管理用户的超时。windows系统提供了SetTimer和timeSetEvent等定时器接口,linux中则提供了setitimer等接口。这些函数的接口很类似,大体上都是用户提供回调函数和超时时间向OS注册一个定时器事件,OS在超时时间到了的时候,调用用户提

2010-09-29 14:13:00 4162 2

转载 linux下多定时器的实现(经典)

linux下多定时器的实现<br />一、已有的定时器接口<br />   时空管理是计算机系统的主要任务。在时间管理中,我们经常利用定时器处理事情:比如tcp协议中利用定时器管理包超时,视频显示中利用定时器来定时显示视频帧,web服务中利用定时器来管理用户的超时。windows系统提供了SetTimer和timeSetEvent等定时器接口,linux中则提供了setitimer等接口。这些函数的接口很类似,大体上都是用户提供回调函数和超时时间向OS注册一个定时器事件,OS在超时时间到了的时候,调用用户提

2010-09-29 14:12:00 31333 2

转载 poco vs Boost

<br />Wooce Yang收集整理 <br />POCO的优点: <br />1) 比boost更好的线程库,特别是一个活动的方法的实现,并且还可设置线程的优先级。 <br />2) 比 boost:asio更全面的网络库。但是boost:asio也是一个非常好的网络库。 <br />3) 包含了一些Boost所不包含的功能,像XML,数据库接口等。 <br />4) 跟Boost相比,集成度更高,是更加统一的一个库。 <br />5) Poco的c++代码更清洁,现代和易理解。对不是模板编程专家的人

2010-09-29 13:49:00 8186

转载 Poco::TCPServer框架解析

Poco::TCPServer框架解析<br />POCO C++ Libraries提供一套 C++ 的类库用以开发基于网络的可移植的应用程序,功能涉及线程、文件、流,网络协议包括:HTTP、FTP、SMTP 等,还提供 XML 的解析和 SQL 数据库的访问接口。不仅给我的工作带来极大的便利,而且设计巧妙,代码易读,注释丰富,也是非常好的学习材料,我个人非常喜欢。POCO的创始人在这个开源项目的基础上做了一些收费产品,也成立了自己的公司,"I am in the lucky position to wo

2010-09-29 13:46:00 4727

转载 关于LEA指令

<br />堆栈种分配的局部变量所谓的“标号”,你以为是什么?(都是那些该死的宏惹的祸,大家要都是老老实实写代码,就不会有这些疑问了)。   <br />   比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子:   <br />   push    ebp   <br />   mov    esp,    ebp   <br />   sub    esp,    4   <br />   现在栈上就有了4各字节的空间,这就是你的局部变量。  

2010-09-28 16:34:00 7497 2

转载 如何成为一个Linux内核开发者(经典)

<br />这篇文章将是这个话题的最权威的文档。它将教你如何成为一个Linux内核开发者以及学会如何和Linux内核社区一起工作。它不包含任何有关内核编程的技术细节,但是会帮你在这方面指明方向。<br />如果这篇文档里任何部分已经过时,请把更新信息以补丁的形式发送给本文的维护者,他的联系方式列在本文档的末尾。<br />介绍<br />好了,你想成知道如何成为一个Linux内核开发者么?或者你的老板告诉你,“去为这个设备写一个Linux驱动。“这篇文档的目的,就是通过描述你需要经历的过程和提示你如何和社区

2010-09-28 15:53:00 11733 2

转载 关于Linux内核学习(经典)

<br />常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux。 这个……还是有点太泛了吧,我想下面几个基础可能还是需要的,尽管不一定必需: <br />1, 关于操作系统理论的最初级的知识。不需要通读并理解《操作系统概念》《现代操作系统》等巨著,但总要知道分时(time-shared)和实时(real-time)的区别是什么,进程是个什么东西,CPU和系统总线、内存的关系(很粗略即可),等等。 <br />2, 关于C语言。不需要已经很精通C语言

2010-09-28 15:50:00 2091

转载 《Linux内核设计与实现》勘误

<br />Robert Love的《Linux Kernel Development》一书,比较适合内核入门。而且对某些方面的解说,比如各种下半部,非常到位。承蒙一位陌生朋友的慨然相助,我有幸得到了本书的英文第二版,把中文不好理解的地方对照英文订正一下。只订正有碍理解的,当然可能有些是我理解错误,朋友们指正。多谢了。<br /><br />L+7 表示从上往下数第7行;L-7表示从底向上数第7行。<br /><br /><br />P8<br /><br />L+7:练习中一般在头文件中定义内联函数<br

2010-09-28 15:38:00 1387

转载 linux是实时系统还是分时操作系统

<br />实时操作系统  实时操作系统<br />  英文称Real Time Operating System,简称RTOS。<br />1.实时操作系统定义<br />  实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。因而,提供及时响应和高可靠性是其主要特点。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时

2010-09-28 15:36:00 19067 2

转载 near指针,far指针,huge指针

<br />near指针和far指针<br />在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。<br />near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。<br />far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以16后再与偏移量相加,(所以实际上far指针是20位的长度。)即可得到far指针的1M字节的偏移量。所以far指针的寻址范围是1M字节,超过了一个段64K的容量。例如一

2010-09-24 21:25:00 1343

转载 网络设备操作系统(Linux .vs. vxWorks)

<br />2001年IBM大张旗鼓的宣布支持Linux,并投入10亿美金用于Linux相关开发。 <br />最近的Cisco抛弃了其专有的IOS核心,在 ASR1000的控制平面软件上采用了Linux为基础平台。据传Huawei、H3C等厂商的软件平台也纷纷转向以Linux为基础,而以前他们都采用vxWorks作为基础。几年前,就连vxWorks的开发者风河公司也宣布同时支持vxWorks和Linux。由此看来,Linux在网络设备领域取代vxWorks几乎已成定局。这背后的原因究竟是什么?与vxWor

2010-09-24 11:58:00 4122 1

转载 iptables和netfilter介绍

<br />iptables 是与最新的 2.6.x 版本Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。 <br />  netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在 L

2010-09-23 23:18:00 711

原创 租房协议样本

<br />房屋租赁协议:<br />出租方(以下简称甲方)姓名:________________  身份证:___________________ <br />承租方(以下简称乙方)姓名:________________  身份证:___________________  <br />甲、乙双方通过友好协商,就房屋租赁事宜达成协议如下:<br />一、租赁地点及设施:<br />  1.租赁地址:_________路__________号____________室;房型规格____________;居住面

2010-09-23 12:17:00 1868

转载 CPU总线的作用和分类

<br />按总线的功能(传递信息的内容)分类,计算机中有三种类型的总线,即传送数据信息的数据总线、传送地址信息的地址总线和传送各种控制信息的控制总线。 <br /><br />1.数据总线 <br />数据总线是CPU与存储器、CPU与I/O接口设备之间传送数据信息(各种指令数据信息)的总线,这些信号通过数据总线往返于CPU与存储器、CPU与I/O接口设备之间,因此,数据总线上的信息是双向传输的。 <br /><br />2.地址总线 <br />地址总线上传送的是CPU向存储器、I/O接口设备发出的地址

2010-09-18 21:44:00 11386

转载 FUSE(Filesystem in Userspace)简介和使用

<br />1. FUSE(Filesystem in Userspace)简介<br />1.1. 概述<br />FUSE(用户空间文件系统)作为类UNIX系统平台上可加载的内核模块,允许非特权用户创建功能完备的文件系统,而不需要重新编译内核。FUSE模块仅仅提供kernel模块的接入口,而本身的主要实现代码位于用户空间中。对于读写虚拟文件系统来说,FUSE是个很好的选择。<br />FUSE起初是为了研究AVFS(A Virtual Filesystem)而设计的,而现在已经成为SourceForge

2010-09-16 22:33:00 9785 1

转载 RedHat版本介绍

Linux 是GNU/Linux的缩写,通常指各种Linux发行版的通称。常见的Linux厂家主要有Redhat/Novell等。Redhat有两大 Linux产品系列,其一是免费的Fedora Core系列主要用于桌面版本,提供了较多新特性的支持。另外一个产品系列是收费的Enterprise系列,这个系列分成:AS/ES/WS等分支。<br />Advanced Server,缩写即AS。AS在标准Linux内核的基础上,做了性能上的增强,并提高了可靠性,集成了众多常见服务器的驱动程序。可轻松识别 IBM

2010-09-16 22:26:00 4094 1

转载 moosefs

<br />MooseFS文件系统介绍  MooseFS是一种分布式文件系统,MooseFS文件系统结构包括以下四种角色: <br />  1 管理服务器managing server (master) <br />  2 元数据日志服务器Metalogger server(Metalogger) <br />  3 数据存储服务器data servers (chunkservers) <br />  4 客户机挂载使用client computers <br />  <br />飞客数据恢复中心提供<br

2010-09-16 19:17:00 942

转载 cassandra

<br />Cassandra <br />  计算机方面 <br />  Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。)Cassandra最初由Facebook开发,后转变成了

2010-09-16 19:12:00 750

转载 and的作用和用法

<br />我知道And是逻辑与的意思,有的地方说他可以快速获取余数.比如第十章的reptest3.s中有这样一段代码;<br />cld <br />rep movsl<br />movl length, %ecx<br />andl $3, %ecx<br />解释是通过and操作快速获取余数.<br />而有的地方他也有其他的用法,比如老师曾说过的"对齐",但我不知道对齐的地方到底是那里,请老师帮我解决这个问题,可以告诉我and就有那些作用和用法,怎么用.<br />解答: <br /> <br />

2010-09-16 16:52:00 7717

转载 汇编中Enter和Leave指令

<br />Enter的作用相当==push ebp和mov ebp,esp<br />这后面两句大家很熟悉吧?函数开始一般都是这两句<br />Leave的作用相当==mov esp,ebp和pop ebp<br />而这后面这两句也很常见,函数调用完后一般的用到<br />以上的Enter和leave的作用分别函数开始和结束<br />Win32汇编中局部变量的使用方法可以解释一个很有趣的现象:在DOS汇编的时候,如果在子程序中的push指令和pop指令不配对,那么返回的时候ret指令从堆栈里得到的肯定

2010-09-16 15:01:00 19275 4

转载 汇编语言的学习步骤

<br />  1.首先,我不推荐《IBM汇编语言》这类教科书试的教材。一来里面讲的一些东西都过时了,只有一些8086的东东,可我们早使用奔腾了。从286,386之后,Inte   CPU的结构已经有了很大的改进。而且这类书里面讲的也无非就是一些简单的指令格式和语法,但却讲得让人似在云里雾里。 <br />  <br />  2.不推荐一开始就学MASM或TASM的语法,其实语法这东西很简单。只有有一点点计算机编程基础的人,我相信最多一个小时,都能基本搞懂,然后再练练就自然会熟,不记得直接翻Refererc

2010-09-15 22:05:00 2216

转载 Perl的时间处理

1)<br />Date::Calc这里是冠军模块: use strict;use warnings;use Date::Calc qw(Add_Delta_YMD);my $startDate = &apos;2000-01-01&apos;;my ($startYear, $startMonth, $startDay) = $startDate =~ m/(/d-(/d)-/d)/;# 1 year, 2 months, 3 days, after startDatemy

2010-09-15 21:23:00 5795

转载 Linux的free命令输出详解

<br />我的linux执行free命令显示如下: <br />[root@Linux /tmp]# free<br />            total     used        free       shared    buffers   cached<br />Mem:       255268    238332      16936         0        85540   126384<br />-/+ buffers/cache:   26408       228860 <

2010-09-09 15:36:00 798

转载 linux内存管理2:内存映射和需求分页(英文名字:demand Paging,又叫:缺页中断)

<br />当某个程序映象开始运行时,可执行映象必须装入进程的虚拟地址空间。如果该程序用到了任何一个共享库,则共享库也必须装入进程的虚拟地址空间。实际上,Linux 并不将映象装入物理内存,相反,可执行文件只是被链接到进程的虚拟地址空间中(磁盘空间中)。随着程序的运行,被引用的程序部分会由操作系统装入物理内存。这种将映象链接到进程地址空间的方法称为“内存映射”。可执行映像.<br />每个进程的虚拟内存由一个 mm_struct 结构代表,我们将在下一章中详细讲述该结构。该结构中实际包含了当前执行映象的有关

2010-09-09 13:19:00 7214

转载 不带缓存的I/O和标准(带缓存的)I/O(经典)

先来看看不带缓存的I/O和标准(带缓存的)I/O都有那些不带缓存的I/O:       read,write,open......标准(带缓存的)I/O: fgets,fread,fwrite.....这里使用两个对应的函数进行比较:ssize_t write(int filedes, const void *buff, size_t nbytes)size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *fp)上面的buff和ptr都是指

2010-09-09 12:24:00 2521

转载 Linux 文件系统中元数据使用计数的机制

在 Linux 文件系统中,元数据的引用计数主要用于管理元数据(如 inode, dentry 结构)在内存中的创建、使用和释放。了解这部分的机制,有利于深入认识文件系统的运行机制,以及Linux如何在内存中管理元数据。这部分内容也是构建分布式文件系统所必须的知识,由此才能保证元数据在分布式文件系统中的正确使用。<br />概述<br />元数据是一个文件系统的重要部分。很多书籍和文章都介绍过 dentry 和 inode 在 Linux 中的作用和机制,但却很少有文献涉及到它们的使用计数( usage c

2010-09-08 22:01:00 1362

转载 dentry与inode节点之间的关系

<br />一、dentry的定义<br />dentry的中文名称是目录项,是Linux文件系统中某个索引节点(inode)的链接。这个索引节点可以是文件,也可以是目录。<br />dentry结构体定义如下:<br />struct dentry {<br />atomic_t d_count; 目录项对象使用计数器<br />unsigned int d_flags; 目录项标志<br />struct inode * d_inode; 与文件名关联的索引节点<br />struct dentry *

2010-09-08 15:54:00 2137 1

原创 inode节点中的三个时间总结:

<br />inode节点中的三个时间总结:    struct timespec i_atime;                //文件最后访问的时间      struct timespec i_mtime;               //文件最后修改的时间      struct timespec i_ctime;                //结点最后修改的时间  <br />    i_atime:文件最后访问时间,即是文件最后的读取时间,例如:用命令“cat filename”,此时间修

2010-09-08 14:49:00 1524

转载 Linux那些事儿之我是Sysfs(7)dentry与inode

我们在进程中要怎样去描述一个文件呢?我们用目录项(dentry)和索引节点(inode)。它们的定义如下:struct dentry {struct inode                                *d_inode; /* Where the name belongs to - NULL isstruct dentry                                *d_parent; /* parent directory */struct list_head  

2010-09-08 14:30:00 685

转载 LINUX-VFS的supper bolck、inode、dentry和file关系简述

<br />The common file model consists of the following object types:<br /><1>The superblock object<br />Stores information concerning a mounted filesystem. For disk-based filesystems, this object usually corresponds to a filesystem control block stored on d

2010-09-08 14:26:00 1037

转载 关于ext2文件系统支持的最大文件大小

<br />struct ext2_inode {<br />...<br /><br />  __u32 i_size; /* 以字节计的文件大小 */<br />...<br />  __u32 i_block[Ext2_N_BLOCKS]; /* 指向数据块的指针数组 */<br />  __le32  i_dir_acl;  /*目录访问控制列表*/<br />...<br />};<br />刚看了《深入理解Linux内核》的第十八章,其中关于这个问题有这样的一个描述:<br /><br />留给

2010-09-08 12:48:00 6289

转载 “inode block的概念”和“几个文件系统概念:geometry、sector 、Block”

inode---------------------------------    提到inode,我们不得不先介绍硬盘的整体结构。硬盘中包含多个硬盘盘片,硬盘盘片为圆形,每个硬盘盘片都有一个可以读写的磁头(Head),将这个磁头固定,使硬盘盘片旋转一周,所走轨迹就是磁道(Track)。硬盘内所有盘片的相同磁道号的集合成为磁柱(Cylinder)。每一磁道被划分成许多区域,每个区域叫一个扇区(Sector)。扇区是硬盘的最小存储物理量,一个扇区的存储容量大约是512字节(约0.5K)。    知道了硬盘的大

2010-09-08 12:46:00 4805

转载 Linux下用文件的inode删除文件

<br />文件的inode定义了文件的大小、所有人等文件的特征。每个文件和目录都有自己唯一的inode数字。但是为什么用inode来删除文件,而不是用常用的rm -rf命令呢?原因是,如果你不小心创建了含有特殊字符的文件和目录,比如带有 ? * ^ 的文件名,就会很难删除。下面我们就来介绍一下:1)如何找出文件和目录的inode;2)配合find命令,删除特定的inode文件;3)其他有用的删除顽固文件的方法。 <br /><br />* 如何找出文件的inode? <br /><br />用stat 或

2010-09-08 11:18:00 4545

转载 linux中静态库(.a)和动态库(.so)

<br />静态库 <br />静态库在编译的时候被固定在了可执行文件中,而不是放在系统的某个地方由ld.so加载。这种做法好的一面是可执行文件自己包含了所需的所有库文件,并不依赖于系统中的其他代码,也不会出现库文件缺失的情况。你可以把这些代码复制给任何人,而它们保证可以工作。不好的一面就是可执行文件不必要的增大了,而且不同的程序之间不能共享代码。<br />习惯上,我们以后缀.a来标记静态库文件。<br />       在linux环境中, 使用ar命令创建静态库文件.如下是命令的选项: <br /> 

2010-09-07 17:51:00 1652

转载 so库的性能注意事项

<br />一个共享库可供同一系统中的多个应用程序使用。共享库的性能会影响使用此共享库的应用程序,并且会影响整个系统。<br />虽然共享库中的代码会直接影响运行进程的性能,但此处讨论的性能问题则涉及共享库的运行时处理。本节通过考虑各个方面(如文本大小和纯度)以及重定位开销,更详细地介绍了这种处理。<br />分析文件<br />有多种工具可用来分析 ELF 文件的内容。要显示文件的大小,请使用 size(1) 命令。<br /> <br />$ size -x libfoo.so.1<br />59c +

2010-09-07 17:50:00 2140

Linux那些事儿之我是Sysfs.pdf

Linux那些事儿之我是Sysfs.pdf

2010-09-09

perl的调试技术--中文版

perl的调试技术--中文版----好好好

2010-07-05

网络处理器介绍,很适合初学者

网络处理器介绍,适合初学者: 什么是NPUs技术 产生的技术背景

2010-01-10

空空如也

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

TA关注的人

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