目的: 檢驗學員對 mmap 系統呼叫及對應記憶體管理的認知
1
考慮到 cirbuf 這個 circular buffer 實作,嘗試透過 mmap 系統來化簡緩衝區邊界處理的議題。對照 cirbuf.h 和 test-cirbuf.c 以得知具體用法,請補完以下程式碼:
作答區
MM1 = ?
(a)
if (cb->size > cb->tail) cb->tail = 0;(b)
if (cb->size < cb->tail) cb->tail = 0;(c)
if (cb->size < cb->tail) cb->tail -= cb->size;(d)
if (cb->size < cb->tail) cb->tail %= cb->size;(e)
if (cb->size < cb->tail) cb->tail++;(f)
if (cb->size < cb->tail) cb->size = 0;MM2 = ?
(a)
return cb->data;(b)
returb cb->head;(c)
returb cb->data + cb->head;(d)
return NULL;延伸問題: