自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

转载 Linux本地套接字

linux和UNIX都拥有一个非常实用的工具--UNIX套接字,或称为本地套接字,它可以被用在进程间通讯(IPC)当中。UNIX套接字的运转机制和Internet套接字类似,主要的区别UNIX套接字只能用在一台计算机中,而Internet套接字则可以在不同的计算机之间使用。UNIX套接字定址的方式是作为本地文件系统里的一个文件。你可能会奇怪为什么要使用UNIX套接字而不使用常规的Interne

2015-12-28 11:41:12 2713 1

转载 QOS相关原理介绍

最近接触到几个小工程用了不少QOS知识,主要是限速之类的,用到了CIR_CBS_EBS    理解CIR_CBS_EBS三者之间的关系,更好的应用QOS。平均速率:向桶中放置令牌的速率,即允许的流的平均速度。通常设置为 CIR(Committed Information Rate,承诺信息速率)。突发尺寸:令牌桶的容量,即每次突发所允许的最大的流量尺寸。通常设置为CBS(Committ

2015-11-17 10:36:57 1608

转载 网络虚拟化技术(一): Linux网络虚拟化

转载:https://blog.kghost.info/2013/03/01/linux-network-emulator/笔者现在在做云计算的网络设计,涉及到上百台服务器与交换机,在实测前必须进行原型测试,但是我只有一个工作用开发机,本文介绍一种方法,使用这一台机器模拟数十台服务器以及路由器的网络环境。Linux的网络虚拟化是LXC项目中的一个子项目,LXC包括文件系统虚

2015-11-05 11:01:52 514

转载 网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP

转载https://blog.kghost.info/2014/11/19/openvswitch-internal/TUN 设备TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为。先来看看物理设备是如何工作的:所有物理网卡收到的包会交给内核的 Network Stack 处理,然后通过 Socket API 通知给用户程序。下面看看 TUN 的工作方式:

2015-11-05 10:38:05 775

转载 理解 chroot

通过编写 chroot 来认识 chroot 发挥的作用和它带来的好处chroot 在 Linux 系统中发挥了根目录的切换工作,同时带来了系统的安全性等好处。本文通过编写 chroot 来理解 chroot 的作用和好处,这不仅有助于更好的使用 chroot,同时加深了对 Linix 系统初始 RAM 磁盘工作的认识。什么是 chrootchroot,即 change root

2014-12-10 21:42:26 829

转载 多线程与多进程

在Unix上编程采用多线程还是多进程的争执由来已久,这种争执最常见到在C/S通讯中服务端并发技术 的选型上,比如WEB服务器技术中,Apache是采用多进程的(perfork模式,每客户连接对应一个进程,每进程中只存在唯一一个执行线程), Java的Web容器Tomcat、Websphere等都是多线程的(每客户连接对应一个线程,所有线程都在一个进程中)。从Unix发展历史看,伴随着Unix的

2014-12-06 20:06:55 762

原创 linux内核epoll实现分析

epoll与select/poll的区别 select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪,能够通知程序进行相应的操作。 select的本质是采用32个整数的32位,即32*32= 1024来标识,fd值为1-1024。当fd的值超过1024限制时,就必须修改FD_SETSIZE的大小。这个时

2014-12-06 13:34:04 8338 1

转载 Linux Futex的设计与实现

引子在编译2.6内核的时候,你会在编译选项中看到[*] Enable futex support这一项,上网查,有的资料会告诉你"不选这个内核不一定能正确的运行使用glibc的程序",那futex是什么?和glibc又有什么关系呢?1. 什么是FutexFutex 是Fast Userspace muTexes的缩写,由Hubertus Franke, Matthew Kirkwo

2014-12-03 21:10:56 1131 1

转载 Linux 线程模型的比较:LinuxThreads 和 NPTL

转载:http://www.ibm.com/developerworks/cn/linux/l-threading.html        LinuxThreads 项目最初将多线程的概念引入了 Linux®,但是 LinuxThreads 并不遵守 POSIX 线程标准。尽管更新的 Native POSIX Thread Library(NPTL)库填补了一些空白,但是这仍然存在

2014-12-03 00:16:49 527

转载 深刻理解Linux进程间通信(IPC)

转载:http://www.ibm.com/developerworks/cn/linux/l-ipc/序linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形

2014-12-03 00:01:58 674

转载 Linux线程局部存储

在Linux系统中使用C/C++进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类问题都是通过锁机制来处理,但这对程序的性能带来了很大的影响,当然对于那些系统原生支持原子操作的数据类型来说,我们可以使用原子操作来处理,这能对程序的性能会得到一定的提高。那么对于那些系统不支持原子操作的自定义数据类型,在不使用锁的情况下如何做到线程安全呢?本文将从线程局部存储方面,简单

2014-11-29 22:49:25 1014

转载 errno多线程安全

一、errno的由来     在C编程中,errno是个不可缺少的变量,特别是在网络编程中。如果你没有用过errno,那只能说明你的程序不够健壮。当然,如果你是WIN32平台的GetLastError(),效果也是一样的。     为什么会使用errno呢?个人认为,这是系统库设计中的一个无奈之举,他更多的是个技巧,而不是架构上的需要。我们观察下函数结构,可以发现,函数的参数返回值只有一个

2014-11-29 22:45:06 755

转载 tmpfs内存临时文件系统

虚拟内核文件系统(VirtualKernel File Systems),是指那些是由内核产生但不存在于硬盘上(存在于内存中)的文件系统。例如1、procproc文件系统为操作系统本身和应用程序之间的通信提供了一个安全的接口。通过它里面的一些文件,可以获取系统状态信息并修改某些系统的配置信息。当我们在内核中添加了新功能或设备驱动时,经常需要得到一些系统状态的信息,一般这样的功能需要

2014-11-29 12:23:36 2104

转载 Linux上的free命令详解

解释一下Linux上free命令的输出。  下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如:FO[2][1] = 24677460FO[3][2] = 10321516                     1          2          3          4 

2014-11-29 12:04:03 960

转载 Linux下/proc目录简介

1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文

2014-11-19 20:11:18 542

转载 Linux交换分区

一.SWAP 说明 1.1 SWAP 概述当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。 这个是SW

2014-11-19 19:53:24 7557

转载 mlock家族:锁定物理内存

锁住内存是为了防止这段内存被操作系统swap掉。并且由于此操作风险高,仅超级用户可以执行。看家族成员:       #include        int mlock(const void *addr, size_t len);       int munlock(const void *addr, size_t len);       int mlocka

2014-11-19 19:33:44 4912

转载 Linux文件系统(二)-为仁由己

儒家倡导“修身齐家治国平天下”,认为“天下之本在国,国之本在家,家之本在身”。在儒家看来,通过修身养性而实现的人内在的身心和谐,是实现人际和谐、群己和谐,最后达至天人和谐的必要前提。只有“成己”才能“成人”,只有“成己”才能“成物”,出发点都是“成己”,就是自我内在的身心和谐。    Linux文件系统的魅力在于“成己” 亦“成人”。如果说整个Linux内核相当于一个“国”,那么,VFS 

2014-10-31 22:02:11 658

转载 Linux文件系统(一)-群居和一

儒家和谐的思想不仅主导着我们的日常生活和社会关系,而且在Unix/Linux文件系统的设计中充分体现。先秦儒家以西周末年太史史伯提出的“和实生物,同则不继。”《国语·郑语》中,则对和谐思想做了进一步的完善和发展,把“和”作为处理人的身心关系、人际关系、群己关系、人与自然关系的根本法则,所谓“和也者,天下之达道也”。“和”既是人伦关系的价值取向,又是万事万物生成发展的机制。 儒家所说的和谐,

2014-10-31 21:58:34 461

转载 Linux中_ALIGN宏背后的原理

原文出处:http://www.linuxdiyf.com/viewarticle.php?id=43461

2014-10-29 21:36:37 1135

转载 kmemcheck的动态检测工具

Linux内核内存检测工具Kmemcheck详细说明Linux内核2.6.31版本发布于2009年9月9日(真是个吉利的日子),其中新加入了两个内核内存管理方面的新工具Kmemcheck和Kmemleak。Kmemcheck工作于内核态,用于检测未初始化等内存非法读写访问并发出警告(类似的编程辅助工具Valgrind也可用于内存检测,但其工作于用户态,对内核态进程无能)。但是由于K

2014-10-12 10:23:45 1505

转载 分配连续物理内存的原因

在分配内存时,系统会尽量给我们分配连续的物理内存,这样有什么好处呢?我知道的有如下2条:1、DMA不使用页表机制,因此必须分配连续的物理内存。2、使用连续物理内存可以提高系统整体性能。上面第1条很容易理解,我主要说明下第2条:    在分页机制打开的情况下,系统访问内存的典型流程为:  1、根据提供的线性地址访问系统TLB,看是否能够命中(hit)。2、若访

2014-05-29 20:29:18 3583

转载 Linux 的 NUMA 技术

登录 (或注册)中文IBM技术主题软件下载社区技术讲座搜索 developerWorks打印本页面用电子邮件发送本页面新浪微博人人网腾讯微博搜狐微博网易微博DiggFacebookTwitterDeliciousLinked In

2014-05-27 23:29:50 977

转载 Linux内核学习笔记:内核同步

linux内核中运行的程序,时刻都要防止并发引起的竞态。这将会导致数据结构被破话,严重的时候会引起内核崩溃。所以内核同步技术对内核开发的驱动程序来说非常重要。不懂内核同步技术的人,是写不出安全健壮的内核驱动程序来的。在学习内核同步技术之前需要掌握一下几个概念。        1 并行,并发与竞态:在SMP运行的linux内核是真正的并行运行程序,多个CPU可以同时访问同一数据结构,而在单处理器

2014-05-21 23:11:57 599

转载 每CPU变量

多核情况下,CPU是同时并发运行的,但是多它们共同使用其他的硬件资源的,因此我们需要解决多个CPU之间的同步问题。每CPU变量(per-cpu-variable)是内核中一种重要的同步机制。顾名思义,每CPU变量就是为每个CPU构造一个变量的副本,这样多个CPU相互操作各自的副本,互不干涉。比如我们标识当前进程的变量current_task就被声明为每CPU变量。

2014-05-14 20:11:22 1816

转载 C语言中的typeof关键字

typeof关键字是C语言中的一种新扩展,返回变量的类型。从本质上讲,它更像是使用typedef定义一个类型名称。typeof的参数可以是两种形式:表达式或类型。下面是使用表达式的的例子:typeof(x[0](1))这里假设x是一个函数指针数组,这样就可以得到这个函数返回值的类型了。如果将typeof用于表达式,则该表达式不会执行。只会得到该表达式的类型。以下示例声明了i

2014-03-24 20:00:08 14776

原创 tcp/ip协议学习笔记(8)TCP传输控制协议

尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。T C P通过下列方式来提供可靠性:1)应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。由TCP传递给IP的信息单位称为报文段

