Mercurial > hg > Papers > 2019 > tobaru-sigos
view GearsOS_Paging_Segmentation.mm @ 23:4f000f6f9fa4 default tip
add figure meta data gear meta code gear
author | tobaru |
---|---|
date | Wed, 29 May 2019 18:03:39 +0900 |
parents | a6889c903369 |
children |
line wrap: on
line source
<map version="1.0.1"> <!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net --> <node CREATED="1556610054672" ID="ID_1106310700" MODIFIED="1557395306626" TEXT="GearsOS の Paging と Segmentation"> <node CREATED="1556612094723" ID="ID_1288588964" MODIFIED="1556613293948" POSITION="right" TEXT="やること"> <node CREATED="1556615366681" ID="ID_386335671" MODIFIED="1556615421627" TEXT="Xv6kernel を GearsOSにマッピングする"> <node CREATED="1556615446605" ID="ID_1182948496" MODIFIED="1556615472733" TEXT="breakをそのまま使ってもいいが、GearsOSを制御するAPIがほしい"/> </node> <node CREATED="1556613116615" ID="ID_312564535" MODIFIED="1556615393472" TEXT="現在の Code Gear, Data Gear の実装の Context と Segmentationを調べる"/> <node CREATED="1556613076711" ID="ID_830999204" MODIFIED="1556614162630" TEXT="Xv6のpage Table どうなっているか調べる"> <node CREATED="1556613752238" ID="ID_1953173749" MODIFIED="1556613763279" TEXT="Page Table Entry に入ってる"> <node CREATED="1556614634866" ID="ID_1657413388" MODIFIED="1556614732392" TEXT="共通のcontextを持ってる時は同じ空間か別の空間か記述してあげるのがPage Table Entry"/> <node CREATED="1556614719075" ID="ID_19089258" MODIFIED="1556614728286" TEXT="contextの一部"/> </node> <node CREATED="1556613136434" ID="ID_1894814652" MODIFIED="1556613159865" TEXT="それを Gears OS ではどう扱うかを考える"/> <node CREATED="1556613193903" ID="ID_1532801559" MODIFIED="1556613279929" TEXT="調べる前にforkを作った"/> </node> <node CREATED="1556614104389" ID="ID_1775824901" MODIFIED="1556614181683" TEXT="inter Process Communication をどうするか"> <node CREATED="1556614143954" ID="ID_841894129" MODIFIED="1556614229665" TEXT="Code Gear Data Gear の goto文そのもの"/> <node CREATED="1556614241274" ID="ID_1944462756" MODIFIED="1556614271584" TEXT="par goto が持ってるjoinがInterface Communication になる"/> <node CREATED="1556614316000" ID="ID_924663064" MODIFIED="1556614453074" TEXT="Interface Communication のgoto文は普通のgoto文と違って行き先のCode Gear DataGear が同じプロセスにない"/> <node CREATED="1556614453846" ID="ID_1321060882" MODIFIED="1556614492665" TEXT="1つのプロセス内で実行するのは問題がない"> <node CREATED="1556614480582" ID="ID_622087579" MODIFIED="1556614490947" TEXT="実はプロセスを持ってる意味はない"/> </node> <node CREATED="1556614515992" ID="ID_1141993120" MODIFIED="1556614633331" TEXT="ぱるすさんが実装したGearsOSにはメモリ空間の概念がない"> <node CREATED="1556614634866" ID="ID_1902970504" MODIFIED="1556614682062" TEXT="共通のcontextを持ってる時は同じ空間か別の空間か記述してあげるのがPage Table Entry"/> </node> </node> <node CREATED="1556614790340" ID="ID_1860011276" MODIFIED="1556614818484" TEXT="どういう時にCode Gear Data Gear を一緒にするか別々にするか決めて定義する"> <node CREATED="1556614984761" ID="ID_1875403590" MODIFIED="1556615195250" TEXT="一般のOSでPage Table Entry を制御するのはどんなAPI?"> <node CREATED="1556615030653" ID="ID_69904242" MODIFIED="1556615060768" TEXT="1.Fork (PTEをコピる)"/> <node CREATED="1556615061489" ID="ID_1621019253" MODIFIED="1556615108596" TEXT="2.break(メモリを要求)で新しいPTEを付け加える"/> <node CREATED="1556615109337" ID="ID_1978453944" MODIFIED="1556615140023" TEXT="3.mmap 共有メモリを作るのにも使える"/> <node CREATED="1556615141192" ID="ID_1163657241" MODIFIED="1556615166212" TEXT="4. Shared Memory (System系)"/> <node CREATED="1556615167044" ID="ID_1233147317" MODIFIED="1556615183992" TEXT="5.malock"/> </node> <node CREATED="1556615197877" ID="ID_782297442" MODIFIED="1556615333183" TEXT="Gears OS ではどんなAPIが望ましいか提案する"> <node CREATED="1556615223117" ID="ID_1254622138" MODIFIED="1556615241978" TEXT="malockはすでに使っている"/> <node CREATED="1556615244445" ID="ID_379112659" MODIFIED="1556615319002" TEXT="物理メモリがロジカルアドレスをどうするか決めてるのがPTE"> <node CREATED="1556615319002" ID="ID_1123555825" MODIFIED="1556615332049" TEXT="ぱるすさんのGearsOSにはない"/> </node> <node CREATED="1556615366681" ID="ID_685834204" MODIFIED="1556615421627" TEXT="Xv6kernel を GearsOSにマッピングする"> <node CREATED="1556615446605" ID="ID_745272582" MODIFIED="1556615472733" TEXT="breakをそのまま使ってもいいが、GearsOSを制御するAPIがほしい"/> </node> </node> </node> </node> <node CREATED="1556613283596" ID="ID_1642991397" MODIFIED="1556613291646" POSITION="right" TEXT="実装例"> <node CREATED="1556613297950" ID="ID_958668906" MODIFIED="1556613674071" TEXT="GearsOSでContextを丸見えにする"> <node CREATED="1556613316928" ID="ID_1283724329" MODIFIED="1556613324053" TEXT="最速で動く"/> <node CREATED="1556613325217" ID="ID_791099681" MODIFIED="1556613335670" TEXT="セキュリティの問題はある"/> </node> <node CREATED="1556613506073" ID="ID_907686025" MODIFIED="1556613516627" TEXT="Forkを使う"> <node CREATED="1556613516628" ID="ID_144206139" MODIFIED="1556613529384" TEXT="すでにGearsOSで作ってる"/> </node> </node> <node CREATED="1557395565539" ID="ID_1252224066" MODIFIED="1557395581779" POSITION="right" TEXT="論文構成"> <node CREATED="1557395333889" ID="ID_1793192496" MODIFIED="1557398415915" TEXT="1.Gears OS"> <node CREATED="1557395429381" ID="ID_582430981" MODIFIED="1557398422955" TEXT="1.1GearsOS"/> <node CREATED="1557395411507" ID="ID_1259429356" MODIFIED="1557398426960" TEXT="1.2CbC"/> <node CREATED="1557395435448" ID="ID_351249598" MODIFIED="1557398431394" TEXT="1.3Meta Code Gear Meta Data Gear"/> </node> <node CREATED="1557395360115" ID="ID_965745108" MODIFIED="1557398731326" TEXT="2.今までのPagingとSegmentationの Survey"> <node CREATED="1557395649251" ID="ID_1042648203" MODIFIED="1557399053414" TEXT="intel が生き残ってる Segmentation Achitecture"> <node CREATED="1557395703095" ID="ID_3142787" MODIFIED="1557395717884" TEXT="サーベイが必要"/> </node> <node CREATED="1557399083003" ID="ID_1424199690" MODIFIED="1557399097793" TEXT="アプリケーションの中でもメモリ管理をきめ細かにやりたい"/> <node CREATED="1557395677691" ID="ID_1872255561" MODIFIED="1557395700461" TEXT="Userでもメモリの保護とリロケーションをしたい"> <node CREATED="1557395791827" ID="ID_656543864" MODIFIED="1557395806040" TEXT="アクセスできるのはmmap だけ"> <node CREATED="1557395806040" ID="ID_1756390550" MODIFIED="1557399130344" TEXT="mmapもmalockでつかわれてるだけ "/> </node> </node> <node CREATED="1557395822489" ID="ID_1466182511" MODIFIED="1557395866404" TEXT="GearsOS"> <node CREATED="1557399148178" ID="ID_490778387" MODIFIED="1557399159610" TEXT="pagingとSegmentationをいれたい"> <node CREATED="1557399172229" ID="ID_846863244" MODIFIED="1557399177563" TEXT="paging 64k"> <node CREATED="1557399183164" ID="ID_115202419" MODIFIED="1557399412226" TEXT="インパース page table??"> <node CREATED="1557399419979" ID="ID_1296826617" MODIFIED="1557399427695" TEXT="個別のページは圧縮"/> </node> </node> <node CREATED="1557399447172" ID="ID_1871609806" MODIFIED="1557399452725" TEXT="Segmentation"> <node CREATED="1557395752801" ID="ID_365190741" MODIFIED="1557399541968" TEXT="Segmentation が使われてるのはunixだと thread local ぐらい"/> </node> <node CREATED="1557399716959" ID="ID_1263686438" MODIFIED="1557399731819" TEXT="Userレベルの時にPagingに直接アクセスすることができない"/> </node> <node CREATED="1557395831698" ID="ID_1173677926" MODIFIED="1557399787873" TEXT="meta CompetitionとCompetitionに分離されている"> <node CREATED="1557399805812" ID="ID_132710327" MODIFIED="1557399892857" TEXT="meta Competition レベルでPage table を操作する事でUserプログラムでもPage table を操作することができる"/> </node> <node CREATED="1557395846680" ID="ID_1669847133" MODIFIED="1557395877755" TEXT="page table に勝手に書き込まれるのはまずい"> <node CREATED="1557399901723" ID="ID_5951082" MODIFIED="1557399913577" TEXT="他のプロセスの物理メモリを読まれたりする"/> <node CREATED="1557399919675" ID="ID_554476234" MODIFIED="1557399951129" TEXT="Userに渡された資源の範囲で処理する必要があるが可能か?"> <node CREATED="1557400267540" ID="ID_1198294992" MODIFIED="1557400285193" TEXT="meta compitation でシステムレベルに戻ってやればいい"/> </node> </node> <node CREATED="1557395879630" ID="ID_614583572" MODIFIED="1557395896235" TEXT="meta compitationに戻る時にシステムに戻ればいい"> <node CREATED="1557395897123" ID="ID_298696925" MODIFIED="1557395910490" TEXT="どういうAPI を用意すればいいか考える"/> <node CREATED="1557395912217" ID="ID_1954563880" MODIFIED="1557395920290" TEXT="meta data Gear を操作する"> <node CREATED="1557395922283" ID="ID_27345325" MODIFIED="1557395938738" TEXT="ノーマルレベルから管理"> <node CREATED="1557400322181" ID="ID_1185169876" MODIFIED="1557400363113" TEXT="操作するpage table が提供した資源に収まってるかチェックしてから反映する"/> </node> </node> <node CREATED="1557395947347" ID="ID_913102475" MODIFIED="1557395969188" TEXT="アクセスできるメモリをダイレクトに渡すのかコピるのかは自由度ある"/> <node CREATED="1557396004163" ID="ID_1296426699" MODIFIED="1557400417831" TEXT="Code Gearを切り替えるたびにSegmantationを切り替えるのは重くなる"> <node CREATED="1557400467114" ID="ID_1584922231" MODIFIED="1557400508422" TEXT="Contextの中に使用するCG DGは揃っている"/> <node CREATED="1557400511167" ID="ID_1213784664" MODIFIED="1557400558739" TEXT="ContextはThreadごとにあってCGDGは自由に入れ替えることはできる"> <node CREATED="1557400563182" ID="ID_336139811" MODIFIED="1557400572730" TEXT="Contextはシステムで保護されるべき"/> <node CREATED="1557400595631" ID="ID_370602642" MODIFIED="1557400603792" TEXT="煩雑に切り替わる"> <node CREATED="1557400605611" ID="ID_1444833214" MODIFIED="1557400628136" TEXT="Contextにそって必要なアクセスできる範囲を制限してあげる"/> <node CREATED="1557400641124" ID="ID_339133162" MODIFIED="1557400671090" TEXT="リニアスペース全部提供するのが現状でそれの方が簡単"/> <node CREATED="1557400678841" ID="ID_256534439" MODIFIED="1557400711559" TEXT="ContextとSegmentationを組み合わせてGearsOS のPagingを作り上げていくのがいい"/> </node> </node> </node> </node> </node> <node CREATED="1557395724955" ID="ID_1120480389" MODIFIED="1557395737001" TEXT="paging"> <node CREATED="1557395737002" ID="ID_1948709995" MODIFIED="1557395745738" TEXT="圧縮"/> </node> </node> <node CREATED="1557398081009" ID="ID_850503595" MODIFIED="1557398439981" TEXT="3.GearsOSでのPaging"/> <node CREATED="1557395374773" ID="ID_485527758" MODIFIED="1557398445136" TEXT="4.UserSpaceでPage Table を操作する利点"> <node CREATED="1557398174469" ID="ID_1128960835" MODIFIED="1557398192203" TEXT="Code Gear と DG のSegmentation 相性がいい"> <node CREATED="1557398201182" ID="ID_1420123612" MODIFIED="1557398223087" TEXT="CGとDGが切り替わる時にSegmentationを切り替えるのは重い"> <node CREATED="1557398228153" ID="ID_1390164932" MODIFIED="1557398265848" TEXT="Contextを使った工夫が必要"/> </node> </node> </node> <node CREATED="1557398342250" ID="ID_183157737" MODIFIED="1557398451015" TEXT="5.Xv6を書き換えて実装するのがいいのでは"> <node CREATED="1557400759750" ID="ID_1461178721" MODIFIED="1557400815507" TEXT="kernel内部ではPage table がアクセスできるのでPageTableはユーザーレベルでどうするかって話"/> <node CREATED="1557401643904" ID="ID_458911797" MODIFIED="1557401688244" TEXT="elfじゃなくてContextを配置してメモリ空間にアクセスする実行の仕組みをxv6に入れる"/> <node CREATED="1557401692740" ID="ID_1400595796" MODIFIED="1557401729495" TEXT="Xv6の新しい要素としてGearsOSのContextの部分をUserSpace側で実行する"/> <node CREATED="1557401740625" ID="ID_852415691" MODIFIED="1557401749848" TEXT="Xv6でやるのがいいかは微妙"> <node CREATED="1557401758943" ID="ID_1036627792" MODIFIED="1557401772393" TEXT="今あるOSでmmapでやるのも悪くはない"> <node CREATED="1557401776744" ID="ID_1501140156" MODIFIED="1557401793706" TEXT="Page table 直接いじる方が面白いのでそれでやっていく"/> </node> <node CREATED="1557401816204" ID="ID_204129092" MODIFIED="1557401913185" TEXT="Contextに必要なPagetableとPage Segmentationを提供するinterfaceとAUserSpaceからアクセスするPIを考える必要がある"> <node CREATED="1557401891124" ID="ID_1834452223" MODIFIED="1557402014293" TEXT="実際にはPTに相当するデータをInput data Gearで受け取って変更した後、contextにあるメモリコントロールを担当するmeta data gear にgotoしてアクセスする。"> <node CREATED="1557402017444" ID="ID_1044594446" MODIFIED="1557402032906" TEXT="その時にPage tabel entry のバリデーションをチェックする"/> </node> </node> </node> </node> </node> </node> </map>