●オペレーションシステムを構成する3要素
1.カーネル
メモリ等の記憶デバイスの割り当ての制御、周辺機器へのアクセスの制御、プロセスまたはタスクのスケジューリングと実行の制御等を行う。
物理リソースは、デバイスドライバ(ソフトウェアモジュール)を単位として制御する。
論理リソースとはプロセス(タスク又はプログラムのこと)やメモリのこと。
カーネルはプロセスを定義し、制御する内部データ構造を持っている。
また、プロセスのスケジュール、実行、終了も制御する。
その他、メモリ管理(使用可能なメモリを常に把握し、必要に応じてそれをプロセスに割り当て、プロセスから開放されたときやプロセスが終了したときにそれを回収する機能)、プロセス間通信(プロセス間の強調的な通信を処理すること)も重要なサービスだ。
マルチユーザ、マルチタスクのシステムを実現するために、短い時間(タイムスライス)を単位としてタスクにシステムリソースへのアクセスを許可する。
タスクは許可された1又はそれ以上のタイムスライスの間実行され、その後で、一時停止されて他のタスクに実行を譲る。
この方法によって、アクティブな全てのタスクに実行時間が均等に与えられ、全てのタスクが同時に実行しているように見える。
常時動作しているように見えるタスクは、デーモン。
2.シェル
シェルは、ユーザとカーネルとのインタフェースを提供するソフトウェアモジュール。
通常、シェルは、端末又はネットワーク接続からユーザの入力を受け取るが、ファイル、デバイス、又は別のプロセスから受け取ることもできる。
カーネルからの出力も、ファイル、デバイス、別のプロセスにリダイレクトできる。
内蔵のプログラミング言語により、フロー制御、数値データ・文字データの操作等ができる。
3.ファイルシステム
ファイルとは、保存、取得、操作の単位として扱われるバイトの集まりのこと。
ファイルシステムとは、ディスクドライブに階層構造で保存されるファイルの集まりを指す。
ディレクトリと呼ばれる特殊なファイルは、フォルダとして機能し、ファイルを分類するのに使う。
UNIXオペレーションシステムは、ファイルシステムの概念をサポートするために、ファイルシステムの作成、マウント、チェック、修復、複製、バックアップを扱うユーティリティを提供する。
通常、UNIXシステムでアクセスできる記憶域は、複数のファイルシステムに分割されている。
ファイルシステムを分割すると、保守作業が簡単になり、パフォーマンスが改善される。
●主要シェル
シェルの初期設定ファイルは、ユーザアカウントをセットアップするときに便利・重要。
1.Bourneシェル:solaris8のデフォルトシェル。
2.Cシェル:BSD系のシェル。
3.Kornシェル:Bourneシェルをベースに Cシェルの機能を追加。
| 機 能 | sh | csh | ksh | 備 考 |
|---|---|---|---|---|
| エイリアス | × | ○ | ○ | 別名をつける |
| Bourneシェルの構文互換 | ○ | × | ○ | CシェルはC言語に基づく |
| デフォルトのプロンプト | $ | % | $ | Cシェルでは%の前にホスト名をつける |
| ヒストリ機能 | × | ○ | ○ | 定義した数の実行済みコマンドを記録する。 |
| ヒストリ編集 | × | ○ | ○ | 前に実行したコマンドを修正してから再実行 |
| ヒストリ実行 | × | !n | fc | cshの場合nはヒストリリストにあるコマンドの番号を意味する。 |
| 初期設定ファイル:ログイン時 | .profile | .login | .profile | ログイン時、一度実行する必要のあるコマンドを保存する。 |
| 初期設定ファイル:シェル起動時 | × | .cshrc | ユーザ定義 | kornシェルの場合、ENVパラメータを用いてファイル名を指定可能。 |
| インライン編集 | × | × | ○ | コマンド全体を再度入力しなくても、ミスタイプを訂正できる。ミス修正はemacsかviの編集コマンドを使える。 |
| ログアウトファイル | × | .logout | × | - |
| 上書き保護 | × | ○ | ○ | noclobberパラメータを用いて設定可能。 |
| 直前のコマンドの再実行 | × | !! | ○(fc -e) | - |
| 機能限定バージョン | rsh | × | rksh | Bourneシェルの機能限定バージョンは、/usr/lib/rsh(リモートシェルは/usr/bin/rsh)、Kornシェルの機能限定バージョンは、/usr/bin/rksh |
| 開発元 | AT&T | Berkeley | AT&T | - |
●オンラインリファレンスマニュアル
オンラインリファレンスマニュアルのマニュアルページやトピックを端末/モニタスクリーンに表示するには、man(1)コマンドを使う。
AnswerBook2を使うと、Webブラウザを用いて、リファレンスマニュアルを検索、表示、プリントすることができる。
リファレンスマニュアルのページはマニュアルページ(manページ)と呼ばれる。
リファレンスマニュアルは、セクションに分かれ、各セクションは、コマンドの1グループ又はオペレーションシステムの特定の機能を扱う。
| セクション | 説明 |
|---|---|
| 1 | 全てのユーザが使用できるコマンド。BSD Compatibility Packageの一部のコマンド(1B)、システムとの通信に使うコマンド(1C)、Form and Menu Language Interpreterに関連するコマンド(1F)、SunOSシステム固有のコマンド(1S)が含まれる |
| 1M | システム保守と管理に使うコマンド。一部はシステム管理者(root等)用 |
| 2 | 低レベルオペレーションシステムコール。システムリソースのアクセスと制御のためにC言語で使える |
| 3 | システムライブラリ関数。システムリソースのアクセスと制御のためにC言語で使える。さらにライブラリ関数(基本、ネットワーク、スレッド、curses)に基づいて分かれている |
| 4 | 各種システム設定ファイルのフォーマット。C言語からシステムファイルにアクセスするときに使えるC言語データ構造の解説含む。 |
| 5 | 標準、環境、マクロ等 |
| 6 | 使用可能なゲーム又はデモ |
| 7 | 特定のハードウェアに関連する特殊なファイル、デバイスドライバ、STREAMS I/Oサブシステム |
| 9 | カーネルレベルの2つのデバイスドライバ仕様Device Driver Interface(DDI)とDriver/Kernel Interface(DKI)。トピック(エントリポイント、関数、データ構造など)に基づいてさらに分かれている。 |
セクション8はない。
オリジナルのAT&A UNIX SystemVオペレーティングシステムでは、セクション8は特殊なシステム保守手順(System Administration Guideやその他のガイドブック、マニュアルに記載)だった。
man(1)は、manコマンドが「セクション1:ユーザコマンド」にある事を意味する。
| 引 数 | 説 明 |
|---|---|
| name | -f,-k,-M以外の引数には、少なくとも1つのnameが必要。複数のnameを指定するには、空白で区切る |
| - | 出力をmore(1)コマンドに送信しない |
| -a | 全てのマニュアルページを表示する |
| -d | デバッグ情報を表示する |
| -f file ... | 整形済みマニュアルページを一覧に表示する。複数のfileを空白で区切って指定できる。この引数は、マニュアルページではなく、ファイルがどのマニュアルページで参照されているか調べるために使う。 |
| -F | Windex(整形済みマニュアルページに関連付けられたインデックス)データベースを用いてマニュアルページを探す代わりに、全てのマニュアルセクションでnameを検索する |
| -k keyword ... | 指定のkeywordを含む全てのwindexデータベースエントリの概要をプリントする。複数のkeywordを空白で区切って指定できる。この引数は、マニュアルページではな、データベース内にキーワードを探すために使う。 |
| -l | 全ての、マニュアルページの一覧を表示する |
| -M path | マニュアルページファイルの別ディレクトリを指定する。この引数は他のどの引数とでも同時に使える |
| -r -s section... | マニュアルページを再整形する。出力は表示しないで、後のmanコマンドでつかうためにファイルに保存する 指定のsectionのみを検索する。複数のセクションを空白で区切って指定できる |
| -t | troff(1)を使って整形する。-tと-引数を併用すると、出力は表示されず、代わりに後のmanコマンドで使えるようにファイルに保存される |
| -T macro | 標準のマニュアルページ(-man)マクロパッケージの代わりに指定のnroff(1)マクロパッケージを使う |
(例)man(1)マニュアルページを表示する
#man man
(例)passwdという名前のすべてのマニュアルページの一覧を表示する
#man -l passwd
passwd (1) -M /usr/share/man
passwd (4) -M /udt/dhstr/msn
(例)passwd(1)のマニュアルページを表示する
#man passwd
(例)passwd(4)のマニュアルページを表示する
#man -s 4 passwd
(例)すべてのpasswdマニュアルページを表示する
#man -a passwd
(例)manコマンドライン引数を忘れた場合
#man man
マニュアルページは、nroff(1)ソースファイルかSGML(5)ソースファイルとして保存されている。
表示する際に、マニュアルページはnroffコマンドによってオンザフライで整形される。
SGML形式のマニュアルページは、nroffで整形される前に、SGMLプリプロセッサを通過する。
教示と検索のスピードアップのために、整形済みのマニュアルページを作成して保存しておくこともできる。
整形する過程では、マニュアルページキーワードのインデックスも生成される。
このインデックスは、windexデータベースと呼ばれる。
マニュアルページを整形し、windexデータベースを生成するには、catman(1M)コマンドを使う(時間を要する)。
windexデータベースがあれば、マニュアルページ内でキーワードとファイルを検索できる。
(例)/etc/passwdファイルが参照されている場所を検索する
#man -f /etc/passwd
(例)キーワードpasswdを検索する
#man -k passwd
(例)検索過程を表示する
#man -d -l passwd
1つ以上のマニュアルページのnroff又はSGMLソースファイルが更新された場合、-rコマンドライン引数を使って、整形済みマニュアルページも更新可能。
(例)
#man -r man

