スポンサーリンク
OS

【OS】全体像

コンピュータシステムの構造

①User
人や機械、他のコンピュータ

②Application program
ワープロ、コンパイラ、ウェブブラウザ、データベースシステム など

③Operating system
→さまざまなアプリケーションやユーザー間でハードウェアの使用を制御したり調整したりする。

④Computer hardware
CPU、メモリ、I/Oデバイス

OSとは?

コンピュータを構成するソフトウェア

応用ソフトウェア

基本ソフトウェアの上で動くソフトウェア。アプリケーション(ソフトウェア)とも言われる、例)WordやExcelなど

ミドルウェア

応用ソフトウェアと基本ソフトウェアの中間に位置し多くの応用ソフトウェアが共通に利用する専門的な機能を提供するソフトウェア

基本ソフトウェア(広義のOS)

ハードウェアを制御したり、様々なソフトウェアの動作を管理するなどコンピュタを動作させるための基本機能を提供するソフトウェアのこと

制御プログラム(狭義のOS)

基本ソフトウェアの核。ハードウェアやソフトウェアの動作を制御するソフトウェア。

言語プロセッサ

JavaやCなどのプログラム言語で書かれたプログラムを機械語に変換するソフトウェア

サービスプログラム

利用者のサポートやシステムの定期作業など補助的に様々な機能を提供するソフトウェア。例)文字のみのファイルを作成したり編集したりするテキストエディタなどがある。

主なOS

UNIX

・もともとの設計が「軽装」であり、プログラム開発などをしやすくするための、少人数によるタイムシェアリングシステムとして作られた。

・ファイルの設計がシンプルで柔軟

・ソースコードがC言語を用いて書かれていたことにより、アーキテクチャが異なるコンピュータへの移植が用意となり普及した

Linux

フィンランドの学生がUNIXと同等の機能を持ったオペレーティングシステム独自に開発した。

詳しくは、過去記事をご覧ください!!
【意外と知らない!?】UnixとLinuxの違いよくプログラマの開発環境はLinux(リナックス)やUnix(ユニックス)と言われていますが、そもそもLinuxやUnixってなんのこと...

Windows

Microsoft社のGUIペースのユーザーインターフェースを持ったPC用のOSとして作られた。

Mac OS

Apple社のPCであるMacintosh(Mac)専用のOSである。スティーブジョブスが創業したNext社のOPENSTEPというOSをベースに開発されたPOSIXに準拠したUNIX系のOSである。基幹部分は、Darwinという名称でオープンソースとしても公開されている。

Android

Google社がLinuxをベースにしたスマホやタブレットむけて開発したOSであうr。オープソースで公開されており、ハードウェアメーカ各社が自由にカスタマイズして提供することができるため、スマホ向けOSとしては最も普及している。Linuxベースのカーネル、ライブラリ、Android Runtime(ART)仮想マシン、Javaで書かれた各種応用プリグラムから構成されている。

iOS

Apple社がMac OSをベースにしてiPhoneやiPadむけに開発したOSである。マルチタッチやジェスチャなどを活用した新しいインターフェースを提供している。

OSの役割

コンピュータを使いやすくする

ハードウェアはマシン語(0,1の言語)でなければ操作できない。コンパイラやインタプリタはマシン語の翻訳を行ってくれるが、それだけではハードウェアの複雑な機能をフルに利用することはできない。そのために、プログラミング言語で作られた応用プログラムがハードウェアの各機能を利用できるようにする為や人間が利用しやすくする為のプログラムとしてオペレーテインングシステムが作られた。

コンピュータを効率的かつ公正に使う

処理速度が遅い人間が行うのではなくコンピュータないの特別のプログラムで行う方が良いです。またユーザープログラムの実行を制御して、エラーやコンピュータの不適切な使用を防ぎます。

複数の利用者がコンピュータシステムのリソースを共用できる

コンピュータのプロセッサやメモリを複数人で共用して使ったり、インターネットを介した情報の共有をサポートする役割を果たす。

利用者に使いやすい理想的なマシンを提供する

利用者や応用プログラムに対してより抽象レベルの高い機能をオペレーティングシステムが提供するようにした。

利用者のデータを適切に管理する

利用者個人の重要なデータがコンピュータ内に保存されるようになった。そのために重要なデータの適切な管理が重要になっている。

OSの主な使用目的

①コンピュータを使いやすくすること
②ハードウェアを効率的な方法で利用すること

OSの提供する機能

UI=ユーザーインターフェース

ユーザーはUIを使ってコンピュータシステムを操作したりプログラムの実行を制御する。

API=アプリケーションプログラミングインターフェース

