計算機システム概論

計算機システム概論・7回目
本日のトピック:やや先進的な話題
OSのネットワーク機能について
OSを起動する仕組み
試験の実施方法について
1
OSのネットワーク機能について:歴史
最初はネットワーク機能なし
基本的に,コンピュータは単体で使用するもの
(スタンドアローン形態)
peer-to-peer 接続 (1対1接続) の開始
ネットワーク機能は,入出力装置の一種
低レベルの通信制御機能を提供
アプリケーション
抽象レベル
(論理性)
高
入出力
管理
機構
低
プロセス メモリ
管理 管理
機構 機構
ネットワーク管理機構
OS
2
歴史的な流れ(2)
多対多接続とサービスの拡大
より抽象的で論理的なサービスの提供
抽象レベル
高
入出力
ネット
プロセス
ワーク
低
抽象レベル
ネットを介した資源共用の窓口
ファイルやプリンタなどの資源を,複数の計算機で
共用する機能を提供
高
入出力
ネット
プロセス
ワーク
低
3
歴史的な流れ(3)
ネットを介した計算能力の提供窓口
プログラムやサービスの一部を,ネットワーク上の
他の計算機にて実行
クライアント・サーバ型サービスから分散型プロセスへ
(ネットワークの隠蔽)
ネットワークは,サービスを提供する「手段」の一部
ネットワークを意識せずに操作ができる...
抽象レベル
高
入出力
低
ネット
プロセス
ワーク
入出力
プロセス
ネットワーク
4
プロトコル
ネットワークの利用 = 異なるコンピュータ間での「対話」
「対話」のための約束事をきめておく必要がある
=「プロトコル(通信プロトコル)」
プロトコルのジレンマ:
同じプロトコルを使わないと,対話ができない
⇒全員を縛るような標準化が必要
ネットワーク技術は進歩が速い
⇒過去に縛られない柔軟性が必要
5
プロトコルの階層型設計
プロトコルのジレンマへの対処:
⇒ プロトコルを階層的に設計する
下は,ハードウェアに依存する階層
上は,高度に論理的な階層
各階層の「部品」を交換すれば,柔軟に拡張可能
各部品の仕様(機能)だけを決めておけばよい
6
代表的な階層型モデル
どのように階層化するのが良いか
OSIの7階層モデル
デファクトスタンダードの5階層モデル(TCP/IPモデル)
アプリケーション層
プレゼンテーション層
セッション層
L4 トランスポート層
L3
ネットワーク層
L2
データリンク層
物理層
OSIの7階層モデル
アプリケーション層
区別する意義
があまりない
トランスポート層
インターネット層
データリンク層
物理層
5階層モデル(TCP/IPモデル)
7
TCP/IP
TCP/IP:元来はARPAネット,BSD版UNIXでの開発・実装
インターネットの「事実上の標準(デファクトスタンダード)」
TCP: 5階層モデルのトランスポート層に相当
IP:5階層モデルのインターネット層に相当
応用プロトコル
TCP, UDP
IP
IP
IP
アプリケーション層
トランスポート層
インターネット層
データリンク層
物理層
ホストA
ルータ
ルータ
ホストB
8
階層モデルとOSの機能
プロトコル階層の全機能を,OSが提供するわけではない
典型的な「切り分け」方
アプリケーション層 アプリケーションソフト
トランスポート層
カーネル
インターネット層
デバイスドライバ
データリンク層
物理層 機器のファームウェア
トランスポート層の機能が,ユーザにサービスを提供
「ソケット」と呼ばれるAPIを利用して,
「ポート」と呼ばれる機構を提供
9
ポート
アプリケーション層:多くのアプリケーションプロセスが存在
Web, telnet, ftp, ….
情報の出入り口(インタフェイス):1~数個
受け取った情報を,アプリケーションに振分ける機構が必要
⇒ ポート = 私書箱,のようなもの
httpd
80
telnetd
23
ftpd
21
「宛先は hostA の 23 番ポート」
hostA
10
ポート管理とサービスの提供
標準的なサービスを提供するアプリケーション:
あらかじめ特定のポート番号が割り振られている
http…80番,telnet…23番,ftp…21番,smtp…25番
一般のプロセス:「予約」されていない番号を利用する
サーバS
httpd
予約済番号
未使用番号の一つ クライアントC
80
3820
explorer
telnetd
23
4719
firefox
宛先:S の 80 番,発信元:C の 3820 番
要求内容:http://… の内容を送れ
宛先:C の 3820 番,発信元:S の 80 番
応答内容:<HTML><HEAD>…
11
ソケット
ポートは,OSが提供する資源の一種
プロセスがポートを使いたい時は,OSからポートを「借りる」
プロセス内部に「ソケット」を準備する
ソケットとポートを接続する
(通信相手でも,同様の対応をしておいてもらう)
1
プロセス
2
プロセス
79
12
ソケットを利用した通信
ソケットに関して, OSが提供する機能(システムコール):
ソケットを新しく作る socket()
ソケットとポートを結びつける bind()
情報を受け取れる状態にする listen()
ポートを介して,2個のソケットを結びつける connect()
情報の送受信 read(), write()
ソケットを閉じる close()
socket()
bind()
listen()
read(), write()
close()
socket()
bind()
connect()
write(), read()
close()
受動側ホスト
能動側ホスト
13
ソケットについて,余談
ソケットは,同一ホストの他のソケットにも情報送受信可能
同一ホスト内で使用する場合,ポートは割り当てない
ファイル名を割り当てて,ソケットの住所代わりに
プロセス
プロセス
ファイル
外部への接続の場合
プロセス
内部での接続の場合
プロセス間通信の道具にもなる
14
この続きは,専門の科目で...
15
OS起動の仕組み
コンピュータは,メモリ上のプログラムしか実行できない
電源投入直後は,メモリの内容は空
OSを,どこかから持ってくる必要アリ
どこにあるのか,どうやって持ってくるのか....
⇒ プログラムにより,コンピュータに指示する必要あり
⇒ ブートストラップのジレンマ
http://www.devdrv.co.jp/hidaka/node/18
にあったイラストから
16
電源投入からOS起動まで
ブートストラップ処理は,時代によって変遷してきた
ここで紹介するのは,今日の典型的なPCの場合
基本的な流れ
1. ハードウェア的に固定されたBIOSが起動
2. BIOSが,ブートに用いるデバイスを特定
3. 特定されたデバイス内のブート用プログラムに制御が映る
4. ブート用プログラムがOSを読み込み,制御を渡す
5. OSが各種の処理を開始する
BIOS
ブート用
プログラム
OS
17
BIOS
Basic Input and Output System (基本入出力システム)
ROMやフラッシュメモリ等,不揮発性メモリに格納される
電源起動直後にBIOSを読み込むよう,ハードウェアを構成
機器の相違を吸収し,基本的な入出力処理を可能に
モニタ解像度,キーボード配列,ディスク仕様...
ROM
BIOS
RAM
メモリ
CPU
提供する機能
ハードウェア的な故障診断(セルフテスト)
ブート用デバイスの特定
18
ブート用デバイス
一台の計算機には,複数の入力装置が存在
(一般には複数の)ハードディスク装置
CD-ROMドライブ,フロッピーディスクドライブ
USBメモリ etc...
どの装置からOSを探し出すか?
各装置の優先度を事前に決めておき,設定を保存しておく
優先度の順で,ブートに利用できる装置を探していく
ブートに利用できる装置が見つかれば...
その装置に格納されたブート用プログラムに制御を渡す
19
BIOS とブート用プログラム
異なる入力装置は,異なる仕組みで動いている
「任意の入力装置を動かすための仕組み」を,すべて
BIOSに持たせることは困難
ROM容量は有限,新しい機器への対応ができない...
BIOSから,当該装置用プログラムにバトンタッチする
BIOS ... 一次ブートローダ
入力装置内のブート用プログラム... 二次ブートローダ
と呼ばれることも
二次
ブート
BIOS
ローダ
20
ハードディスクの二次ブートローダ
一台の装置に,複数のボリューム(パーティション)が存在
どのパーティションを使うのか,選択が必要
hd0a
... BIOS が直面していた問題と,ほぼ同じ構図
hd0b
hd0d
ハードディスクでの二次ブート処理を,さらに二段階に分割
ディスクの先頭部分に格納されたブートローダが
ボリュームの先頭部分に格納されたブートローダをロード
hd0a
21
MBR
MBR (Master Boot Record)
ディスクの先頭の,ブートローダを格納する部分
ブートセクタ,ブートブロックとも
PC/AT互換機では,MBRは512バイト分(ディスクの1セクタ)
0~445バイトにブートローダのプログラム
446~509バイトにパーティション情報
510, 511バイトに固定シグネチャ(0x55, 0xAA)
MBRが壊れると,ディスクが読めなくなる
MBRがウィルスに汚染されると,コンピュータが乗っ取られる
22
OS起動の最終段階
MBRに格納されたブートローダが,ブートパーティションを特定
パーティションの先頭には,別のブートローダが待機
ここまでくれば...
当該パーティションを,ファイルシステムとしてアクセス可能
特別な名前のファイルを OSと理解してロードする
vmunix, vmlinux, kernel ...
OS起動に関連する設定を,ファイルから読み込む
grub.conf ...
OSが展開され,起動される
23
まとめ
本日のまとめ
OSのネットワーク機能について
OSを起動する仕組み
講義全体(楫担当分)のまとめ
OSに関する基礎的な要素を紹介した
今日実用に供されているOSには,あてはまらない部分も
24
試験の実施方法について
5月30日(水)1限(通常の講義時間)
L3講義室(この部屋)
中島先生の授業内容 + 楫の授業内容
講義資料(書き込み可)の持ち込みを認める
25
楫担当分の受験にあたって
【重要】 楫担当分の受験にあたって
「クラウド化が進むと,OSは消えていく」という説がある
http://www.sekarasika.com/archives/2165
http://www.gizmodo.jp/2011/10/icloud_2.html
http://mojix.org/2010/09/12/os-kieteiku
そのような説に対する考え方を問うので,上記のページに
目を通しておくこと(プリントして持参することも可)
26