2014-03-08 21:44:43 2384

原创 tcp/ip协议学习笔记(7)UDP用户数据报协议

UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。RFC768是UDP的正式规范1、UDP报文封装UDP首部报文格式如下0 7 8 15 16 23 24

2014-03-02 14:51:10 2177

原创 tcp/ip协议学习笔记(6)广播与组播

广播和多播仅应用于U D P,它们对需将报文同时传往多个接收者的应用来说十分重要。TCP是一个面向连接的协议,它意味着分别运行于两主机(由IP地址确定)内的两进程(由端口号确定)间存在一条连接。1、基本概念单播(unicast):每个以太网帧包含源主机和目的主机的以太网地址(48bit)。通常每个以太网帧仅发往单个目的主机,目的地址指明单个接收接口,因而称为单播。在这种方式下,任意两个主机

2014-02-09 13:27:52 2502

原创 每天五分钟带你精通tcp/ip网络(5)ICMP协议

ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP 的正式规范参见RFC 792ICMP报文是在IP数据报内

2014-01-18 11:43:03 2480

原创 每天五分钟带你精通tcp/ip网络(4)ARP&RARP协议

1、地址解析协议ARP(Address Resolution Protocol) 在ARP背后有一个基本概念,那就是网络接口有一个硬件地址(一个48bit的值,标识不同的以太网或令牌环网络接口)。在硬件层次上进行的数据帧交换必须有正确的接口地址。但是,TCP/IP有自己的地址: 32 bit的IP地址。知道主机的IP地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目

