忍者ブログ
考えるLINKは優良なサイトを紹介しています。
[1]  [2]  [3
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

既読分

まとめ

実際に何らかの作業をするには、OSはコンピュータに接続された周辺機器にアクセスする必要があり、周辺機器はその開発元などが書いたデバイスドライバを通して制御される。
例えば、ユーザーが何かを画面に表示したいなら、文字やピクセルを表示させるためにカーネルを通してモニターのドライバ(VGAとかVESA)を使用する。
デバイス管理は最初に様々なバス(PCIやUSB)上をスキャンして実装されたデバイスを検出し、対応するドライバを探す。
デバイス管理は各OS固有の部分であり、カーネルの設計によってドライバの扱い方は異なるが、一般にカーネルはドライバが物理的にデバイスにアクセスするための入出力ポートやメモリ空間を用意する必要がある。
デバイスへのアクセスはコンテキストスイッチを引き起こしたり、CPUを無駄に浪費したりすることになり易く、性能オーバヘッドの元となるため、デバイス管理の設計は重要である。
直接的なデバイス管理の上にファイルシステムや通信プロトコルが実装される。



なるほど
PR
まとめ
既読分

カーネルはシステムの全メモリへの無制限のアクセスが可能で、ユーザープログラムの要求に応じて安全なメモリアクセスを提供しなければならない。
このための第一歩はページング方式やセグメント方式による仮想アドレッシングである。
仮想記憶方式では、カーネルは物理アドレスを別のアドレス、つまり仮想アドレスに変換する。
これにより、各プログラムは(カーネル以外では)仮想空間上唯一のコードに見え、プログラムが互いに他のプログラムを破壊することを防止する。
仮想アドレッシング方式では、仮想空間をカーネル用の部分(カーネル空間)とアプリケーション用の部分(ユーザー空間)に分けることが出来る。
この根本的な分離は多くの汎用カーネルで実際に使われている。
複数のプログラムを同時並行的に動作させるため、OSはそのシステムのメモリ容量以上のメモリを必要とすることがある。
その一般的解決策は仮想記憶である。
仮想記憶では、カーネルがメモリの一部を他(例えばハードディスク上のスワップファイルなど)に移し、必要に応じてメモリに復帰させる。
メモリ管理のもうひとつの機能として、カーネル内の各モジュールやデバイスドライバが使用するメモリの割り当てがある(動的メモリアロケーション)。


あま~~~~~~~い
忍者ブログ [PR]