网络算法学:第六章 传输控制.ppt

网络算法学:第六章 传输控制

1)应用同步地请求下一组事件,没有事件则 休眠; 2)当系统调用返回时,应用检查每个事件通 知,调用相应的读或写例程; 3)回到1) 每个线程关联一组感兴趣的描述符。 每个描述符维护一个对该描述符感兴趣的线程列表(称反向映射列表)。 每个线程使用一个比特串记录正在队列中等待处理的事件,每个描述符对应一位。 当I/O事件发生时: I/O模块使用反向映射表确定感兴趣的线程 将一个通知事件加入线程的待处理事件队列 当应用请求下一批事件时,返回待处理事件。 使用用户级协议栈,收发包过程还需要内核吗? 应用应告诉适配器要发送或接收的数据放在什么地方,这在Unix中是通过系统调用实现的。 因此,即使在用户空间实现了协议栈,发送和接收每一个数据包都必须进行系统调用。 确实是这样吗? 内核并不参与每一次内存访问: 硬件确定X的虚拟页,通过TLB转换成一个物理页; 若物理页已映射到应用的虚拟内存,应用可以直接访问。 内核仅在以下两种场合用到: 为应用建立虚拟内存; 当应用违反内核建立的页面访问时,硬件产生一个异常。 采用虚拟内存的方法让应用与适配器共享内存: 将存储器映射的适配器内存划分成若干个物理页。 为每个应用分配并映射一定数量的物理页。 应用可以直接读写映射给自己的物理页(通过TLB进行地址映射)。 如果应用试图读写映射给其它应用的物理页,虚拟存储硬件将产

文档评论(0)

1亿VIP精品文档

相关文档