質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.09%

OSの機能と役割は何でしょうか?

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,431

strike1217

score 583

ここまで勉強してきて、思ったことがあります。

OSってシステムコール(ソフトウェア割り込み)、ハードウェア割り込み、例外が発生した時に呼び出されるサブルーチンの集合体ですよね??

OSの本を読んでいると、プロセス、ファイルシステムなどたくさんの機能がありますが、どれもこれもシステムコールをトリガーとして呼び出されるプログラムですよね。

特別な場合があるとすれば、
・システムの起動時(ブートストラップ)
・カーネルスレッド

でしょうか・・・

カーネルスレッドがよくわからないのですが、デーモンのようにシステム常駐して動いてるプログラムのことかな・・・と思いますが・・・

以前は、アセンブリ言語レベルの命令の処理をするのに毎回OSの機能を呼び出しているものだと思っていましたが、どうも違うようですね。

プロセッサの違いを吸収しているのは、C言語からしてみるとコンパイラによるものと思います。
ハードウェア(周辺機器)はデバイスドライバ(OSの機能。システムコールによって起動する)
(CPUやメモリ用のデバイスドライバというものがあるのか分からないのですが、メインメモリなどもOSの制御下なんですかね)

ハードウェアの差分を吸収するものなら、BIOSもありますよね?

最近、開発中のエクソカーネルとかなら、カーネルを作らないで、CPUの機能としてハードウェアで埋め込んでしまえば多少CPUのサイズが大きくなってもできるのではないでしょうか?
ハードウェアだけで分岐予測とかもできるようですので・・・
将来はその役割をBIOSとプロセッサのハードに分ければ、カーネルがなくなるかもしれないですね。

(正直、ここからはOSの役割、ここからはプロセッサの役割、ここからはBIOSという境界が見えません。)

えーーと。
つまり、OSの機能は・・・
割り込みや例外を処理するためのプログラムの集合体と考えて良いのでしょうか?
その役割は・・・「ハードウェアの差分を吸収するため」ということですかね?
ハードウェアの差分を吸収するのは、割り込みや例外のためのプログラム群というのも、なーーーんかピンと来ないんですよね・・・

間違いがあったらご指摘ください。

「追記」
カーネルスレッドとは
initはプロセスだと思っていたのですが、カーネルスレッドに分類されるようですね!!

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

視点により回答が異なりそうではありますが、

つまり、OSの機能は・・・
割り込みや例外を処理するためのプログラムの集合体と考えて良いのでしょうか?

そんな感じでいいです。
入出力、同時並行処理などを管理する基本プログラムです。

その役割は・・・「ハードウェアの差分を吸収するため」ということですかね?
ハードウェアの差分を吸収するのは、割り込みや例外のためのプログラム群というのも、なーーーんかピンと来ないんですよね・・・

ハードウェアの差分を吸収することが目的ではなく、ユーザーやアプリケーション・プログラムとハードウェアの中間にあるのがOSです。
差分を吸収する事が結果として含まれているものとしては各社の提供している言語処理系のAPIではないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/30 09:39

    すみません。
    プロテクトモード対応BIOSコールと書いてしまいましたが表現が適切ではありませんでした。

    0x00~0x1Fまでの標準のBIOSコールはプロテクトモードでは使えなくなってしまうので
    新たに0x20以降に割り込み処理ルーチンを定義する。

    その自分で作らなければいけない
    処理ルーチンのことをBIOSコールと言ってしまいましたが
    それはBIOSコールではなく
    どちらかというとシステムコールでしたね。

    キャンセル

  • 2020/01/30 10:09

    >kakazuyakazuyaさん
    その意味でも、ちょっと違うかあるいは誤解があるようです。まず、マザーボード上のROMに有するレガシーBIOSルーチンは、16ビットリアルモード用のものです。
    > 0x00~0x1Fまでの標準のBIOSコールはプロテクトモードでは使えなくなってしまうので新たに0x20以降に割り込み処理ルーチンを定義する。
    IDTのセットアップに伴い、プロテクトモードでの割り込みベクター0x00~0x1Fで指される割り込みルーチンは刷新されます。新たに0x20以降に、と言う訳ではないです。また、そうでないとプロテクトモードにおいて0除算割り込みなど正しくハンドリングできません。

    キャンセル

  • 2020/01/30 11:41

    すみません 失念していました。

    一瞬、一旦プロテクトモードからリアルモードへ移行してから
    BIOSコールを利用すると言う方法が頭を横切りましたが
    それなら、IDTにBIOSコールをそのまま対応させる必要性はなさそうですね。

    キャンセル

+2

OSの中心的な役割は、資源を管理する、ということです。
資源にはCPU自体も含まれます。

どこまでがドライバでどこからがカーネルかとの区別が厳密にできるかどうか分かりませんが、質問者さんが書いていらっしゃる
「CPUやメモリのドライバ」
がOSの基本機能だと思います。

CPUならスケジューラ、ディスパッチャ、メモリならメモリ管理、ページ管理などでしょうか?
ユーザー(でなくても、何かの外部機器)が何かしたとき、それに対してどのプロセスを起動するか、そのプロセスにどれだけのメモリをどこから割り当てるか、どのプロセスを止めるか(CPUが1個しかなければ,他を止めなければならないので…)
などがOSの主たる役割だと思います。

ごめんなさい、エクソカーネルは分かりません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/03 18:46

    CPUやメモリ用のデバイスドライバがOSということですね!!
    周辺機器のデバイスドライバとは別という事ですね。

    BIOSはハードの差分を吸収するためですよね?
    OSが起動した後はBIOSは、不要ですよね?
    なんで、BIOSがハードの差分を吸収しているんですかね??
    OSを起動するためだけのものなのでしょうか?

    キャンセル

  • 2017/07/04 11:27

    複数のハードの上で動作可能なソフトを作ろうとすると、ハード依存とハード独立の二つの部分に分けて作るのは自然な考えだと思います。
    ハード依存部をROMに焼いたのがBIOSではないでしょうか。
    ただ、ハードがどれも似たり寄ったりでOSのパフォーマンスをあげようとすると、BIOSに頼らず、OSが自分で何から何までやってしまう、というのもアリだと思います。

    BIOSの役割・位置は歴史的な経緯もあります。現状でOSがBIOSを利用しているかどうかは私には分かりません。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.09%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る