
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
在Linux的用户空间,我们经常会调用系统调用,下面我们跟踪一下read系统调用,使用的Linux内核版本为Linux2.6.37。不同的Linux版本其中的实现略有不同。在一些应用中我们可以看到下面的一些定义:#define real_read(fd, buf, count ) (syscall(SYS_read, (fd), (buf), (count)))
今天随便看了一下代码,就把控制进程的数据结构拿出来了,2.6的可以0.11的复杂的多的多。struct task_struct {volatile long state;/* -1 unrunnable, 0 runnable, >0 stopped */struct thread_info *thread_info;atomic_t usage;unsigned long fl
网卡是是网络中最基本的硬件之一。在内核中,每个网络设备都一个一个net_device 结构体实例,在进行初始化完成之后,会将该结构注册到内核中。然能内核知道该结构的存在。这会创建一个sysfs项,这,关联到该设备的对应目录中。该目录为[root@localhost ~]# ls -l /sys/class/net总计 0drwxr-xr-x 3 root root 0 10-08
1.ISO 参考模型因特网协议栈中的层人们已经进行了一些讨论关于如何将TCP/IP参考模型映射到到OSI模型。由于TCP/IP和OSI模型组不能精确地匹配,还没有一个完全正确的答案。另外,OSI模型下层还不具备能够真正占据真正层的位置的能力;在传输层和网络层之间还需要另外一个层(网络互连层)。特定网络类型专用的一些协议应该运行在网络层上,但是却运行在基本的硬件帧交换上。类似协议的例子有
计算机处于网络中,是不知道什么时候会发过来数据,是不可预测的。因此,目前所有的现代设备驱动程序都是使用了中断来通知内核的有 链路层的以太网帧到达。驱动程序有特定的相应的程序,因此当有数据帧到达的时候,内核就会调用该程序。将数据从网卡上传输到物理内存中。或者通知内核延迟处理。下面一个图就是数据穿过内核的路径完整的路径 (1)net_interrupt是设备驱动程序设置的终端处理
在内核分析网络分组时,底层协议的数据将传输到跟高的层。而发送数据的时候顺序是相反的。每一层都是通过加(首部+净荷)传向跟底层,直至最终发送。这些操作决定了网络的的性能。就如下图所示 linux因此设计了一个结构体 如下代码/***struct sk_buff - socket buffer*@next: Next buffer in list*@
通过网卡,让我们能达到通信,对unix是相当的复杂,组要是socket每一层都是用了不同的通信协议,需要好多设置好多的选项。因此在/dev目录下,并没有网卡对应的文件。 socket不仅可以用于各种传输协议的IP的连接。也可以用于内核支持的所有其他地址和协议类型。套接字是使用socket库函数生成的。然后bind函数等。socket主要用于协议的选择,通信类型,地址族。bind
今天只是看一下IP协议的结构体和TCP的结构体所控制的字段。首先看一下IP的字段,就是传说中ip协议中的包头字段。 struct iphdr {#if defined(__LITTLE_ENDIAN_BITFIELD)__u8ihl:4,version:4;#elif defined (__BIG_ENDIAN_BITFIELD)__u8version:4,
本技术相对来说比较难理解,这种技术,是在stl源码中使用到的,给我感觉的作用就是对类的解耦。因为,工作中用到这种技术相对来说,比较少,所以,我目前还不是非常理解,下面是我敲书上的例子。首先上一段代码#ifndef BEARCORNER_H#define BEARCORNER_H#includeusing std::ostream;class Milk{public:
抽象工厂模式,就是把工厂类也给他多态了。 根据需求不同的工厂生产不品种的实体。比如在游戏中。 纯在vip用户对应的vip的宠物对应的vip的怪物,或者vip任务。因此,vip工厂就生产vip这些东西了。但是普通的也要生产。因此 就抽象出来两个类了。 下面我是根据游戏中,不同的角色来定义的一些实体类。直接上图,大家就看明白了 也就是特殊对象特殊对待。因此工厂就要特殊







