---
# System prepended metadata

title: 2019q1 Homework7 (ringbuffer)
tags: [Linux 核心設計 2019]

---

# 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`
    