[新卒が作る自作OS] OSって何?

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

初めまして、本年度サイオステクノロジー株式会社に入社いたしました新卒の野口太郎です。私は現在、業務の一環として、同じく新卒の萩原・藤原と共に、自作OSを作成を行っています。

本投稿、[新卒が作る自作OS]では、我々が自作OSを作るにあたり、詰まったところや、備忘録的に残しておきたいところなどをまとめておこうという趣旨の投稿です。

間違っている認識も多々あるかとは存じますが、どうか温かい目で見てくださると幸いです。

 

今回は、OSを作るにあたり、OSとは何か、何をしているかということについてまとめておこうと思います。

各記事へのリンク

[新卒が作る自作OS] OSって何?

[新卒が作る自作OS] OSの全体像

[新卒が作る自作OS] OSってどうやって起動するの?

[新卒が作る自作OS]ソースコードの分割とmakeによる自動コンパイル

[新卒が作る自作OS] ポインタの&と*ってなんだっけ?C言語

[新卒が作る自作OS]コンパイラの仕組み

[新卒が作る自作OS]C言語からアセンブリ言語を呼び出す方法

OSとは

まずはじめにOSとは何かをWikipediaで調べてみます。

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

言葉の意味そのままですね。では、OSが操作・運用・運転するコンピュータとはどのようなものを指すのでしょうか?そして、どのようにしてそれらを司っているのでしょうか。

コンピュータとは

中学校でも習いますが、コンピュータは

  • 制御装置(チップセット等)
  • 演算装置(CPU)
  • 記憶装置(メモリ・ハードディスク等)
  • 入力装置(マウス・キーボード等)
  • 出力装置(モニタ・プリンタ等)

の五大装置で構成されています。

これらの装置は物理的な装置で、電気や磁気の信号が0と1の情報に解釈されて流れているにすぎません。例えば、ハードディスクは以下の図のように、金属製のプラッタが帯びている磁気をヘッドが読み取り、電気信号で0と1の情報を表現し、制御装置に渡している装置です。

しかし、我々がハードディスクを扱うときは0と1の情報なんて扱うことはありません。マウスを動かし、ファイルを開いたり編集したりすることができます。

この物理的な装置と我々の間のギャップを埋めてくれているのがOSなのです。

OSの役割①:抽象化

一言でいえばOSはコンピュータを抽象化するシステムです。

例えば、ファイル操作を例にとって考えると、OSは「ハードディスクのヘッドを動かしてフラッタを読み取る」という動作を、「マウスを動かしてファイルを開く」という動作に抽象化しています。また、「マウスを動かす」という動作も、「マウスから送られてくる移動量の情報」を抽象化して画面に描画しています。

これらと同じように、OSは物理的な装置の動作を、分かり易い操作に抽象化して我々に提供しています。

これこそがOSの本質で、OSがないと我々はコンピュータを扱うことができないといっても過言ではありません。

OSの役割②:資源の管理

OSのもう一つの役割が、抽象化された資源の管理を行うことです。

コンピュータには様々な資源があります。

メモリ空間、CPUのプロセス、ディスクの書き込み制限、etc…

これらの資源を適切に管理しないとコンピュータは我々が想定していない動きをすることがあります。

例えば、以下のように、あるファイルをAさんとBさんが同時に開いて異なる変更を行っています。

ファイルを開くとファイルの中身はいったんメモリの中に移され、自由に変更を行うことができます。ここで、Aさんが先にファイルをディスク保存しました。その後、Bさんがファイルをディスクに保存したとすると、Aさんが行った変更は上書きされ、Bさんのファイルがディスクに保存されてしまいます。これでは、Aさんのファイルの変更は失われてしまいます。

今回の場合、同じファイルが同時に編集できないようにすることで、問題を回避できます。しかし我々はファイルを編集するときに、他の誰かがファイルを開いているなどということを気にすることなく操作することができます。

このような資源の管理を行ってくれるのがOSのもう一つの役割です。

OSではこれらの資源の管理を行うことで、効率的に計算や処理が行えるようになります。

まとめ

今回は私たちがこれからOSを作るにあたり、OSとは何か、どのような役割を持っているのかということを自分なりにまとめてみました。これから作り上げていくものは、コンピュータの抽象化/資源管理を行うものだと念頭に置いたうえで、開発を進めていきたいと思います。

ではまた。

アバター画像
About 野口 4 Articles
OSSよろず相談室サポートエンジニア。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる