23
1. OS概論 2. OSのサービス 1

1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

1. OS概論

2. OSのサービス

1

Page 2: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

OSとは?

• ハードウェアとユーザプログラムの間に位置するプログラム

• 目的

–ユーザに使い勝手のよい環境の提供:

• 拡張マシン:ユーザに見えるのは,裸のマシンではなく,

OSを通した姿

–ハードウェア資源の効率のよい管理

• プロセッサ,メモリ,ディスク,ネットワークインタフェース,入出力装置(マウス,キーボード,ディスプレイ,...)

2

Page 3: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

計算機

ハードウェア

オペレーティングシステム

応用プログラム

(コンパイラ,アセンブラ,エディタ,データベース,...)

ユーザ

図 計算機システム 3

Page 4: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

OSの歴史

• OSの歴史

–計算機アーキテクチャの世代と対応

• 第一世代(1945-55):真空管と配線盤

• 第二世代(1955-65):トランジスタとバッチシステム

• 第三世代(1965-80):ICとマルチプログラミング

• 第四世代(1980-現在):パーソナルコンピュータ

4

Page 5: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

第一世代(1945-55): 真空管と配線盤

• 機械的なリレーを用いていた.

• 巨大で部屋一杯を占領.

• 当初:裸のマシンをユーザが使用

• プログラミング:

–機械語(アセンブリ言語なし)

–制御:配電盤の配線の組み直し

5

Page 6: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

第二世代(1955-65): トランジスタとバッチシステム(1)

• トランジスタの導入

• 計算機の販売促進

• 操作:専用のオペレータ

• プログラミング: – アセンブリ言語,高級言語(FORTRAN)

• 入力方式:カードにパンチ

• オペレータの仕事: – プログラムカードからプログラムを入力する.

– プログラムを実行させる

– 出力結果(プリンタ用紙)をユーザに渡す.

– 歩き回る時間が多い.

6

Page 7: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

第二世代(1955-65): トランジスタとバッチシステム(2)

• デバイスドライバの登場

–入出力制御用プログラムを予めシステムに常駐

• バッチシステムの登場(図 参照) –オペレータの歩き回る時間の短縮

–同じプログラミング言語のプログラムをまとめる.

– コンパイラのロード時間の短縮

• 入力ジョブの実行の自動化

–ジョブ制御言語(Job Control Language)の登場(図 参照)

7

Page 8: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

カード

リーダ

テープ

装置

1401計算機

プリンタ テープ

装置

1401計算機

入力テ

ープ装置

7094計算機

出力テ

ープ装置

システム

用テープ

装置

初期のバッチシステム

入力処理 計算 出力処理

8

Page 9: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

$LOAD

$END

$RUN

$FORTRAN

$JOB, Akira Fukuda Fortran プログラム

データ

FMSジョブ(ジョブ制御言語)

9

Page 10: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

第三世代(1965-80): ICとマルチプログラミング

• 1960年代初頭まで: – 2つのタイプの計算機が存在

• 互換性がない

– タイプ • 科学技術計算用:ワード指向,大規模,高速計算

• 商用計算機:キャラクタ指向で,データのソートや印刷

• 2つのタイプの統合 – IBMのSystem/360

– 集積回路(IC)を用いた最初の計算機

– トランジスタを個別に組み合わせた第二世代計算機よりも価格性能比が優れる

10

Page 11: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

第三世代(1965-80): ICとマルチプログラミング(1)

• OS/360の登場

– System/360用のOS

–巨大で複雑(数百万行)

• マルチプログラミングの登場

–今まで(7094)は,入出力待ちでCPUはアイドルになるだけ

– 1つのジョブしかメモリに同時には格納できない

–解決策:

• メモリを分割して,複数のジョブを格納(図 参照)

11

Page 12: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

ジョブ1

ジョブ2

OS

メモリ

複数ジョブのメモリへの割り当て,マルチプログラミング

12

Page 13: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

第三世代(1965-80): ICとマルチプログラミング(2)

• 入出力の効率化

–ディスクの登場

–プログラムをディスクに格納

–計算機との入出力は,ディスク

–スプーリング

• 応答時間の短縮

– タイムシェアリングシステムの登場

–複数のユーザが(あたかも)同時に使用できる仕掛け

–最初のシステム:CTSS(Compatible Time Sharing System)

13

Page 14: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

第三世代(1965-80): ICとマルチプログラミング(3)

• MULTICS OS – 多様な処理,巨大で複雑

– 多くのアイデア:例 リングを用いた保護,単一仮想アドレス空間など

– 商業的には失敗?

• UNIXの登場 – MULTICSからの反省

