Mercurial > hg > Papers > 2019 > mitsuki-master
view mindmap.mm @ 46:9243b1191c5c
update
author | mir3636 |
---|---|
date | Mon, 11 Feb 2019 15:19:22 +0900 |
parents | 64a07484a5f3 |
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="1548148132447" ID="ID_675463996" MODIFIED="1549254676270" TEXT="継続を基本とした言語による OS のモジュール化"> <font NAME="SansSerif" SIZE="12"/> <node CREATED="1548148340376" ID="ID_178117645" MODIFIED="1548487347733" POSITION="right" TEXT="OS の拡張性と信頼性の両立"> <icon BUILTIN="full-1"/> <node CREATED="1548487592202" ID="ID_1664909329" MODIFIED="1548487601034" TEXT="信頼性の保証"> <node CREATED="1548148862511" ID="ID_1718534025" MODIFIED="1548487557659" TEXT="証明とモデル検査による OS の検証"/> </node> <node CREATED="1548148889450" ID="ID_1533316026" MODIFIED="1548148897356" TEXT="ノーマルレベルとメタレベル"> <node CREATED="1548487725405" ID="ID_1198600533" MODIFIED="1548487737076" TEXT="信頼性をノーマルレベルで保証"/> <node CREATED="1548487747627" ID="ID_8461463" MODIFIED="1548487759053" TEXT="拡張性をメタレベルで保証"/> <node CREATED="1548487799216" ID="ID_981159466" MODIFIED="1548487819999" TEXT="CbC を用いて実現"/> </node> </node> <node CREATED="1548148373157" ID="ID_1788429805" MODIFIED="1548487352245" POSITION="right" TEXT="Gears におけるメタ計算"> <icon BUILTIN="full-2"/> <node CREATED="1548148399058" ID="ID_1400405695" MODIFIED="1548487580852" TEXT="Continuation based C"> <icon BUILTIN="full-1"/> <node CREATED="1548148946394" ID="ID_894925375" MODIFIED="1548148955475" TEXT="軽量継続"/> <node CREATED="1548148959342" ID="ID_1325269629" MODIFIED="1548148971925" TEXT="LLVMとGCC"/> </node> <node CREATED="1548148407844" ID="ID_1692311296" MODIFIED="1548487383902" TEXT="Code Gear "> <icon BUILTIN="full-2"/> </node> <node CREATED="1548148415658" ID="ID_853478672" MODIFIED="1548487387438" TEXT="Data Gear"> <icon BUILTIN="full-3"/> </node> <node CREATED="1548148424608" ID="ID_704536440" MODIFIED="1548487391838" TEXT="Meta Code Gear、Meta Data Gear"> <icon BUILTIN="full-4"/> </node> </node> <node CREATED="1548148561107" ID="ID_64989911" MODIFIED="1548487357599" POSITION="right" TEXT="Interface"> <icon BUILTIN="full-3"/> <node CREATED="1548487279772" ID="ID_49344231" MODIFIED="1548487396094" TEXT="Interface の実装"> <icon BUILTIN="full-1"/> </node> </node> <node CREATED="1548148507487" ID="ID_411737141" MODIFIED="1548487360789" POSITION="right" TEXT="Gears OS の構成"> <icon BUILTIN="full-4"/> <node CREATED="1548148513234" ID="ID_1709470781" MODIFIED="1548487400695" TEXT="Context"> <icon BUILTIN="full-1"/> </node> <node CREATED="1548148525599" ID="ID_1398170145" MODIFIED="1548487404439" TEXT="TaskManager"> <icon BUILTIN="full-2"/> </node> <node CREATED="1548148539827" ID="ID_191621067" MODIFIED="1548487407623" TEXT="TaskQueue"> <icon BUILTIN="full-3"/> </node> <node CREATED="1548148546353" ID="ID_1800166056" MODIFIED="1548487411271" TEXT="Workers"> <icon BUILTIN="full-4"/> </node> </node> <node CREATED="1548148575453" ID="ID_1492357762" MODIFIED="1548487366125" POSITION="right" TEXT="コードの自動生成"> <icon BUILTIN="full-5"/> <node CREATED="1548148581455" ID="ID_1609724677" MODIFIED="1548487414879" TEXT="Meta Code Gear の生成"> <icon BUILTIN="full-1"/> </node> <node CREATED="1548148599118" ID="ID_1714604107" MODIFIED="1548487418480" TEXT="Context の生成"> <icon BUILTIN="full-2"/> </node> </node> <node CREATED="1548148619125" ID="ID_1489559909" MODIFIED="1548148623576" POSITION="right" TEXT="Gears OSの並列処理?"/> <node CREATED="1548148627901" ID="ID_1160861787" MODIFIED="1548487371913" POSITION="right" TEXT="xv6 の CbC への書き換え"> <icon BUILTIN="full-6"/> <node CREATED="1548148652887" ID="ID_427195004" MODIFIED="1548487422536" TEXT="xv6-rpi の CbC 対応"> <icon BUILTIN="full-1"/> </node> <node CREATED="1548148660032" ID="ID_1036569649" MODIFIED="1548487427545" TEXT="システムコールの書き換え"> <icon BUILTIN="full-2"/> <node CREATED="1548148671398" ID="ID_1733143845" MODIFIED="1548148681319" TEXT="システムコールのInterface?"/> </node> </node> <node CREATED="1548755284951" ID="ID_1162676474" MODIFIED="1548755291630" POSITION="right" TEXT="評価"> <node CREATED="1548755296162" ID="ID_321399302" MODIFIED="1548755472640" TEXT="他の言語と比べてどうか"/> </node> <node CREATED="1548148689201" ID="ID_1458028381" MODIFIED="1548487375742" POSITION="right" TEXT="結論?"> <icon BUILTIN="full-7"/> <node CREATED="1548489043347" ID="ID_1409047163" MODIFIED="1548489070315" TEXT="信頼性の向上に近づいた?"/> </node> <node CREATED="1548489932220" ID="ID_757950681" MODIFIED="1548490011362" POSITION="left" TEXT="インターフェース"> <node CREATED="1548489953215" ID="ID_277212330" MODIFIED="1548491097911" TEXT="Data Gear がノーマルとメタで見え方が違う"> <node CREATED="1548490061907" ID="ID_949514665" MODIFIED="1548490290605" TEXT="ノーマルレベルでは引数の集合に見える"/> <node CREATED="1548491177494" ID="ID_938068961" MODIFIED="1548491219048" TEXT="メタレベルでは構造体に見える"/> <node CREATED="1548491230226" ID="ID_619445051" MODIFIED="1548491489772" TEXT="このずれはstubによって調整されている"/> </node> <node CREATED="1548489985750" ID="ID_478331297" MODIFIED="1548490010332" TEXT="関数呼び出しでのスタックフレーム"> <node CREATED="1548491543337" ID="ID_787064228" MODIFIED="1548491570179" TEXT="通常はスタックフレームを引き上げて引数を入れる"/> <node CREATED="1548491591272" ID="ID_1468376764" MODIFIED="1548491631278" TEXT="CbC は置き場所がない"> <node CREATED="1548491658311" ID="ID_748287856" MODIFIED="1548491746688" TEXT="Context で Data Gear を確保している"/> </node> <node CREATED="1548495614972" ID="ID_868990103" MODIFIED="1548495669304" TEXT="Code Gear の ABI を提供する Data Gear がいる"/> </node> <node CREATED="1548490030177" ID="ID_618100705" MODIFIED="1548490051646" TEXT="実装と API の分離"/> </node> <node CREATED="1548489764103" ID="ID_394002748" MODIFIED="1548489787308" POSITION="left" TEXT="OS の構成"> <arrowlink DESTINATION="ID_394002748" ENDARROW="Default" ENDINCLINATION="0;0;" ID="Arrow_ID_1421895392" STARTARROW="None" STARTINCLINATION="0;0;"/> <linktarget COLOR="#b0b0b0" DESTINATION="ID_394002748" ENDARROW="Default" ENDINCLINATION="0;0;" ID="Arrow_ID_1421895392" SOURCE="ID_394002748" STARTARROW="None" STARTINCLINATION="0;0;"/> <node CREATED="1548489789146" ID="ID_674925361" MODIFIED="1548489798735" TEXT="スケジューラー"> <node CREATED="1548489836881" ID="ID_1149997812" MODIFIED="1548489843289" TEXT="プロセスリスト"/> </node> <node CREATED="1548489802860" ID="ID_279936784" MODIFIED="1548732778258" TEXT="デバイス"> <node CREATED="1548489846970" ID="ID_421100883" MODIFIED="1548489851481" TEXT="CPU"/> <node CREATED="1548489856858" ID="ID_462651457" MODIFIED="1548489864802" TEXT="tty"/> <node CREATED="1548489868900" ID="ID_1534478744" MODIFIED="1548489871991" TEXT="file"> <node CREATED="1548495747264" ID="ID_1518415708" MODIFIED="1548495756897" TEXT="User"> <node CREATED="1548495769468" ID="ID_1833789134" MODIFIED="1548495773314" TEXT="Buff"/> <node CREATED="1548495777669" ID="ID_1499560097" MODIFIED="1548495780284" TEXT="fd"/> </node> <node CREATED="1548495760343" ID="ID_1439536994" MODIFIED="1548495764802" TEXT="System"> <node CREATED="1548495796274" ID="ID_533525371" MODIFIED="1548495798805" TEXT="inode"/> <node CREATED="1548495805783" ID="ID_171856887" MODIFIED="1548495827272" TEXT="console port"/> </node> </node> </node> <node CREATED="1548489815075" ID="ID_1074840646" MODIFIED="1548600285804" TEXT="メモリ"> <node CREATED="1548489890668" ID="ID_665796263" MODIFIED="1548489904983" TEXT="pte"/> </node> </node> <node CREATED="1548569486676" ID="ID_1344165689" MODIFIED="1548583574060" POSITION="left" TEXT="OS とはなにか?"> <node CREATED="1548569614513" ID="ID_1123354692" MODIFIED="1549257455716" TEXT="OS の歴史"> <node CREATED="1548583601149" ID="ID_1383998122" MODIFIED="1548583608807" TEXT="チャールズ・バベッジ"/> <node CREATED="1548600292273" ID="ID_648998459" MODIFIED="1548600308009" TEXT="フォンノイマン"/> <node CREATED="1548600673491" ID="ID_210522885" MODIFIED="1548600685353" TEXT="1940年代"> <node CREATED="1548600688814" ID="ID_1433881700" MODIFIED="1548600734520" TEXT="プログラミングはマシン語で行われていた"/> <node CREATED="1548600737351" ID="ID_1653423610" MODIFIED="1548600747746" TEXT="プログラミング言語はない"/> <node CREATED="1548600748221" ID="ID_823124391" MODIFIED="1548600760812" TEXT="OS は影も形もない"/> </node> <node CREATED="1548600847545" ID="ID_878140979" MODIFIED="1548600853298" TEXT="1950年代"> <node CREATED="1548600861328" ID="ID_298888004" MODIFIED="1548600871635" TEXT="トランジスタが導入された"/> <node CREATED="1548600905562" ID="ID_1134583599" MODIFIED="1548600913791" TEXT="メインフレームと呼ばれる"/> <node CREATED="1548600930885" ID="ID_1399613065" MODIFIED="1548600956227" TEXT="ジョブの実行には紙に書き、カードにパンチする"/> <node CREATED="1548600962954" ID="ID_685391201" MODIFIED="1548600984985" TEXT="アセンブラ、または FORTRAN"/> <node CREATED="1548602144280" ID="ID_405041465" MODIFIED="1548602164570" TEXT="FORTRAN コンパイラが必要な場合はそれも一緒に実行する"/> <node CREATED="1548602372478" ID="ID_1425433271" MODIFIED="1548602381540" TEXT="IBM 1401"> <node CREATED="1548602385072" ID="ID_94178128" MODIFIED="1548602404378" TEXT="パンチカードを磁気テープに"/> <node CREATED="1548602407663" ID="ID_1704885938" MODIFIED="1548602427097" TEXT="実際の計算はIBM7094"/> <node CREATED="1548602443828" ID="ID_62419249" MODIFIED="1548602466280" TEXT="出力された磁気テープを1401で紙に出力"/> </node> <node CREATED="1548602646600" ID="ID_1778137181" MODIFIED="1548602695675" TEXT="FORTRAN と書くことで FORTRAN コンパイラをロードするようにOS に伝える"/> <node CREATED="1548602731921" ID="ID_933092869" MODIFIED="1548602767351" TEXT="LOAD カードで OS に今コンパイルされたオブジェクトをロードするように言う"/> <node CREATED="1548602789515" ID="ID_1394769992" MODIFIED="1548602826325" TEXT="RUN カードでそれに続くデータでプログラミングを実行するようにOS に伝える"/> <node CREATED="1548602834418" ID="ID_1728322701" MODIFIED="1548602841393" TEXT="END カードで終了"/> <node CREATED="1548602866057" ID="ID_42126222" MODIFIED="1548602868427" TEXT="基本的な制御カードは、現代のジョブ制御言語とコマンドインタプリタの先駆け"/> <node CREATED="1548602882853" ID="ID_562425018" MODIFIED="1548602897852" TEXT="FMS Fortran Monitor System"/> <node CREATED="1548602899195" ID="ID_1275061168" MODIFIED="1548602910629" TEXT="IBSYS"/> </node> <node CREATED="1548604081567" ID="ID_1337772865" MODIFIED="1548604089962" TEXT="1965-1980"> <node CREATED="1548604094499" ID="ID_63946579" MODIFIED="1548604111523" TEXT="二つの異なるマシンは厄介"> <node CREATED="1548604449777" ID="ID_32910659" MODIFIED="1548604500965" TEXT="事務処理や入出力用処理のマシンと科学計算用のマシンでは命令セットが異なる"/> </node> <node CREATED="1548604113747" ID="ID_1976787552" MODIFIED="1548604523940" TEXT="同一の命令セットを持つSystem/360を開発"/> <node CREATED="1548604738341" ID="ID_299804251" MODIFIED="1548604773619" TEXT="同一の命令セットを持っているため異なるマシンでも使用可能"/> <node CREATED="1548604775416" ID="ID_394265823" MODIFIED="1548604794448" TEXT="IBM1401などとも互換性がある"/> <node CREATED="1548604803260" ID="ID_138504582" MODIFIED="1548604818000" TEXT="IC を搭載した最初のコンピュータ"/> <node CREATED="1549183292041" ID="ID_1157638642" MODIFIED="1549183321115" TEXT="OS は全てのマシンの上で動作しなければならない"/> <node CREATED="1549183402866" ID="ID_134994428" MODIFIED="1549183435675" TEXT="全てに対して効率よく動かなければならない"/> <node CREATED="1549183449282" ID="ID_667900769" MODIFIED="1549183477888" TEXT="FMS より大きく複雑なOSになった"/> <node CREATED="1549183478332" ID="ID_1361963236" MODIFIED="1549183487020" TEXT="大量のアセンブラで書かれている"/> <node CREATED="1549183545688" ID="ID_1289607173" MODIFIED="1549183554785" TEXT="マルチプログラミングが可能"/> <node CREATED="1549183637292" ID="ID_1864258670" MODIFIED="1549183652671" TEXT="メモリを分割し、各部分で異なるジョブを使用する"/> <node CREATED="1549183673138" ID="ID_1783802802" MODIFIED="1549183692448" TEXT="各ジョブを保護しなくてはならない"/> <node CREATED="1549183911877" ID="ID_300791640" MODIFIED="1549183933654" TEXT="カードからディスクにロードできるようになった"/> <node CREATED="1549183934392" ID="ID_1300129554" MODIFIED="1549183943652" TEXT="スプーリング"/> <node CREATED="1549184540438" ID="ID_1959426555" MODIFIED="1549184549479" TEXT="PDP-7、UNIX"/> <node CREATED="1549184603366" ID="ID_426574213" MODIFIED="1549184639649" TEXT="任意のUNIX システム上で実行できるプログラミングを作成するためにPOSIXを開発"/> <node CREATED="1549184690486" ID="ID_549260623" MODIFIED="1549184700687" TEXT="LINUX を開発"/> <node CREATED="1549184702999" ID="ID_1855235788" MODIFIED="1549184712235" TEXT="MINIX機能をサポート"/> </node> <node CREATED="1549184729362" ID="ID_117855100" MODIFIED="1549184737742" TEXT="1980-現在"> <node CREATED="1549184788372" ID="ID_1642123803" MODIFIED="1549184802748" TEXT="個人でコンピュータを持てるようになった"/> <node CREATED="1549184913305" ID="ID_369238744" MODIFIED="1549184917838" TEXT="CP/M"/> <node CREATED="1549184959258" ID="ID_1983089212" MODIFIED="1549184961817" TEXT="DOS"/> <node CREATED="1549184983253" ID="ID_547205158" MODIFIED="1549185000546" TEXT="MS-DOS"/> <node CREATED="1549185062901" ID="ID_1407355809" MODIFIED="1549185065812" TEXT="GUI"/> <node CREATED="1549185114811" ID="ID_1696032742" MODIFIED="1549185122464" TEXT="Machintosh"/> <node CREATED="1549185122952" ID="ID_64256264" MODIFIED="1549185152533" TEXT="Windows,MS-DOS のグラフィカル環境に過ぎなかった"/> </node> <node CREATED="1548581784755" ID="ID_10727192" MODIFIED="1548582053968" TEXT="OS/360"/> </node> <node CREATED="1549255013884" ID="ID_477520902" MODIFIED="1549255092119" TEXT="コンピュータにはCPU、ディスプレイ、キーボードやマウス、ハードディスクなど様々な機器が接続されている。"/> <node CREATED="1549255096914" ID="ID_35248360" MODIFIED="1549255498376" TEXT="プログラムの処理を行うとき、これらの様々なデバイスのアクセスや資源管理は複雑で容易ではない。"/> <node CREATED="1549255278289" ID="ID_1808337712" MODIFIED="1549255563613" TEXT="異なるハードウェアを扱う際にはそれぞれに対応したプログラミングを行う必要がある。"/> <node CREATED="1549255575940" ID="ID_147490299" MODIFIED="1549255934726" TEXT="OS とはこれらのデバイスの抽象化や資源管理を行う。"/> <node CREATED="1549255773959" ID="ID_63202858" MODIFIED="1549268264401" TEXT="ユーザーは OS のおかげで異なるハードウェアの違いを意識することなくプログラミングをすることができる。例えば同じプログラムで、異なる入力デバイスによる操作や、ディスプレイでの表示などは、
デバイスへのアクセスなどの複雑な処理を OS が隠すことによってユーザーが意識せずにプログラミングを行える。"/> <node CREATED="1549256385231" ID="ID_1006499844" MODIFIED="1549268346791" TEXT="また、本来プログラムを書く際に考慮すべきCPU、メモリ、ディスクなどの資源管理を OS が行うことでユーザーが考慮することなくプログラミングすることができる。"/> <node CREATED="1549258568553" ID="ID_1733229755" MODIFIED="1549259065793" TEXT="1950年代におけるコンピューターがプログラムを実行する際には専門のオペレータが存在し、オペレーターがジョブの管理、コンパイラの選択などを行なっていた。"/> <node CREATED="1549259192507" ID="ID_102623684" MODIFIED="1549259303492" TEXT="しかし後に、ジョブの自動実行、やコンパイラのロードを行うプログラムができた。これが OS の祖先である。"/> <node CREATED="1549257552927" ID="ID_432532722" MODIFIED="1549263772668" TEXT="コンピュータには科学技術用のコンピューターと商用のコンピューターが開発されていたが、後に汎用コンピューターである System/360 が開発される。"/> <node CREATED="1549263773740" ID="ID_1615765428" MODIFIED="1549264890746" TEXT="System/360 の OS/360 は強力なソフトウェア互換を持っていた。"/> <node CREATED="1549264893990" ID="ID_990126893" MODIFIED="1549265198295" TEXT="ソフトウェア互換により全てのソフトウェアが全てのマシンで動作するようになった。"/> <node CREATED="1549265275321" ID="ID_598847892" MODIFIED="1549265674281" TEXT="この頃の OS には、スプーリングやタイムシェアリングといった機能も導入されるようになった。"/> <node CREATED="1549266069094" ID="ID_127669636" MODIFIED="1549267038605" TEXT="その後、UNIX が開発され後に様々なバージョンが開発され、System V、BSD といった派生 OS なども開発され、現在に至る。"/> <node CREATED="1549257434277" ID="ID_1207917538" MODIFIED="1549267018652" TEXT=""/> </node> </node> </map>