2014-01-14 00:24:00 1088

原创 每天五分钟带你精通tcp/ip网络(3)Internet Protocol(IP)协议

IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP的标准规范在RFC791中有明确的定义1、IP报文格式 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8

2014-01-08 22:04:05 2543

原创 每天五分钟带你精通tcp/ip网络(2)链路层

1、链路层的主要作用1)为IP模块发送和接收IP数据报;2)为ARP模块发送ARP请求和接收ARP应答3)为RARP发送RARP请求和接收RARP应答2、Ethernet II和IEEE 802.3封装Ethernet II帧是最常见的一种以太网帧格式,也是今天以太网的事实标准,由DEC,Intel和Xerox在1982年公布标准,Ethernet II可以支持TCP/IP,

2014-01-06 21:55:38 889

原创 每天五分钟带你精通tcp/ip网络(1)概述

TCP/IP协议簇,是一组不同层次上的多个协议的组合1、TCP/IP协议簇的分层结构TCP/IP通常被认为是一个四层协议系统,每一层负责不同的功能:1)链路层,有时候也称作数据链路层或是网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡2)网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组选路。网络层协议包括IP、IGMP、ICMP3)传输

2014-01-05 21:14:07 1288

转载 memcached 源码阅读笔记

原文出处: daoluan (@郑思愿daoluan)阅读 memcached 最好有 libevent 基础, memcached 是基于 libevent 构建起来的. 通由 libevent 提供的事件驱动机制触发 memcached 中的 IO 事件.个人认为, 阅读源码的起初最忌钻牛角尖, 如头文件里天花乱坠的结构体到底有什么用. 源文件里稀里哗啦的函数是做什么的

