mit6.s081 lab11 networking

2024-03-11 06:32
文章标签 s081 mit6 networking lab11

本文主要是介绍mit6.s081 lab11 networking,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个exercise的工作是完善kernel/e1000.c文件中的e1000_transmit()和e1000_recv()函数,从而使得驱动可以发送和接受packet。
e1000_init()函数配置使得E1000从RAM中读取要发送的packet,以及将接收到的packet写入到RAM中,这就是DMA技术,RMA使得硬件可以直接从RAM中读写packet。
有可能出现在短时间内出现大量待处理的packet的情况,因此需要缓冲区来缓冲那些无法被及时处理的packet,在xv6中使用RAM中的descriptor数组来作为buffer,每个descriptor中包含了一个E1000可以写入接收到的packet的RAM地址,对应rx_desc结构体,rx_desc数组是一个环形队列。e1000_init()函数中分配了mbuf packet buffer用于实现DMA。另外,xv6中还存在另外一个用于发送packet的transmit ring(tx_desc结构体),用于存储E1000即将要发送的packet。
当net.c中的network stack需要发送packet时,会调用e1000_transmit()来发送packet,e1000_transmit()的参数mbuf为需要发送的packet。在e1000_transmit()中需要使用tx_desc来记录这个指向packet data的指针,在mbuf被使用后需要保证该mbuf被释放掉,E1000中通过E1000_TXD_STAT_DD来标识该descriptor是否被使用。
当E1000从ethernet中接受到packet时,通过DMA计数将packet保存在下一个rx ring descriptor中的mbuf中,然后产生中断。所以在e1000_recv中需要扫描rx ring并通过net_rx()将其中的mbuf发送到network stack。发送完毕后需要重新申请mbuf并将其放入到descripto

这篇关于mit6.s081 lab11 networking的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/796949

相关文章

poj 1287 Networking(prim or kruscal最小生成树)

题意给你点与点间距离,求最小生成树。 注意点是,两点之间可能有不同的路,输入的时候选择最小的,和之前有道最短路WA的题目类似。 prim代码: #include<stdio.h>const int MaxN = 51;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int P;int prim(){bool vis[MaxN];

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 10数据中心中的BGP

本章解答以下问题: ASN,团体(community),属性(attribute),最佳路径这些BGP术语是什么疑似?在数据中心中应该使用eBGP还是iBGP?在数据中心使用BGP时,应采用什么ASN编号方案?在数据中心使用BGP时,应如何修改BGP的计时器? BGP 基本概念 BGP协议概述 BGP 是一种路径矢量路由协议。“矢量”是一个数组或列表。因此,路径矢量路由协议是一种构建并分发

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 09部署OSPF

本章的目的是帮助网络工程师确定网络的理想 OSPF 配置。本章将回答以下问题 应何时在数据中使用OSPF ?配置 OSPF 的关键设计原则是什么?OSPFv2 和 OSPFv3 之间有什么区别,应如何使用?如何在路由协议栈中配置 OSPF ?如何在服务器上配置 OSPF,例如为容器提供路由环境?如何使用 OSPF 来协助升级路由器软件? OSPF是最流行的IGP 目前针对IPv4协议使用

Illustrated Guide to Monitoring and Tuning the Linux Networking Stack: Receiving Data

太长不读(TL; DR) 这篇文章用一系列图表扩展了以前的博客文章Monitoring and Tuning the Linux Networking Stack: Receiving Data,旨在帮助读者形成一个更清晰的视野来了解Linux网络协议栈是如何工作的 在监控或调优 Linux 网络协议栈试没有捷径可走。如果你希望调整或优化每个组件及其相互作用,你就必须努力充分了解它们。也就是说

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 08网络自动化

云原生数据中心和老一代数据中心不同之处在于其核心概念是聚焦于高效运营。网络自动化就是达到此目标的关键因素。 要达到此目的,本章要解决诸如下述的一些问题: 什么是网络自动化以及为什么我们在乎它?为了学习网络自动化,我需要学习编程吗?网络自动化为什么很难?如何逐步探索自动化的好处?哪些网络自动化工具适合我?如何确保自动化程序能正常工作? 什么是网络自动化? 在网络管理语境下,自动化指的是允

MIT6.S081最详解析与归纳——lab10:mmap

Lab10主题:mmap (一)前置知识:mmap(1)VMA(2)mmap (二)Lab:mmap(1)前置工作(2)实现sys_mmap()(3)实现pagefault(4)实现sys_munmap(5)脏页位设置(六)其它函数的小修改 (三)感言 (一)前置知识:mmap (1)VMA VMA(Virtual Memory Area) 代表虚拟内存区域,它描述了一个进程

POJ 1287 Networking

Kruskal建图更加方便,不管三七二十一全部扔进去排序,然后并查集会自动帮助我们去重的。建图之后裸最小生成树 /************************************************ Author: fisty* Created Time: 2015/2/28 13:03:03* File Name : B.cpp*******************

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 06容器网络

本章将回答以下问题 Linux上可用的容器网络组件有哪此?各种选择的限制和性能特征是什么? 命令空间 命名空间是一个 Linux 内核虚拟化组件。该组件类似 Linux 内核提供的网络和服务器虚拟化的组件。命名空间对内核管理的特定的资源进行虚拟化,允许一个虚拟资源有多个隔离实例。一个进程与该资源的一个虚拟实例相关联。多个进程可以属于该资源的一个共有的虚拟实例。从进程的角度看,进程似乎完全

6.S081的Lab学习——Lab8: locks

文章目录 前言一、Memory allocator(moderate)提示:解析 二、Buffer cache(hard)解析: 三、Barrier (moderate)解析: 总结 前言 一个本硕双非的小菜鸡,备战24年秋招。打算尝试6.S081,将它的Lab逐一实现,并记录期间心酸历程。 代码下载 官方网站:6.S081官方网站 安装方式: 通过 APT 安装 (De

《计算机英语》 Unit 5 Networking 网络

Section A Networking 网络 The need to share information and resources among different computers has led to linked computer systems, called networks, in which computers are connected so that data c