メモリ管理-home-tauralaboratory.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
メモリ管理-home-tauralaboratory

ページテーブルの構造 ?ほとんど空」の論理アドレス空間を小さく表現する 多段のページテーブル 多段のページテーブル a1 a2 10 bit 10 bit o 12 bit a1 a2 64bitアドレス? Madhusudhan Tallurl, Mark D. Hill, Yousef A. Khalidi. A New Page Table for 64-bit Address Spaces. SOSP 1995 メモリアクセス時のCPUの動作: まとめ (read) read(a) { p,attr = lookup_TLB(a); if (!found) p,attr = lookup_page_table(a); if (!found) raise page fault; if (!attr.readable) raise protection fault; if (!attr.user CPU_mode == user) raise protection fault; read p; /* in cache or memory */ set reference bit for a; } Writeの場合 write(a, v) { p,attr = lookup_TLB(a); if (!found) p,attr = lookup_page_table(a); if (!found) raise page fault; if (!attr.writable) raise protection fault; if (!attr.user CPU_mode == user) raise protection fault; write v to p; /* in cache or memory */ set reference/dirty bit for a; } 余談:セグメンテーション ページング以前の仮想記憶 セグメント: (ページよりも大きな)連続したアドレスの範囲 必要に応じて伸ばせる 各論理アドレス空間で割り当て中のメモリは,少数(数個)のセグメントとする 必要に応じてセグメントを丸ごと移動,ディスクに退避 テキスト セグメント データ セグメント スタック セグメント そういえばセグメンテーションフォルトって何だっけ セグメントを越えたアクセス 今日的には,protection fault, access violation * メモリ管理(1) メモリ?思い出そう プログラムの実行のために,ありとあらゆるものがメモリに格納されなくてはならなかったことを グローバル変数,配列 局所変数?配列(スタック) 実行中に確保される領域(malloc, new) プログラムのコード メモリの「管理」とは 「誰が」,メモリの「どの部分を」,「今」,使ってよいかを記憶しておき, 「メモリ割り当て要求」にこたえることができるようにすること 5000バイトくださいな えっと,じゃ,12300番地から17300番地までがあいてるのでそこをどうぞ 帳簿 メモリ使用状況 ???? ??? あらゆるメモリ管理に共通の概念 割り当て(allocation)と解放(deallocation) 1000バイトくださいな 30000番地をどうぞ 30000番地返します オッケー 500バイトくださいな また30000番地をどうぞ 割り当て 解放 割り当て OSのメモリ管理API Unix : brk, sbrk, mmap, etc. Win32 : VirtualAlloc, VirtualFree, MapViewOfFile, etc. 詳しくは後述する 普段良く使っているメモリ割り当てプリミティブ?APIの実例 C グローバル変数, スタック, malloc/free, strdup, etc. C++ グローバル変数, スタック, new/delete, STLの諸操作, … Java, C# new, Stringの連結などの諸操作 Garbage Collection Python リスト, 辞書, オブジェクト生成, 文字列連結などの諸操作 Garbage collection Perl, シェルスクリプト,Visual Basic, … 注: OSのAPIとプログラミング言語のAPIの関係 malloc/freeなどはOSとアプリケーションプログラムの仲介屋(問屋?小売店?客) OS メモリ管理 ライブラリ (malloc/freeなど) アプリケーション malloc/ free OSのAPI (sbrk, brk, etc.) そもそ

文档评论(0)

maritime5 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档