– 多様な版: • BSD(カルフォルニア大学バークレイ校)

• System V(AT&T)

– POSIX: UNIXの標準化(組織:IEEE)

• Linuxの登場 – フィンランドの学生(Linus Torvalds)

– 開発スタイルの変化

• 世界中に公開して,大勢で開発・修正

14

Page 15: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

第四世代(1980-現在): パーソナルコンピュータ

• CP/M

–当初Intel 8080用のOS,テスト用

–ディスクベースのOS

• MS-DOS

–マイクロソフト

• Windows

– GUIベース

– Windows95,98,2000,...

15

Page 16: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

OSの種類

• メインフレーム用OS

• サーバ用OS

• マルチプロセッサ用OS

• PC用OS

• リアルタイム用OS

• 組み込み用OS

• スマートカード用OS

– スマートカード:ICチップを埋め込んだカード,ICカード

16

Page 17: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

システムコール

• システムコールとは? – OSがユーザに提供するサービスのこと

– ユーザからは関数呼び出しに見える. • 関数呼び出しとの違い

– 関数呼び出し:同じアドレス空間

– システムコール:ユーザ空間からカーネル空間へ切り替わる

• システムコールの種類 – プロセス管理

– メモリ管理

– ファイルシステム

– その他

17

Page 18: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

プロセス管理

• プロセスの生成,終了

• プロセス間の同期

• 情報取得

■POSIXの例

pid = fork(); プロセスの生成,返り値(pid):親には, 子プロセスのID番号,

子には,0

s = execve(name, argv, environp);プログラムのロード,実行

pid = waitpid(pid, &statloc,options);指定したプロセスを待つ

exit(status):プロセスの終了

18

Page 19: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

ファイル管理

• ファイルのオープン,クローズ

• ファイルの読み書き

• ファイルポインタの移動

• ファイルの情報取得

■POSIXの例

fd = open(file, how, ..);ファイルのオープン

s = close(fd);ファイルのクローズ

n = read(fd, buffer, nbytes;ファイルの読み出し

n = write(fd, buffer, nbytes):ファイルへの書き込み

position = lseek(fd, offset, whence);ファイルポインタの移動

s = stat(name, &buf);ファイル情報の獲得

19

Page 20: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

ファイルのディレクトリ管理

• ディレクトリの作成,削除

• リンク

• マウント関係 – ファイルシステムの連結

■POSIXの例

s = mkdir(name, mode);ディレクトリの生成

s = rmdir(name);ディレクトリの削除

s = link(name1, name2);リンク

s = unlink(name):アンリンク

s = mount(special,name, flag);ファイルシステムのマウント

s = unmount(special);ファイルシステムのアンマウント

20

Page 21: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

その他のシステムコール

• 作業ディレクトリ(working directory)の変更

• 保護モードの変更

• プロセスの強制終了

• ‥

■POSIXの例

s = chdir(dirname);作業ディレクトリの変更

s = chmod(name, mode);ファイルの保護属性の変更(読み出し,書き込み,実行) s = kill(pid, signal);プロセスの強制終了

second = time(&second):時刻の取得(1970.1.1からの経過時間)

21

Page 22: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

UNIX Win32 説明

fork CreatProcess プロセスの生成

waitpid WaitForSingleObject プロセスの待ち

execve 対応なし プログラムの上書き=fork + execve

exit ExitProcess プロセスの終了

open CreateFile ファイルのオープン,または生成

close CloseHandle ファイルのクローズ

read ReadFile ファイルの読み出し

write WriteFile ファイルの書き込み

lseek SetFilePointer ファイルポインタの移動

stat GetFileAttributesEx ファイル属性の取得

UNIXシステムコールとWin32関数(Windows)の対応表(1)

22

Page 23: 1. OS概論 2. OSのサービス - 九州大学(KYUSHU UNIVERSITY) · 2012-09-08 · ICとマルチプログラミング(1) • OS/360の登場 –System/360用のOS

UNIX Win32 説明

mkdir CreateDirectory ディレクトリの作成

rmdir RemoveDirectory ディレクトリの削除

link 対応なし Win32は,リンクをサポートしていない

unlink DeleteFile 既存ファイルの削除

mount 対応なし Win32は,マウントをサポートしていない

unmount 対応なし Win32は,マウントをサポートしていないchdir

chdir SetCurrentDirectory 現在の作業ディレクトリの変更

chmod 対応なし Win32はセキュリティのサポートなし(但しNT

はあり)

kill 対応なし Win32は,シグナルのサポートなし

time GetLocalTime 現在時刻の取得

UNIXシステムコールとWin32関数(Windows)の対応表(2)

23