Device and Network
Hand out: 2020-06-01
Deadline: 2020-06-08 23:59 (GMT+8) No Extension!
TA in charge: Feng erhu (fengerhu1 \at sjtu.edu.cn )
- What are the main abstractions in Linux device driver model? Please navigate the sysfs filesystem and find out their relationships.
- ARM Generic Interrupt Controller (GIC) indicates an interrupt's completion using two phases: (i) priority dropping and (ii) interrupt deactivation? How does it relate to the interrupt handling mechanism in Linux, i.e., top and bottom halves?
- In the scenario of data transmission, what will happen if the receiver cannot catch up with the sending speed of the transmitter? How to handle this? (Hint: think about the choice and consequence between polling and interrupts)
- Describe the dataflow of how an application receives a network packet from the network card (NIC). In particular, how many context switches are needed in Linux? What about ChCore?
- How does Linux skb achieve zero copy in kernel space? When does skb copy have to occur? Please consider shallow copy (skb_clone) and deep copy (skb_copy).
- What techniques does Intel DPDK leverage to improve network performance? If you are a network designer hired by the ChCore team, what would you like to choose to optimize ChCore's microserver-based network server? You may also learn from "Snap: a microkernel approach to host networking", Marty et al., SOSP’19.