# 2019q1 Homework7 (ringbuffer) contributed by <`Shengyuu`> ## 作業要求 * 完成 [第 11 週測驗題 (上)](https://hackmd.io/s/HypUB7HjV) 和所有延伸題目 * 在 Linux 核心原始程式碼指出類似的 ring buffer 實作,設計 Linux 核心模組的實驗,需要探討對應的原理 * 需要涵蓋 kernel API 同步機制的運用 * 執行時期的分析 (提示: 可善用 eBPF) ## 預備知識 * ring buffer * [Linux ftrace 1.1、ring buffer](https://blog.csdn.net/pwl999/article/details/80349025) * mmap 將檔案映射到一段虛擬記憶體位址,通過這段虛擬記憶體位址實現對文件的讀取和修改 * [Linux Programmer's Manual](http://man7.org/linux/man-pages//man2/munmap.2.html) * [記憶體映射函數 mmap 的使用方法](http://welkinchen.pixnet.net/blog/post/41312211-%E8%A8%98%E6%86%B6%E9%AB%94%E6%98%A0%E5%B0%84%E5%87%BD%E6%95%B8-mmap-%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95) * ring buffer using mmap 對於一般的 ring buffer ,若讀取或寫入的單位資料量都大時,會需要一直處理邊界問題,若用 mmap 實現兩個頭尾相連的 ring buffer 則可以省去處理邊界問題的時間 * [用mmap实现首尾地址连续的ring buffer](https://zhuanlan.zhihu.com/p/58933849) ###### tags: `Linux 核心設計 2019`