Mercurial > hg > Papers > 2019 > mitsuki-master
changeset 25:64a07484a5f3
update
author | mir3636 |
---|---|
date | Mon, 04 Feb 2019 17:20:04 +0900 |
parents | 63e8ec026778 |
children | d61a7ff51f6f |
files | mindmap.mm paper/gearsOS.tex paper/master_paper.pdf |
diffstat | 3 files changed, 51 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/mindmap.mm Sun Feb 03 16:04:10 2019 +0900 +++ b/mindmap.mm Mon Feb 04 17:20:04 2019 +0900 @@ -1,6 +1,6 @@ <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="1548570800851" TEXT="継続を基本とした言語による OS のモジュール化"> +<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"/> @@ -71,6 +71,9 @@ <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="信頼性の向上に近づいた?"/> @@ -96,7 +99,7 @@ <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="1548489811367" TEXT="デバイス"> +<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"> @@ -115,7 +118,7 @@ </node> </node> <node CREATED="1548569486676" ID="ID_1344165689" MODIFIED="1548583574060" POSITION="left" TEXT="OS とはなにか?"> -<node CREATED="1548569614513" ID="ID_1123354692" MODIFIED="1548581796895" 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年代"> @@ -150,9 +153,45 @@ <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>
--- a/paper/gearsOS.tex Sun Feb 03 16:04:10 2019 +0900 +++ b/paper/gearsOS.tex Mon Feb 04 17:20:04 2019 +0900 @@ -10,17 +10,6 @@ ・Workers -Data Gear は union と struct によって表現される。 -Context には Data Gear の Data Type の情報が格納されている。 -この情報から確保する Data Gear のサイズなどを決定する。 - -%Context は Task でもあり、Taskは通常のOSのスレッドに対応する。 -%Task は実行する Code Gear と Data Gear をすべて持っている。 -TaskManager は Task を実行する Worker の生成、管理、Task の送信を行う。 -Gears OS における Task Queue は Synchronized Queue で実現される。 -Worker は TaskQueue から Task である Context を取得し、Task の Code Gear を実行し、Output Data Gear の書き出しを行っている。 -Input/Output Data Gear の依存関係が解決されたものから並列実行される。 - 図\ref{fig:gearsos} に Gears OS の構成図を示す。 \begin{figure}[ht] @@ -31,6 +20,13 @@ \label{fig:gearsos} \end{figure} +%Context は Task でもあり、Taskは通常のOSのスレッドに対応する。 +%Task は実行する Code Gear と Data Gear をすべて持っている。 +TaskManager は Task を実行する Worker の生成、管理、Task の送信を行う。 +Gears OS における Task Queue は Synchronized Queue で実現される。 +Worker は TaskQueue から Task である Context を取得し、Task の Code Gear を実行し、Output Data Gear の書き出しを行っている。 +Input/Output Data Gear の依存関係が解決されたものから並列実行される。 + TaskManager は Task である Context の生成を行う。 実行する Task の Input Data Gear が揃っているなら TaskQueue へ put する。 Worker は Task の取得を行い、Task を実行する。 @@ -55,6 +51,8 @@ Gears OS では Data Gear は構造体で定義されている。 メタ計算では任意の Data Gear を一律で扱うため、全て union で定義されている。(ソースコード \ref{contexth} 33行目〜) +Context には Data Gear の Data Type の情報が格納されている。 +この情報から確保する Data Gear のサイズなどを決定する。 \lstinputlisting[label=contexth, caption=Context]{./src/context.h}