TCP下的Keep Alive
我们常说的TCP的keep alive,就是为了保证连接的有效性,在间隔一定的时间发探测包,根据回复来确认该连接是否有效。通常上层应用会自己提供心跳检测机制,而Linux内核本身也提供了从内核态确保连接有效性的方式。
在sock 函数中可以设置是否需要打开keep alive开关,默认建立socket 是关闭keep alive的。代码如下
opt...
分类:
系统相关 时间:
2015-01-14 21:25:08
阅读次数:
319
Android 电源管理 -- wakelock机制 - 快乐&&平凡 - 博客频道 - CSDN.NETWake Lock是一种锁的机制, 只要有人拿着这个锁,系统就无法进入休眠, 可以被用户态程序和内核获得. 这个锁可以是有超时的 或者 是没有超时的, 超时的锁会在时间过去以后自动解锁。如果没有...
分类:
移动开发 时间:
2015-01-13 14:14:08
阅读次数:
231
本文由该问题引入到内核锁的讨论,归纳例如以下为什么须要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是能够訪问全部内核数据的,因此要对共享数据进行保护,即相互排斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_t *v)将v...
分类:
其他好文 时间:
2015-01-12 22:18:00
阅读次数:
139
话说用户态访问内核内存很简单,将这块内核内存映射到用户地址空间即可。依托一个字符设备,实现其mmap回调函数,在用户进程打开那个设备,mmap之,很容易实现用户进程直接访问内核内存。
但是反过来呢?内核访问用户内存。理论上也很简单,因为所有进程的内核态地址空间都是..
分类:
其他好文 时间:
2015-01-12 07:04:59
阅读次数:
189
话说用户态访问内核内存很简单,将这块内核内存映射到用户地址空间即可。依托一个字符设备,实现其mmap回调函数,在用户进程打开那个设备,mmap之,很容易实现用户进程直接访问内核内存。 但是反过来呢?内核访问用户内存。理论上也很简单,因为所有进程的内核态地址空间都是共享的,所以想访问哪个进程的内存,就切换到那个进程的地址空间,这将丝毫不会影响当前的执行流。事实上也是这么简单,use_mm...
分类:
其他好文 时间:
2015-01-11 12:27:19
阅读次数:
166
需求近日在工作中遇到一个需求,即:内核中需要保存一些用户信息(包括用户名,密码,登录时间等等),这些用户信息和TCP/IP协议栈的一个数据流进行绑定,用于决定针对数据包采取的动作。必要性随着应用越来越多越来越复杂,在路由器或者网关中仅仅依靠数据包协议头的字段已经无法对一个数据包采取一个粒度更细的抉择,更多的时候,我们需要一些应用层的信息。当然,采用内核态的深度包解析技术是可以解决的,将数据包通过P...
分类:
其他好文 时间:
2015-01-11 12:25:18
阅读次数:
144
1、LVS、TUN简介
LVS 是Linux Virtual Server的简称,在实际环境中经常作为B/S结构的网络应用中的负载均衡器来使用,工作在7层网络模型中的,网络层,也就是通常说的IP层,由于数据的处理是在Linux内核态完成的,所以相对反向代理服务器来说,性能一般会高一些;
TUN 是IP Tunneling
,IP隧道的简称,它将调度器收到的IP数据包封装在一个新的IP数据包中...
分类:
其他好文 时间:
2015-01-11 09:42:28
阅读次数:
220
1、LVS、NAT简介
LVS 是Linux Virtual Server的简称,在实际环境中经常作为B/S结构的网络应用中的负载均衡器来使用,工作在7层网络模型中的网络层,也就是通常说的IP层,由于数据的处理是在Linux内核态完成的,比起在第七层工作的负载均衡设备来说,理论上性能要高一些。
NAT 是Network AddressTranslation,网络地址转换的简称,借助于NAT,私...
分类:
其他好文 时间:
2015-01-10 16:44:49
阅读次数:
291
内核态与用户态的理解:2)特权级熟悉Unix/Linux系统的人都知道,fork的工作实际上是以系统调用的方式完成相应功能的,具体的工作是由sys_fork负责实施。其实无论是不是Unix或者Linux,对于任何操作系统来说,创建一个新的进程都是属于核心功能,因为它要做很多底层细致地工作,消耗系统的...
分类:
其他好文 时间:
2015-01-09 13:57:59
阅读次数:
256
一 何为信号量?
简单来说就是控制访问资源的数量,比如系统有两个资源可以被利用,同时有三个线程要访问,只能允许两个线程访问,第三个应当等待资源被释放后再访问。
注意:再GCD中,只有调度的线程在信号量不足的时候才会进入内核态进行线程阻塞...
分类:
其他好文 时间:
2015-01-06 21:39:57
阅读次数:
158