見出し画像

OS開発はじめたよ OS開発勉強 #1

 またまた新しい事を始めたので、つらつらと書いていこうと思う。

OS

OSとは

オペレーティングシステム(英: operating system、略称:OS、オーエス)とは、コンピュータのオペレーション(操作・運用・運転)を司るシステムソフトウェアである。

https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0

 上はWikipediaのOSのページから引用した一文。身近な例としては、WIndows・Android・iOS・MacOSなどなどがある。じゃあ、こいつらは何をしているのか。それがこの一文。だが、どうにもわかりずらい。そこで独断と偏見によって、OSの仕事は大まかに三つに分類し捉えてみる。

OSの機能 1. ハードウェアの抽象化

 OSの肝となる機能の一つにハードウェアの抽象化があげられる。抽象化とはつまり、ざっくりととらえることである。PCを構成するパーツをざっくりと把握することをOSは担っている。どの程度ざっくり(抽象的)なのか。

プリンターが接続されてるよ!
ディスプレイが接続されているよ!!

 この程度になる。我々人間の利用者側から見ると、とても当たり前の事項に見える。

「そんなものは見ればわかる。コードが刺さっているではないか。」

と言った調子に。
では何故、重要なのだろうか?それは取りも直さず、機器の多様性に起因される。
 例として画面について考えてみよう。この世には多種多様な画面が存在している。材質・仕組みによる差異(液晶・ブラウン管・LED etc…)、機能による差異(ゲーミング機能・ブルーライトカット機能・自動調光機能 etc…)、メーカーの差異(LG・DELL・HP etc…)などなど、バラエティには枚挙にいとまがない。
 OSのハードウェア抽象化がなければ、PCはこれらの数多の画面に対して愚直に対応しないといけない。この画面は○○社の××と言う製品で、機能は△△があり、大きさはいくらで…..といった風に。面倒くさい….面倒くさすぎる。

 ここでOSの寛容さがカギになる。OSが抽象化を行うと、

画面がくっつきました!
このプログラム(ドライバー)を使えば、画面が動かせるよ!!

とこうなる。そうすると各アプリケーションは

『OSさん、画面をコレコレこうしてください。』

といった感じでお願いするだけで事が足りる。考えることが大幅に減少する。デキる上司のようなOSさん。いつもありがとう。

OSの機能 2. タスク管理

 ハードウェアの抽象化という、デキる上司のような仕事をしていたOS。
一方、秘書やマネージャーのようなスケジュール&タスク管理もOSは行う。
 いくら技術が進歩しようとも、どうしたって資源は限られる。それ故にOSは、いつ何を実行するかを決定していく。またマルチタスクを管理することも重要な役割になっている。
 地味極まりないといえばそうかもしれないが、私たちも秘書やマネージャーもしくは自らが適切にタスクを裁けなければ、最大限のパフォーマンスが発揮できるだろうか?この質問に、タスク管理の重要性が帰結される。
 OSさん。陰ながら支えてくれてありがとう。

OSの機能 3. ファイル管理

 デキる上司で、良きマネージャーなOS。さらには、場所取り係や荷物番も請け負う。PC上のデータの管理、つまりファイルの管理もしてくれる。
 
PCでは様々なことができる。文章を書いたり、データ解析をしたり、動画編集したり、ゲームをしたり等々。人間は日々PC上で様々なデータを築き上げるが、一度保存をすればPCは私たちの代わりに記憶しておいてくれる。これは大変ありがたい機能だ。
 しかしただ保存するだけではない。自動で整理してくれる。考えてみてほしい。適当に放り込んで置くだけで、きれいに整理される。なんて素敵な機能なんだ….. 私の机にも欲しい。

OSを自作する意義とは?

 とここまで軽くOSについて解説(?)をしてきた。じゃあ何故、自作する必要があるのか。出来合いの物を使えばいいじゃないか。
 確かに使用面だけで考えたらそれで申し分ないだが、理解の上ではそうもいかない。どのようにメモリを確保し、どのようにタスクを管理するのか。ネット上に様々情報はあるものの、実際に体験してみなければわからないことも多くあると思う。ということで、体験と理解の二つを得るためにOSの開発をしていく。

テキスト


 OSに関しても例にもれず、先人の知恵の結晶である書籍の力を借りていく。こちらの本に則り開発をする。

ちなみ開発環境にはWSLgを使用して、WInodws上でUbuntuを介する予定。

以上長文ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?