搬家

摘要: 由于种种原因,我不再做网络虚拟化方向,而转作认知无线电方向,和这里的专精不太一致,所以,这个博客将不再更新,我的所有博客都将转至科学网:http://blog.sciencenet.cn/u/icecamel,谢谢各位的支持,谢谢自己的坚持 阅读全文
posted @ 2015-11-07 21:21 desert-camel 阅读(113) 评论(0) 推荐(0) 编辑

近十年one-to-one最短路算法研究整理

摘要: 前言:针对单源最短路算法,目前最经典的思路即标号算法,以Dijkstra算法和Bellman-Ford算法为根本演进了各种优化技术和算法。针对复杂网络,传统的优化思路是在数据结构和双向搜索上做文章,或者针对不必要的循环进行排除。近年来,最短路算法大量应用于需要高及时性的领域,比如GIS领域,也大量应... 阅读全文
posted @ 2015-08-22 09:07 desert-camel 阅读(1549) 评论(0) 推荐(0) 编辑

一种基于openflow的虚拟化层软件flowvisor的API测试

摘要: 注明:本文并不对openflow进行分析,本人也是略略知道这个概念,对flowvisor也只是对其API有所测试,更深的源码并未涉及,只是希望该文能对以后的flowvisor研究者提供些许帮助。一:flowvisor简介 flowvisor是基于openflow的一个中间代理层,其目的在于对物理资... 阅读全文
posted @ 2014-08-05 09:31 desert-camel 阅读(1274) 评论(0) 推荐(0) 编辑

Linux内存管理学习笔记——内存寻址

摘要: 最近开始想稍微深入一点地学习Linux内核,主要参考内容是《深入理解Linux内核》和《深入理解Linux内核架构》以及源码,经验有限,只能分析出有限的内容,看完这遍以后再更深入学习吧。1,内存地址逻辑地址:包含在机器语言中用来指定一个操作数或一条指令的地址。线性地址:一个32位无符号数,用于直接映... 阅读全文
posted @ 2014-07-20 00:33 desert-camel 阅读(1210) 评论(0) 推荐(0) 编辑

插入快速混合排序法分析(算法导论7.4-5解答)

摘要: 众所周知,快速排序法作为当下最优秀的排序法之一,在面对小数组时颇为无力,此时往往采用插入排序法。本文讨论两个问题:1.证明:当分割得到的子数组元素数量小于等于K时进行插入排序法,其时间复杂度为O(nK+nlgn/k)2.对k的取值进行一定的估算。本文做以下假设:1.lgn其实是以2为底的对数2.本文实际上是对《算法导论》7.4-5习题的解答,所以其中的符号均来自《算法导论》,并假设读者对《算法导论》相关章节有必要的了解,本文涉及到《算法导论》中的内容包括: 1.快速排序法2.附录A本题在官方给出的答案中并没有相应的解答,作者能力有限,尽力提出自己的见解,希望能为同样奋斗在算法中的通道做出些许帮 阅读全文
posted @ 2014-02-19 16:06 desert-camel 阅读(1110) 评论(0) 推荐(0) 编辑

linux内核中网络文件系统的注册初始化

摘要: 针对内核3.9系统开启时,会使用init/main.c,然后再里面调用kernel_init(),在里面会再调用do_basic_setup(),调用do_initcalls(),调用do_one_initcall(),这个函数会去把注册了所有需要初始化的系统调用一一初始化。而网络模块由于全部都是基于socket在进行,所以,相关网络模块,在do_one_initcall()中会通过core_init()调用sock_init()来把网络文件系统登记在整个linux的文件系统中。其中core_init()非常重要,负责在内核初始化阶段把这些需要初始化的函数集中放在一个section里然后之后一 阅读全文
posted @ 2014-01-29 21:02 desert-camel 阅读(1486) 评论(0) 推荐(0) 编辑

linux内核中socket的创建过程源码分析(详细分析)

摘要: 1三个相关数据结构.关于socket的创建,首先需要分析socket这个结构体,这是整个的核心。104structsocket{105socket_statestate;106107kmemcheck_bitfield_begin(type);108shorttype;109kmemcheck_bitfield_end(type);110111unsignedlongflags;112113structsocket_wq__rcu*wq;114115structfile*file;116structsock*sk;117conststructproto_ops*ops;118}其中,state 阅读全文
posted @ 2014-01-29 20:53 desert-camel 阅读(10295) 评论(0) 推荐(0) 编辑

linux内核中socket的创建过程源码分析(总结性质)

摘要: 在漫长地分析完socket的创建源码后,发现一片浆糊,所以特此总结,我的博客中同时有另外一篇详细的源码分析,内核版本为3.9,建议在阅读本文后若还有兴趣再去看另外一篇博文。绝对不要单独看另外一篇。 一:调用链:二:数据结构一一看一下每个数据结构的意义:1)socket,sock,inet_sock,tcp_sock的关系创建完sk变量后,回到inet_create函数中:这里是根据sk变量得到inet_sock变量的地址;这里注意区分各个不同结构体。a.structsocket:这个是基本的BSDsocket,面向用户空间,应用程序通过系统调用开始创建的socket都是该结构体,它是基于... 阅读全文
posted @ 2014-01-29 20:52 desert-camel 阅读(3349) 评论(2) 推荐(1) 编辑

用c写一个小的聊天室程序

摘要: 1.聊天室程序——客户端 客户端我也用了select进行I/O复用,同时监控是否有来自socket的消息和标准输入,近似可以完成对键盘的中断使用。其中select的监控里,STDOUT和STDIN是已有规定的值了。Socket_setup函数负责进行对socket进行初始化完成connect的过程,然后在主函数里无限循环检查sockfd和STDIN的缓冲区是否有新的消息客户端程序较简单: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 9 #define BUF_SI... 阅读全文
posted @ 2014-01-27 08:08 desert-camel 阅读(815) 评论(0) 推荐(0) 编辑

socket相关的开机初始化分析

摘要: 针对内核3.9系统开启时,会使用init/main.c,然后再里面调用kernel_init(),在里面会再调用do_basic_setup(),调用do_initcalls(),调用do_one_initcall(),这个函数会去把注册了所有需要初始化的系统调用一一初始化。而网络模块由于全部都是基于socket在进行,所以,相关网络模块,在do_one_initcall()中会通过core_init()调用sock_init()来把网络文件系统登记在整个linux的文件系统中。其中core_init()非常重要,负责在内核初始化阶段把这些需要初始化的函数集中放在一个section里然后之后一 阅读全文
posted @ 2014-01-26 16:36 desert-camel 阅读(949) 评论(0) 推荐(0) 编辑