Linux
发布时间:2013-03-26 23:57:25
BSD socketsocket是用户API与网络协议栈之间的一个中间接口层,用户通过调用socket api将报文传给协议栈,或者从协议栈读取报文。对于用户来说,socket就是一个打开的文件,linux内核中为socket定义了sockfs文件类型:static struct file_system_type sock_fs_type = {.name = "sockfs",.get_sb = sockfs_get_sb.........【阅读全文】
发布时间:2013-03-26 21:53:55
Tcp的处理中使用了三个队列,receive_queue,backlog_queue,pre_queue,在数据包到达tcp协议栈时,持有sk自旋锁,然后检查当前使用有进程上下文操作sk的逻辑,通过sock_owned_by_user判断,如果sk_lock.owned被赋值说明进程持有sk,如果为0则可以在当前软中断上下文中,继续数据报文的处理。&.........【阅读全文】
发布时间:2012-12-26 23:26:19
影响内存访问速度的因素主要有:1.内存带宽:每秒读写内存的数据量,由硬件配置决定。2.CACHE高速缓冲:CPU与内存之间的缓冲器,当命中率比较高时能大大提供内存平均访问速度。3.TLB转换旁视缓冲:系统虚拟地址向物理地址转换的高速查表机制,转换速度比普通转换机制要快。我们能够优化的只有第2点和第3点。由于CACHE的小容量与SMP的同步竞争,如何最大限度的利用高速缓冲就是我们的明确优化突破口(以常用的数据结构体为例):1.压缩结构体大小:针对CACHE的小容量。2.对结构体进行对齐:针对内存地址读写特性与SMP上CACHE的同步竞争。3.申请地址连续的内存空间:针对TLB的小容量和CACHE......【阅读全文】