随笔分类 -  Linux网络编程

摘要:参考 http://www.yesky.com/20010813/192117.shtml 结构化程序设计思想认为:程序 = 数据结构 + 算法。数据结构体现了整个系统的构架,所以数据结构通常都是代码分析的很好的着手点,对Linux内核分析尤其如此。 比如,把进程控制块结构分析清楚了,就对进程有了基 阅读全文
posted @ 2017-01-08 11:49 blcblc 阅读(5613) 评论(0) 推荐(0)
摘要:参考 http://www.startos.com/linux/tips/2011012822078.html 1)Linux和所有的UNIX操作系统都允许通过共享内存在应用程序之间共享存储空间. 2)有两类基本的API函数用于在进程间共享内存:System v和POSIX. (当然,还有mmap, 阅读全文
posted @ 2017-01-08 10:02 blcblc 阅读(9691) 评论(1) 推荐(1)
摘要:今天看到有文章说epoll里面用了mmap,还说进程不需要从内核读数据,只需要从用户态buffer读数据就可以。觉得很神奇,就查了一下,发现完全不是描述的那样。实际上,只是把要传递的fd通过mmap来传递的,而需要读fd里面的数据的话,还是要程序通过read fd来读的。如下: 这点实际上涉及到ep 阅读全文
posted @ 2017-01-07 22:23 blcblc 阅读(6315) 评论(3) 推荐(2)
摘要:1. 异步化, 以epoll为代表。libevent也是基于epoll而实现的。 2. 消息驱动, 是跟异步化相结合,reactor模式。另有Scala的Actor模式,是完全的消息交互。 3. 一些TCP参数, 比如禁掉Nagle选项,不要打开CORK算法,使得发包和ack不要延迟太多。 4. S 阅读全文
posted @ 2017-01-07 21:31 blcblc 阅读(779) 评论(0) 推荐(0)
摘要:gdb thread apply all bt 如果你发现有那么几个栈停在 pthread_wait 或者类似调用上,大致就可以得出结论:就是它们几个儿女情长,耽误了整个进程。 注意gdb的版本要高于7.0,之前使用过gdb6.3调试多线程是不行的。 从上图可以看出两个线程都阻塞在wait上,而且还 阅读全文
posted @ 2017-01-06 16:47 blcblc 阅读(7464) 评论(0) 推荐(2)
摘要:Memory Barrier http://www.wowotech.net/kernel_synchronization/memory-barrier.html 这里面讲了Memory Barrier 对于一个c程序员,我们的编写的代码能所见即所得吗?我们看到的c程序的逻辑是否就是最后CPU运行的 阅读全文
posted @ 2017-01-06 12:47 blcblc 阅读(4055) 评论(0) 推荐(0)
摘要:spinlock在上一篇文章有提到:http://www.cnblogs.com/charlesblc/p/6254437.html 通过锁数据总线来实现。 而看了这篇文章说明:mutex内部也用到了spinlock http://blog.chinaunix.net/uid-21918657-id 阅读全文
posted @ 2017-01-06 12:35 blcblc 阅读(3113) 评论(0) 推荐(0)
摘要:bottom-half http://bbs.csdn.net/topics/60226240 在中断,异常和系统调用里看Linux中断服务一般都是在关闭中断的情况下执行的,以避免嵌套而是控制复杂化Linux将一些中断处理分成两部分,第一部分是在关中断的条件下执行的,具有"原子"性,而且是中断发生以 阅读全文
posted @ 2017-01-06 12:09 blcblc 阅读(2182) 评论(0) 推荐(0)
摘要:eventloop的基本概念可以参考:http://www.ruanyifeng.com/blog/2013/10/event_loop.html Eventloop指的是独立于主线程的一条线程,专门用来处理IO事件,而如果Eventloop一个不够用,可以开多个。 Eventloop底层也要基于异 阅读全文
posted @ 2017-01-04 12:14 blcblc 阅读(4461) 评论(1) 推荐(0)
摘要:今天先是看到多线程级别的内容,然后又看到协程的内容。 基本的领会是,协程是对异步回调方式的一种变换,同样是在一个线程内,协程通过主动放弃时间片交由其他协程执行来协作,故名协程。 而协程很早就有了,那时候因为协程不够公平,很可能不会主要交出执行权;现在卷土重来。 跟异步一样,为了减少线程间切换,而尽量 阅读全文
posted @ 2017-01-02 15:23 blcblc 阅读(1347) 评论(0) 推荐(0)
摘要:另,线程的资源占用可见:http://www.cnblogs.com/charlesblc/p/6242111.html 进程 & 线程的很多知识可以看这里:http://www.cnblogs.com/charlesblc/p/6135666.html 线程一直是分系统级线程和用户级线程,也就是所 阅读全文
posted @ 2017-01-02 15:22 blcblc 阅读(4534) 评论(0) 推荐(3)
摘要:epoll是Linux高效网络的基础,比如event poll(例如nodejs),是使用libev,而libev的底层就是epoll(只不过不同的平台可能用epoll,可能用kqueue)。 epoll能够高效支持百万级别的句柄监听。 epoll高效,是因为内部用了一个红黑树记录添加的socket 阅读全文
posted @ 2017-01-02 14:59 blcblc 阅读(14260) 评论(2) 推荐(5)
摘要:另,进程 & 线程的很多知识可以看这里:http://www.cnblogs.com/charlesblc/p/6135666.html 今天查了一下进程和线程的资源占用。 比如问:栈和堆的大小? 答:栈是线程的概念,堆是进程的概念。 线程栈的大小,通过 ulimit -s 来设定。Linux默认是 阅读全文
posted @ 2017-01-02 10:43 blcblc 阅读(2514) 评论(0) 推荐(0)
摘要:https://zhuanlan.zhihu.com/p/20204159 这个系列真的非常好,好好领会学习一下 学习笔记在这里:http://www.cnblogs.com/charlesblc/p/6341265.html 阅读全文
posted @ 2017-01-02 01:02 blcblc 阅读(349) 评论(0) 推荐(0)
摘要:这篇文章还是讲的不错的: http://www.cocoachina.com/game/20150924/13545.html 《开发者详解:端游及手游服务端的常用架构》 整理自知乎,文/韦易笑 开始的部分讲的比较简略。讲到后面大型MMO以及战网游戏,就比较入流了。 开宗明义,手游页游和端游的服务端 阅读全文
posted @ 2017-01-01 11:24 blcblc 阅读(10236) 评论(0) 推荐(0)
摘要:看到有道题目要问:tcp头多少字节?哪些字段?(必问) 这个。。。 看了这篇文章做参考:http://blog.163.com/tianshuai11@126/blog/static/618945432011101110497885/ 开宗明义 IP报文头的长度一般在20到60个字节之间,而一个IP 阅读全文
posted @ 2016-12-30 00:53 blcblc 阅读(928) 评论(0) 推荐(0)
摘要:参考 http://blog.csdn.net/pi9nc/article/details/17336663 集成libevent,google protobuf的RPC框架 RPC(Remote Procedure Call),中文翻译是远程过程调用,其实从原理来说这并不是一个新的概念.我的理解是 阅读全文
posted @ 2016-12-23 12:37 blcblc 阅读(2530) 评论(0) 推荐(0)
摘要:参考这个系列吧 http://www.cnblogs.com/wunaozai/tag/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/default.html?page=2 因为事件紧迫。就不一一写代码了。还是先看逻辑和代码吧。 写的还是太浅显了。 只有这一篇epoll的 阅读全文
posted @ 2016-12-22 14:20 blcblc 阅读(181) 评论(0) 推荐(0)
摘要:这两个函数应该都是和线程局部变量有关的。有时间学习一下。 可以参考如下文章: 《Linux线程私有数据pthread_key_t》 《posix多线程有感--线程高级编程(pthread_key_t)》(这个系列还写的蛮好的) 《posix多线程有感--线程高级编程(线程属性函数总结)》 《pthr 阅读全文
posted @ 2016-12-20 21:23 blcblc 阅读(229) 评论(0) 推荐(0)
摘要:select/poll被监视的文件描述符数目非常大时要O(n)效率很低;epoll与旧的 select 和 poll 系统调用完成操作所需 O(n) 不同, epoll能在O(1)时间内完成操作,所以性能相当高。 epoll不用每次把注册的fd在用户态和内核态反复拷贝。 epoll不同与之前的轮询方 阅读全文
posted @ 2016-12-20 15:17 blcblc 阅读(3723) 评论(0) 推荐(1)