入出力機器に対して入出力を行いたい場合、OSの特定の機能を呼び出すことによって、それを依頼する。依頼されたOSは、実際の入出力の複雑な制御を応用プログラムに変わって行う。このことにより、応用プログラムは、入出力の副座具な制御にかかわずに済む。

通信インタフェース

他のコンピュータとの通信のための通信インターフェースを持つ。利用者や応用プログラムは、この通信インターフェースを介してインターネット上のコンピュータと通信をする。

コンピュータシステムの構成

デバイスコントローラ

デバイスコントローラは、割り込みを発生させて、操作を終了したことをCPUに知らせる

割り込み

・内部割り込み→プログラムの原因
プログラム割り込み(0割り算など)、svc割り込み(監視プログラム)

・外部割り込み→ハードウェアの原因
マシンチェック割り込み(ハードウェアの誤動作)、入出力割り込み(入出力動作が終了した時)、タイマ割り込み(プログラムの割り当てられた時間を超えたとき)

ストレージデバイス

 

レジスタ

一般に、論理回路において、フリップフロップなどにより状態を保持する装置をレジスタと呼ぶ。

キャッシュ

主記憶と補助記憶の読み書き速度の差を埋めるためのCPUと主記憶の間に介在させるメモリのこと(SRAMなど)

メインメモリ

プログラムやデータを一時的に蓄えておくための装置で、CPUの命令で直接アクセスできる装置のことである。

不揮発性メモリ

電源を供給しない(リフレッシュ)と記憶している情報を保持できない性質(のメモリ)のことである

HDD(hard disk driver)

磁性体を塗った薄い円盤に磁気の力を使って、データを読み出したり、書き込んだりする。

光ディスク

薄い円盤にレーザー光を当てることによってmデータを読み出したり、書き込んだりする。例)CD, DVD, BD

磁気テープ

粉末状の磁性体をテープ状のフィルムに、バインダー(接着剤)で塗布または蒸着した記録媒体で、磁化の変化により情報を記録・再生する磁気記録メディアのこと

現代のコンピュータのしくみ

アメリカの数学者フォンノイマンが提唱した『プログラム格納方式』というものである。プログラムを主記憶に格納し、CPUが順に読み出し実行する。命令の実行サイクルは次のようになる。

①命令フェッチ(Fetch) 命令を主記憶から取り出し、CPUのレジスタに取り込む
②命令の解読( Decode) 命令を解読する
③実行アドレス計算(Address Calculation) オペランドの格納場所を計算して求める
④オペランド読み出し(Read) 主記憶の実行アドレスにアクセウスし、オペランドを読みだす
⑤実行(Execution) 命令を実行し、必要に応じて結果データを主記憶に書き込む

コンピュータシステムアーキテクチャー

マルチプロセッサシステム

1台のコンピュータに複数のCPUを搭載して一連の処理を行うことです。

メリット

スループットの向上

スループット:単位時間あたりに処理できる量

省電力

 

信頼性の向上

 

タイプ

非対称型(密結合)マルチプロセッサ(Asymmetric Multiprocessing)

現在のCPU高速化技術の周流になっている

複数のプロセッサがメインメモリを共有し、一つのOSによって制御されるもの

マルチコア(密結合マルチプロセッサ の一形態)

外見的には1つのプロセッサでありながら論理的には複数のプロセッサとして認識されるため、同じコア数のマルチプロセッサと比較して実装面積としては省スペースであり、プロセッサコア間の通信を高速化することも可能である。

対称型(疎結合)マルチプロセッサ(Symmetric Multiprocessing )

それぞれのCPUが対等でどのCPUでも同じ処理が行える

複数のプロセッサがそれぞれメインメモリなどを持ち、別々のOSインスタンスによって動作するもの

レジスタやキャッシュを共有している

クラスタシステム

複数のコンピュータが連結され、利用者や他のコンピュータに対して全体で1台のコンピュータであるかのように振舞うシステム

OSが行う操作

同時にタスクを行う

マルチプログラミング

CPUが常に実行するジョブを持つようにすることで、CPU使用率を増加させることができる。複数のタスクを並行して実行する機能のこと。 CPUは複数の処理を完全に同時実行できないため、OSが強制的に管理して切り替える

バッチシステム

バッチシステムはマルチプログラミングですが。ユーザーとの対話を許可しない。複数のプログラムからなる作業において、あらかじめ一連の手順を登録しておき、まとめて連続的に実行する方式。または、一定期間や一定量ごとにデータをまとめて一括して処理する方式。初期のコンピュータで、プログラムのコンパイルと実行の操作を人間が行う代わりにプログラムで連続的に行い、コンピュータの使用効率を上げることが工夫されたこの方式をバッチ処理と呼ぶ。

マルチタスク

システムなどが、同時に複数のタスク(作業、処理)を並行して実行すること。また、OSがコンピュータやマイクロプロセッサ(CPU/MPU)をそのように運用すること。

タイムシェアリングシステム

タイムシェアリングシステムはマルチプログラミングされておりユーザーとの対話が可能。コンピュータの処理時間を決まった短い時間に分割し、それぞれ異なる利用者やプログラムに順番に割り当てることで、複数の主体が同時に効率的にコンピュータを利用できるようにするシステム。

ユーザーモードとカーネルモード

CPUには、ユーザーモードとカーネルモードの2つのモードがあります。通常、OSは各種プログラムをプログラムという単位で実行しますが、プロセスはユーザーモードで動作します。そして、プロセスからデバイス(ストレージやネットワークアダプタなど)を操作したい場合に。デバイスドライバを介してデバイスにアクセスします。デバイスドライバは、カーネルモードで動作します。

なぜ2つのモードがあるのか

仮にプロセスが自由にデバイスへアクセスできるとすると、複数のプロセスが1のデバイスに操作することができてしまいます。そういった事態を防ぐため、Linuxではプロセスから直接デバイスへアクセスできないようにユーザーモードとカーネルモードという2つのモードを用意し、カーネルモードで動作している時のみデバイスにアクセスできるようにします。

ユーザーモードからカーネルモードへの移行

プロセス管理

プログラムは、CPUが実行できる機械命令の集まりのことです。プログラムが実行されるとプロセスになります。

スレッドプロセス

・シングルスレッドプロセス
実行する次の命令の場所を指定するプログラムカウンターがある。

・マルチスレッドプロセス
スレッドごとにプログラムカウンターがある。

プロセス管理はどのようなことをするか

ユーザープロセスとシステムプロセスの両方を作成、削除

 

プロセスの中断と再開

 

プロセス同期のメカニズムを提供する

 

プロセスコミュニケーションのメカニズムを提供する

・カーネルやプロセスにメッセージを渡す
・メモリの共有

デットロック処理のメカニズムを提供する

 

メモリ管理

プログラムを実行するには、命令とプログラムが必要とするデータの全て(または一部)がメモリ内にある必要がある。(プログラム格納方式)メインメモリは全てのデータとプログラムを収納するには小さすぎるのと、電源が失われるとデータが失われてしまうので二次記憶領域にバックアップをとる必要があります。

メモリ管理はどのようなことをするか

メモリのどの部分が現在利用され、誰によって使用されているかの追跡

 

どのプロセスとデータをメモリに出し入れするかの決定

 

メモリ領域の割り当てと解放

 

ファイルシステム管理

ディレクトリ(ファイル)に構成する。

【一文字で全てを表す?】重要なディレクトリ(ファイル)と表現方法そもそもファイルとディレクトリってなに? テキストや写真、動画などのファイルはコンピュータ上で全てファイルという概念で扱われます。 ...

ファイルシステム管理はどのようなことをするか

ファイルとディレクトリの作成と削除

 

ファイルとディレクトリを操作する

 

ファイルを二時記憶領域に移す

 

不揮発性の記憶領域にファイルをバックアップする

 

大容量ストレージ管理

通常、メインメモリに収まらないデータや「長期間」を保存する必要があるデータを保存するために使用されるディスクのこと

大容量ストレージ管理とはどのようなことをするか

マウントとアンマウント

 

空きスペース管理

 

ストレージ割り当て

 

ディスクのスケジューリング

 

パーティショニング

 

キャッシング

主記憶として使われるメモリ(DRAM)などは、補助記憶よりも読み書き速度は速いが、CPUに比べるとまだまだ遅いので、その差を埋めるために、CPUと主記憶の間に高速なメモリ(SRAM)を在させる。このメモリ(SRAM)のことをキャッシュメモリと言い。そのことをキャッシングという。

保護とセキュリティー

保護

OSによって定義されたリソースへのプロセスまたはユーザーのアクセスを制御するもの

セキュリティー

内部および外部の攻撃に対するシステムの防御
→ワーム、ウイルス、個人情報の盗難など幅広い

 

仮想化

OSが他のOS内でアプリケーションを実行できるようにする。

分散システム

分散コンピューティング

一緒にネットワーク化された

 

カーネルデータ構造

連結リスト

双方向連結リスト

循環連結リスト

2分木

ハッシュ

コンピューティング環境

モバイル

スマートフォンやタブレットなど

クライアントサーバー

ピアツーピア

クラウドコンピューティング

リアルタイム組み込みシステ

組み込みシステムがある入力を受けてから出力するといった処理に、時間的制約が設けられる性質のことです。

 

スポンサーリンク