過程が大事

学んだことを適当にアウトプットします

Mikan OSを自作してみる #9

今日やった内容

以下の用語の理解
* ユーザモードとカーネルモードと仮想アドレス * システムコール
* コンテキストスイッチ
* ファイルシステム

用語解説

<ユーザモード>
管理者権限なしで命令する
OS上でプログラムが起動された場合はOSの管理下で、メモリ領域(ユーザ空間)に展開する。ユーザモードはこのメモリ領域へアクセスする。

<カーネルモード>
管理者権限のこと
パソコンを起動した際にOSプログラムをメモリ領域(カーネル空間)に展開してOSを起動する。カーネルモードではこのメモリ領域へアクセスする。

<仮想アドレス>
仮想アドレスとはユーザ空間、カーネル空間におけるアドレスのことで、MMU(メモリ管理ユニット)で物理アドレスに変換し、メモリアクセスを行う。

<システムコール>
ユーザモード上からカーネル空間へのアクセスを行えるようにすることであり、カーネルに処理をさせることである。

<コンテキストスイッチ>
 wikiによると、複数のプロセスが1つのCPUを共有できるように、CPUの状態(コンテキスト (情報工学))を保存したり復元したりする過程のことであり、コンテキストスイッチマルチタスクオペレーティングシステムに不可欠な機能らしい。  つまり、マルチプロセスの環境で優先プロセスによる割り込みが発生した場合に実行中のプロセスの情報を保存して優先プロセス終了後にプロセスを再開できるようにするということ。  OSでのコンテキストはCPUが該当プロセスを実行するためのプロセス情報で、これがプロセスのPCB(Process Control Block)に保存されてコンテキストスイッチ時にPCBの情報を読み込んで前のプロセスの作業の続きを行う。

<ファイルシステム>
ファイルシステムとは、OSの基本機能の一つでファイルとしてデータを扱う仕組みのこと。 ファイルシステムの仕組みがないと、データを読み出す際にディスク区間であるセクタ番号を指定してデータを取り出す指示を出すことになる。
ファイルシステムを使うことで「desktop/text.txtを開く」という指示を行えるようになる。 ファイルシステムには、ext4やXFS、Fat32などの種類があり、USBのファイルシステムFat32exFatなどがある。

< Fat32 >
Fat32形式はほぼ全てのOSで読み書き可能なファイルシステムで1つのファイルの最大容量が4GBで全体容量の上限は2TBであり、サイズの大きい動画はUSBに保存できない。

< exFat >
exFat形式はファイルサイズの制限がなく、容量の上限が16EB(1TB=100TB)と超大容量である。WindowsMacのどちらのOSでも読み書き可能。

これなら全てexFatで良いじゃん。と思ったが、exFatを使うのはあまり良くないと聞いたことがあるような気がしたため調べてみるとどうやらexFatには問題点があるらしい。なんとexFatを作成したMicrosoftexFatの仕組みを最近まで非公開にしているため詳細を誰も知らないという状況になっているらしい!!
これはつまり、Microsoft以外のexFatのツールは正しいフォーマット仕様通りに作られているわけではいということ。そのため、exFatに関するトラブルは多発しているらしい。 加えてFAT系フォーマット全般は破損に脆いらしく、システムの基盤となるマスタデータのやりとりに使うのは危険。テレビ局で取り扱っているCMやTVのマスタデータはWindows NTFSフォーマットで納品することになっているらしい。 これらのことから異なるOS間でのファイルコピーはネットワーク越しに行うことが良いとされている。
ネットワーク越しのファイルコピーは、NFSやSMBを使う。

< NFS >
NFSUnix系OSに標準で実装されているファイルサーバの機能で、WindowsサーバやMacでもサポートされている。NFSを使うことでネットワーク越しにファイル共有が可能になり、複数のサーバ間のファイル共有ができる。

< SMB >
NFSと同じくファイル共有で使用するファイルサーバの機能で主にWindowsで使用されているファイル共有の通信プロトコルである。NFSもSMBもほとんどのOSでサポートされている。SMBは、Windows10のクライアントPCからアクセスし、複数のユーザで作業さいるを共有する目的でよく利用されている。