nandemoYA? 検索

カスタム検索

2016年10月15日土曜日

Windowsマシン

MS-DOSのコマンドラインの一例。画像ではCドライブのルートディレクトリを指定している。

開発元企業 / 開発者 マイクロソフト
プログラミング言語 アセンブリ言語
開発状況 終了
ソースモデル クローズドソース
最新安定版リリース 8.0 / 2000年9月14日(16年前)
使用できる言語 多言語
使用できる
プログラミング言語 C言語、Pascal、QBasic、バッチファイルなど
対応プラットフォーム x86
カーネル種別 モノリシックカーネル
既定のユーザインタフェース キャラクターユーザインターフェース(CUI), テキストユーザインタフェース(TUI)
ライセンス プロプライエタリ


Microsoft Windows は1985年、MS-DOSへのアドオンとしてリリースされた。他のOSに依存していたため、Windows 95 までのリリースはOSではなくオペレーティング環境とみなされている。


MS-DOS(エムエス-ディーオーエス、エムエスドス)とは、マイクロソフトが開発・販売していたパーソナルコンピュータ向けの16ビットのオペレーティングシステム(OS)である。IBMへのOEM供給品であった PC DOS (IBM DOS)を自社製品として供給・販売したもので、バージョン6以降は PC DOS から完全に独立して開発された。


MS-DOS(およびPC DOS等)は、8086系のマイクロプロセッサをCPUとするパーソナルコンピュータ向けのシングルタスクのオペレーティングシステムで、DOS(ディスクオペレーティングシステム)の名の通り、ディスクの管理が主機能である(DOSという名前だからといって必ずしもそうとは限らないが、少なくともMS-DOSのプロセス管理機能は、シングルタスクに代表されるように、低機能・低性能である)。

基本的なユーザーインターフェースはキャラクタユーザインタフェース(CUI)で、コマンドラインインタプリタ COMMAND.COM の表示するコマンドプロンプトにコマンドを与えて操作を行う。一部のメーカーが独自に追加したり、後のバージョンで搭載されたグラフィカルなツールもある。UNIXを参考にした階層型のファイルシステムを持つが、ファイル名の制約などが厳しく機能は低い。

歴史的には1981年にIBMが初代IBM PC用に発売したDOSが「PC DOS」で、1982年よりマイクロソフトがIBM以外のメーカーにOEM提供を開始したものが「MS-DOS」であったが、マイクロソフトは後に1981年から「MS-DOS」と呼んでいる。

両社はバージョン5まではOS共同開発契約(OSクロスライセンス契約)を結んでおり互換性が保たれた。当時は8ビット市場ではCP/Mが事実上の標準であったが、16ビット市場ではPC DOSならびにMS-DOSが主流となった。

特にMS-DOSはインテルのx86系マイクロプロセッサを搭載した各社・各機種のパーソナルコンピュータに移植され、世界的にはPC/AT互換機、日本では日本電気(NEC)のPC-9800シリーズ、富士通のFMRシリーズ、東芝のダイナブックなど各社独自仕様のアーキテクチャに移植された。後にはAXのベース、更には組み込み機器などに、広く普及し主流となった。
しかしMS-DOS(PC DOS)を搭載しているPCであっても、アーキテクチャが異なる機種間ではアプリケーションソフトウェアの互換性はほとんど無かった。MS-DOSは画面描画に関わるAPIを持たないため、グラフィックメモリを操作して画面描画を行うアプリケーションはハードウェアを直接操作せざるを得ず機種依存となったためである。
日本ではソフトウェアのみで日本語表示を可能としたDOS/Vが発売され、漢字V-RAM機能を持たないPC/AT互換機が普及した。
バージョン6からはIBMとマイクロソフトのOS共同開発契約が終了し、後にMS-DOSとPC DOSの単体販売やサポートも終了したため、現在はオープンソースを含めた互換DOSの他、Microsoft Windowsのコマンドプロンプト環境などのDOS互換環境が存在する。

MS-DOSは1995年時点で全世界で1億本を出荷した[1]。




カーネル(英: kernel)は、階層型に設計されたオペレーティングシステム (OS) の中核となる部分である。アプリケーションとハードウェアレベルでの実際のデータ処理との間の架け橋である。システムのリソースを管理し、ハードウェアとソフトウェアコンポーネントのやりとりを管理する[1]。

オペレーティングシステムの基本コンポーネントとして、カーネルはメモリ、CPU、入出力を中心としたハードウェアを抽象化し、ハードウェアとソフトウェアがやり取りできるようにする。また、ユーザープログラムのための機能として、プロセスの抽象化、プロセス間通信、システムコールなどを提供する。

これらのタスクはカーネルによって方式が異なり、設計も実装も異なる。モノリシックカーネルは全てを一つの仮想アドレス空間に格納されたコードで実行して性能を向上させようとする。マイクロカーネルはサービスの大部分をユーザー空間で実行し、コードの保守性とモジュール性を向上させようとする[2][3]。多くのカーネルはこの二つのカテゴリのいずれか、あるいは中間である。


全てではないが、多くのオペレーティングシステム (OS) はカーネルを内包する。ハードウェアとソフトウェアの間の通信を管理するソフトウェアとしてのカーネルは、性能、メモリ効率、セキュリティ、プロセッサのアーキテクチャなどが複雑に絡んだ問題への妥協的解答である。

多くの場合、ブートローダーがカーネルを特権モードのプロセスとして起動する[4]。しかし、初期化が完了すると、カーネルはいわゆるプロセスとしては存在せず、ディスクアクセスなどの高い特権レベルを必要とする処理を必要としたときにユーザプログラムから呼び出される機能の集合体として存在することになる。カーネルの処理の流れはユーザープロセスの処理の流れの延長上にあり、システムコールによってカーネルに処理が渡り、終了するとユーザーに戻っていく。初期化時のコンテキストはそのまま消えるようにする設計もあるが、「アイドルプロセス」とか「collects」と呼ばれる、プロセッサが何もすることがない時に実行されるコードに流用される設計とすることもある。省電力のため、プロセッサが「休む」ような命令を繰り返すようなコードとすることも多い。

カーネル開発はプログラミングの中でも複雑で難しいタスクのひとつと考えられる。オペレーティングシステムの中核部であるということは、高い性能を要求される最重要なソフトウェアであり、正しく設計し実装することは難しい。カーネルはユーザプログラムの互換性や移植性を考慮する必要などから、設計が制限されることもあり、そのことがさらに開発を難しくしている。

0 件のコメント: