a high-level language 2019-07-03 SSチーム論文読み会 HPCS Lab. SSチーム M1 高橋 宗史 Cody Cutler, M. Frans Kaashoek, and Robert T. Morris, MIT CSAIL 出典: https://blog.golang.org/gopher
Operating System Design and Implementation (OSDI '18) • 開催日: 2018年10月8日-10日 • 場所: Carlsbad, CA, USA 出典: https://www.booking.com/hotel/us/carlsbad-inn-beach-resort.ja.html
a high-level language 2019-07-17 SSチーム論文読み会 HPCS Lab. SSチーム M1 高橋 宗史 Cody Cutler, M. Frans Kaashoek, and Robert T. Morris, MIT CSAIL 出典: https://blog.golang.org/gopher (第2回)
という3つのパラメータを管理 ◦ g: 前回のGCで mark されたデータ (= また使用中の可能性が残っているデータ ) ◦ c: 完了済みのシステムコールで予約されたデータの合計 ◦ n: 実行中で未完了のシステムコールで予約されたデータの合計 • L をこれらの合計として次のようにおく。 ◦ L = g + c + n 使用中の領域 必要なヒープメモリの最 大値 s カーネルヒープメモリ M GC後の正確な値??
L + s < M をチェック ◦ 使用済みL + 新規メモリs < 合計M • L + s < M の場合 (メモリが足りる) ◦ n += s して、新しいシステムコール用 にメモリを確保する • otherwise (メモリが足りない) ◦ killer を起こして、悪い市民を殺し終 わるまで待機する // カーネルヒープメモリの予約 reserve(s): g := 最終 GC 時の有効バイト数 c := 使用済みバイト数 n := 予約済みバイト数 L := g + c + n M = ヒープメモリのバイト数 if L + s < M: 予約済みバイト数 += s else: killer スレッドを起こす killer が悪い市民を殺すまで待機する
使用済みバイト数 += a else: 使用済みバイト数 += s 予約済みバイト数 -= s ・c = 使用済みバイト数 ・n = 予約済みバイト数 6.2 How Biscuit reserves (cont’d) • システムコールの終了時 release(s) • システムコールが実際に割り当てられ たメモリの合計 a の値を計算 • a < s の場合 ◦ c += a • a ≧ s の場合 ◦ c += s • 最後に ◦ n -= s