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

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

新規登録して質問してみよう
ただいま回答率
85.48%
OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

Q&A

解決済

2回答

3739閲覧

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

strike1217

総合スコア651

OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

0グッド

0クリップ

投稿2017/07/02 11:50

編集2017/07/03 09:48

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

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

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

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

でしょうか・・・

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

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

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

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

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

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

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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

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

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

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

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

投稿2017/07/02 12:05

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

strike1217

2017/07/02 12:10

「ハードウェアの差分を吸収することが目的ではなく、」 そうなんですか! では、ずばりOSの役割とは何でしょうか?
moonphase

2017/07/02 12:16

> 「ハードウェアの差分を吸収することが目的ではなく、」 > そうなんですか! 目的は対象のハードウェアを使えるようにすることであって、差分を吸収する事が目的ではないんじゃないかなって事です。物理的に異なる同じタイプのハードウェアがあったとして、物理的に無いものの差分は吸収できませんから。 > では、ずばりOSの役割とは何でしょうか? 回答にも記載していますが、 「入出力、同時並行処理などを管理」です。
strike1217

2017/07/02 12:22

「ハードウェアを使えるようにすること」 なるほど!ハードウェアの管理といった感じですかね
strike1217

2017/07/03 09:46

BIOSとOSはどのように違うんでしょうか?
moonphase

2017/07/04 00:57

BIOSはファームウェアの一つです。PCの電源ONと同時に実行され、ハードウェアの初期化を実施し、記憶装置からブートローダーを呼び出し、OSのロードと起動までを担います。(プロテクトモードで動作するOSに限る。例:WinNT, Linux等)
strike1217

2017/07/04 01:17

つまり、起動の時以外は必要ないもの!という事ですかね? 最近のはUEFIですが、OSが起動してしまった後はもう用済みという事ですね?
strike1217

2017/07/04 03:29

ん?あ、もしかして、リアルモードで動作するOSの場合は、OSがBIOSの機能を利用するんですか? 最近のプロテクトモードのOSでは、BIOSは起動の時のみ必要で、起動した後は不要という事ですかね?
kazuyakazuya

2020/01/29 22:51

リアルモードのときはBIOSコールを利用して プロテクトモード移行後は プロテクトモード対応させた BIOSコールを使うことになるのだと思います。 (ですよね?。。。)
dodox86

2020/01/29 23:51 編集

>kakazuyakazuyaさん > プロテクトモード移行後はプロテクトモード対応させたBIOSコールを使うことになるのだと思います。(ですよね?。。。) そうではありません。基本的に、プロテクトモード対応OSはブート後にBIOSコールをすることはありません。プロテクトモード対応BIOSと言うものはありません。UEFIが内包するBIOS相当のサービスをそう言って言えなくもないとは思いますが、ブートした後はLinuxやWindowsなどのOSが自前で持つドライバーを利用してアクセスすることがほとんどで、UEFIのサービスを必要としません。 ですので質問主であるstrike1217さんが書かれている「最近のプロテクトモードのOSでは、BIOSは起動の時のみ必要で、起動した後は不要」は、その通りです。 (もう2017年7月に閉じられた質問なので、この辺にしておきます)
kazuyakazuya

2020/01/30 00:39

すみません。 プロテクトモード対応BIOSコールと書いてしまいましたが表現が適切ではありませんでした。 0x00~0x1Fまでの標準のBIOSコールはプロテクトモードでは使えなくなってしまうので 新たに0x20以降に割り込み処理ルーチンを定義する。 その自分で作らなければいけない 処理ルーチンのことをBIOSコールと言ってしまいましたが それはBIOSコールではなく どちらかというとシステムコールでしたね。
dodox86

2020/01/30 01:09

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

2020/01/30 02:41

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

0

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

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

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

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

投稿2017/07/03 02:32

nob.

総合スコア711

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

strike1217

2017/07/03 09:46

CPUやメモリ用のデバイスドライバがOSということですね!! 周辺機器のデバイスドライバとは別という事ですね。 BIOSはハードの差分を吸収するためですよね? OSが起動した後はBIOSは、不要ですよね? なんで、BIOSがハードの差分を吸収しているんですかね?? OSを起動するためだけのものなのでしょうか?
nob.

2017/07/04 02:27

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問