OS---WindowsとLinux
『OS(Operating System)』とは
- OS
コンピュータにおいて、ハードウェアを抽象化したインターフェースを提供する基本ソフトウェア。
メモリ・ディスク管理・入出力機能等、多くのアプリケーションソフトウェアが必要とする機能を提供し、
コンピュータのシステム全体を管理します。
WindowsとLinuxの違い
- ソース公開
- ライセンス制限
- W::ライセンス制限有
購入したライセンスの数だけインストールできます。 - L::ライセンス制限無
フリーソフトウェアです。
また、修正・再配布・販売も自由に行えます。
- W::ライセンス制限有
- サポート
- インターフェース
- W::GUI(Graphical User Interface)
ボタン操作を中心とした、直感的な入出力。
エンドユーザー向きです。 - L::CUI(Character User Interface)/ CLI(Command Line user Interface)
コマンドを利用した文字入出力。
コマンドを組み合わせることで、幅広い処理を実現できます。
開発者向きです。
- W::GUI(Graphical User Interface)
- ユーザ概念
- W::シングルユーザ
1台のコンピュータを1人が使う(=クライアントOS)、という前提。
他のユーザが作成したファイルも閲覧・編集できます。 - L::マルチユーザ
ネットワークを通じて1台のコンピュータを複数人が使う(=サーバOS)、という前提。
他の人が作成したファイルは閲覧できません。
- W::シングルユーザ
- タスク処理
- W::シングルタスク
複数のプログラムを立ち上げることはできますが、どれかがフリーズした場合、
OS自体が影響を受け、他のプログラムも動かなくなります。 - L::マルチタスク
プログラムの1つがフリーズしても、OSに影響することはありません。
プログラム単体で強制終了させることができます。
- W::シングルタスク
Linux
- ユーザ概念
Linuxでは、1台のコンピュータを複数のユーザが使うことを前提としています。- 一般ユーザ
他のユーザが作成したリソースへのアクセスは制限されます。 - root(管理者)
すべてのリソースへアクセスできます。 - グループ
複数の一般ユーザのまとまり。
一般ユーザは複数のグループに所属することもできます。
- 一般ユーザ
オーナー ディレクトリ / ファイル │ グループ ↓ ↓ ↓ d rwx r−x −−− 3 apoco apoco 4096 Jun 18 23:08 apoco (パーミッション:750) − rwx rwx r−x 1 admin admin 108 Jun 19 17:27 ruby_server.sh (パーミッション:775)  ̄  ̄ ̄ ̄  ̄ ̄ ̄  ̄ ̄ ̄ │ │ └他ユーザのアクセス権 │ └所属グループのアクセス権 └オーナーのアクセス権
d / - | r / - | w / - | x / - |
---|---|---|---|
ディレクトリ / ファイル | 読み出し可 / 不可 | 書き込み可 / 不可 | 実行可 / 不可 |
ファイルのパーミッション | ディレクトリのパーミッション | |
---|---|---|
r(読み出し可) | そのファイルを読める | そのディレクトリを ls(中を閲覧)できる |
w(書き込み可) | そのファイルを変更できる | そのディレクトリの中でファイルを作成・消去できる |
x(実行可) | そのファイルをプログラムとして実行できる | そのディレクトリの中のファイルにアクセスできる |
4 | 2 | 1 | パーミッション |
---|---|---|---|
r | w | x | 4+2+1= 7 |
r | w | - | 4+2+0= 6 |
r | - | x | 4+0+1= 5 |
r | - | - | 4+0+0= 4 |
- | - | - | 0+0+0= 0 |
- コマンド
主なコマンド | 処理 |
---|---|
su | ユーザ変更 |
ls | カレントディレクトリ内のディレクトリ・ファイル一覧表示 |
cd | カレントディレクトリ変更 |
pwd | カレントディレクトリ表示 |
mkdir | ディレクトリ新規作成 |
rm | ファイル削除 |
chmod | パーミッション変更 |
cat | ファイル内容表示 |
grep | 文字列検索 |
- テキスト処理
- リダイレクション(入力:ファイルからデータを読み込み、コマンドに実行させる)
- コマンド < ファイル名
- リダイレクション(出力:コマンドの処理結果をファイルに出力する)
- コマンド > ファイル名 (上書き)
- コマンド >& ファイル名 (エラーも上書き)
- コマンド >> ファイル名 (末尾に追加)
- パイプ(前のコマンドの処理結果を、後のコマンドに渡す)
- コマンド | コマンド
- リダイレクション(入力:ファイルからデータを読み込み、コマンドに実行させる)
$ ls -l | grep "hoge" >> fuga.txt
- プロセス
- プロセス
複数のプログラムを立ち上げるとき、個々のプログラムが管理される単位のこと。
簡単に言えば、動作中のプログラムのことです。
ひとつのプログラムに対し、複数のプロセスを作ることもできます。
その場合、プロセスごとに振られる『プロセスID』で判別します。
プロセスのメモリ空間は別々に管理され、互いに干渉しません。
一時停止や終了も、個別に行うことができます。
マルチタスクを実現可能にしているのは、以下の仕組みです。
これらにより、各プロセスから見たCPU&メモリが、そのプロセス専用であるかのように見えるのです。- 仮想CPU
CUPが実行するプロセスを、非常に短い時間単位で切り替えることで作り出します。 - 仮想メモリ
プロセスに対して仮のメモリアドレスを用意し、必要なときだけ実際のアドレスを割り当てることで作り出します。
- 仮想CPU
- プロセス
- シェルスクリプト