2013-12-24 22:31:49 704

转载 动画演示10个有趣但毫无用处的Linux命令

Linux最强大的一个特征就是它有大量的各种小命令工具,这也可以称做是它最有趣的一个地方了。在这些大量的有用的命令和脚本中,你会发现有少部 分命令工具不那么有用的——如果你不愿意说是完全没用处的话。你要知道,Linux命令终端并不是总来干一些严肃的事情的,这里列举的几个没有实际用处、 但很有趣的命令,它们的有趣并不是因为无用,而是真的有趣,接下来就让我们看看它们是如何搞怪的吧。一、cmat

2013-12-24 22:23:41 1680

转载 Linux shell中的那些小把戏

我日常使用Linux shell(Bash),但是我经常忘记一些有用的命令或者shell技巧。是的,我能记住一些命令,但是肯定不会只在特定的任务上使用一次,所以我就开始在我的Dropbox账号里用文本文件写下这些Linux shell的小技巧,现在我决定共享它给你。这个表我以后还会更新。记住,这里的一些贴士需要在你的Linux发行版上安装额外的软件。在bash中检查远程端口是否打开:

2013-12-22 18:58:20 642

转载 Linux kernel版本开发过程

来源:百度质量部前言Linux基金会在4月3日公布了Linux开发年报,向我们展示了linux kernel作为世上最大开源合作项目之一的魅力。自2005年以来,共有800家公司7800名开发人员参与Linux kernel开发,最近一年也有200家公司共1000名开发人员参与。目前在Linus Torvalds的监督之下,Linux核心约2到3个月发布一个新的稳定版本,每次更

2013-10-27 18:12:23 2552

转载 如何使用工具进行C/C++的内存泄漏检测

本文转自http://www.oschina.net/translate/valgrind-memcheck系统编程中一个重要的方面就是有效地处理与内存相关的问题。你的工作越接近系统,你就需要面对越多的内存问题。有时这些问题非常琐碎,而更多时候它会演变成一个调试内存问题的恶梦。所以,在实践中会用到很多工具来调试内存问题。在本文中,我们将讨论最流行的开源内存管理框架 VALGRIND。摘

2013-10-16 19:53:11 637

转载 Fedora的启动方式

在之前的linux版本中,如果想要启动操作系统后直接进入文本模式,那就要修改/etc/inittab这个文件,把其中的5改成3即可。可是,linux2.6(貌似是)内核之后,这个文件就改了,它不再控制着系统的默认启动模式了。如果在fedora18下,你用下列命令查看/etc/inittab:sudo vim /etc/inittab这个文件中的文字提示如下:

2013-09-19 13:19:11 832

空空如也

空空如也

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

TA关注的人

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