Operating System 5 - CPS Lab...Operating System 5 岩井将行 5/12 1 第1回 •...
Transcript of Operating System 5 - CPS Lab...Operating System 5 岩井将行 5/12 1 第1回 •...
Operating SystemOperating System55
岩井将行岩井将行
5/12
1
第1回第1回
ドウ• ハードウエアとOS• CPUとデバイス、割り込み、記憶装置、ハードCPUとデバイス、割り込み、記憶装置、ハ ド
ディスク装置、RAID、パリティ
ドとプ セ メ リ ド 空間• スレッドとプロセス、メモリアドレス空間、ファイルシステム、NIC、ソケット、カーネル
2
第2回第2回
• CUI• タイピング ログイン コマンド操作 マニュアタイピング,ログイン,コマンド操作,マニュア
ル, シェル
フ イル操作 デ タ• ファイル操作,エディタ
3
第3回第3回
プ ジ ブ• プロセス,ジョブ
• プロセス管理 時分割処理とプロセス切り替プロセス管理、時分割処理とプロセス切り替え、スケジューリング、プロセス表
4
第4回第4回
憶装• 記憶装置
• メモリ階層 キャッシュ アドレス空間 物理アメモリ階層、キャッシュ、アドレス空間、物理アドレスと論理アドレス、ページング、チェックポインティング 効率的な自動メモリ管理 GCインティング、効率的な自動メモリ管理、GC、フラッシュメモリ
5
第5回第5回
権• シェルとアクセス権
• 標準入出力 フィルタコマンド シェルスクリプ標準入出力、フィルタコマンド、シェルスクリプト、ファイルのバックアップ、アクセス権、ドライブ ディレクトリ ファイル open/read/writeブ、ディレクトリ、ファイル、open/read/write
• ファイルのメモリへのマッピング、アクセス制御、権限、
6
第6回第6回
ネ• ネットワークとOS• ethernet,ping,socket,tcp/udp,rpc,apach,http,sethernet,ping,socket,tcp/udp,rpc,apach,http,ssh,ftp,remotewindow
新の 事情• 新のOS事情
7
第7回第7回
試験• 試験
8
前回の復習
9
2回目のこり2回目のこり
ドウ• ハードウエアとOS• CPUとデバイス、割り込み、記憶装置、ハードCPUとデバイス、割り込み、記憶装置、ハ ド
ディスク装置、RAID、パリティ
ドとプ セ メ リ ド 空間• スレッドとプロセス、メモリアドレス空間、ファイルシステム、NIC、ソケット、カーネル
10
第3回第3回
プ ジ ブ• プロセス,ジョブ
• プロセス管理 時分割処理とプロセス切り替プロセス管理、時分割処理とプロセス切り替え、スケジューリング、プロセス表
11
プロセスの状態プロセスの状態
「実行 能なプ• 「実行可能なプロセス」とは?• プロセスの状態プロセスの状態
実行中?yes no
実行中?
実行CPUが空き次第実行できる?
noyes
実行可能 待ち
12
プロセスの状態プロセスの状態
実行状態( )• 実行状態(running)– プロセスを実行している状態
– リソースは,そのプロセスのために確保されている
• 実行可能状態(ready)実行可能状態(ready)– 実行できるが、CPUリソースが確保できていない状態
CPUリソ スを確保した時点で実行開始される– CPUリソースを確保した時点で実行開始される
• 待ち状態(wait)– CPU以外のリソースも確保できていない状態
– 入力待ちなどもこれに含まれる待 含
13
状態遷移
実行 能 CPUリソースが実行可能(ready)
CPUリソ スが割り当てられた(順番がまわってきた)
CPU以外のリソースを獲得orス パバイザ ル終了スーパバイザコール終了
待ち 実行
割込み
待ち(wait)
実行(running)
スーパバイザコールス パバイザコ ルorCPU以外のリソース喪失 14
オペレーティングシステムオペレ ティングシステム第4回第 回
メモリとメモリ管理メモリとメモリ管理
15
RAM(Random Access Memory)RAM(Random Access Memory)
通電中 もデ タを読 書き 能• RAMは、通電中でもデータを読み書き可能で、
電源を切ると記憶内容が失われる揮発性の電源を切る 記憶内容 失われる揮発性半導体メモリー
• SRAM(Static RAM;スタティックラム)• DRAM(Dynamic RAM;ダイナミックラム)
16
SRAMSRAM• SRAMはフィリップフロップ回路で構成された利用
した半導体メモリーで DRAMはコンデンサーをした半導体メモリ で、DRAMはコンデンサ を利用した半導体メモリー。
• フリップフロップ回路は、自己保持回路ともいわれる。論理回路で構成される。コンデンサーは電れる。論理回路で構成される。コンデンサ は電気を蓄えておく部品のことである。
• SRAMは、フィリップフロップ回路で構成され、DRAMはコンデンサーで構成されるということを覚えて欲しい。
17
SRAMSRAM
論理回路ではなく ンデンサ(キ パシタとも• DRAM 論理回路ではなく、コンデンサ(キャパシタとも言われる)の充電状態を使用した記憶方式
SRAMはDRAMと比較した場合 コンデンサの自然放• SRAMはDRAMと比較した場合、コンデンサの自然放電によるデータ消失を防ぐための定期的なリフレッシュ動作(再書き込み)を与える必要がないシュ動作(再書き込み)を与える必要がない。
– 記憶領域へのシンプルかつ高速なアクセスが可能である。ただし、1bitあたりのトランジスタ数やその配線がDRAMと比べ複雑になるため、bitあたりのコストは高くなる。
• 比較的小容量であっても高速性が求められる揮発性領域( のレジスタや キ シ メ リ)RAM領域(CPUのレジスタや、キャッシュメモリ)
18
DRAM• Dynamic Random Access Memory• リフレッシュ(記憶保持動作)を必要とするダイナミックメモリ
• キャパシタ(コンデンサ)に電荷を蓄えることにより情報を記憶し、電源供給が無くなると記憶情報も失われる揮発性メモリリ
– 長期記録の用途には向かず、情報処理過程の一時的な作業記憶の用途に用いられる。用途に用いられる。
• DDR3‐SDRAM– Double‐Data‐Rate3 Synchronous Dynamic Random Access Memoryy y y– DDRでの同期クロックを4倍に高めそれぞれの立ち上がりと立ち下り
時にデータ入出力を確定するのでSDRに比べて8倍のデータ転送速度となる度となる。
– 動作周波数は800MHz、1066MHz、1333MHzの3種類
– ノート向け• S.O. DIMM(small outline dual in‐line memory module)• http://buffalo.jp/products/connect/ddr3_sdram‐so/ 19
DARMとSRAMDARMとSRAM
記憶容量
アクセス速度
リフレッシュ
価格 用途 回路
DRAM 大きい 遅い 必要 安い 主記憶 コンデンサー
S 小さい 速い 不要 高いキャッシ メ
フィリップフロッSRAM 小さい 速い 不要 高い シュメモリ
フィリップフロップ
20
メモリ実効速度メモリ実効速度• 実効速度=(キャッシュメモリの速度×ヒット率)+
(主記憶の速度×(1-ヒット率))
• ヒット率は、CPUが必要とするデータがキャッシュメモリー上に存在する確率
• NFPは、CPUが必要とするデータがキャッシュメモNFPは、CPUが必要とするデ タがキャッシュメモリー上に存在しない確率である。
• ヒット率+NFP(not found probability)=1• ヒット率+NFP(not found probability)=1
21
メモリ実効速度問題メモリ実効速度問題• あるプロセッサが主記憶装置及びキャッシュ
ぞメモリにアクセスするとき,それぞれのアクセス時間は60ナノ秒及び10ナノ秒である。アクセ
スするデータがキャッシュメモリに存在する確率が80%の場合 このプロセッサの平均アクセ率が80%の場合,このプロセッサの平均アクセス時間は何ナノ秒か。
• 10ns*0.8+60ns*(1‐0.8)=8ns+12ns=20ns
22
メモリ管理メモリ管理
23
メモリ管理メモリ管理
ネ ジ• メモリ・マネージャ
– メモリのどの部分が使用中でどの部分がフリーメモリのどの部分が使用中でどの部分がフリか
– プロセスが要求するメモリを割り当て 使用後に– プロセスが要求するメモリを割り当て、使用後に解放
メインメモリとディスク間のスワッピングの管理– メインメモリとディスク間のスワッピングの管理
• メモリ管理システム
– スワッピング・ページングを使用しない方式
– スワッピング・ページングを使用する方式スワッピング ペ ジングを使用する方式
24
スワッピング・ページングなし(マルチプログラミング)
• 再配置(relocationの問題)
バイナリファイル
100番地
0番地
メモリに配置 100K+100番地
• 保護(protection)の問題
0番地
0
100K
保護(protection)の問題
ユーザ2のプログラム
ユーザ1のプログラムアクセス
25
再配置と保護の問題の解決策再配置と保護の問題の解決策
ベ ジ タ ジ タを使• ベースレジスタとリミットレジスタを使用
– プログラムロード時にパーティションの先頭がプ グラム ド時にパ ティションの先頭がベースレジスタへ、パーティションの終わりがリミットレジスタへセットされるッ ジ タ ッ される
300Kリミットレジスタ
100K
リ
ベ スレジスタ
CALL 100 100 + 100K(ベースレジスタの値)に自動的に変換し、かつ、
100Kベースレジスタ リミットレジスタもチェック
26
スワッピングスワッピング
プ 全体を 時的 デ 避• プロセス全体を一時的にディスクに退避
例例
B B B B
C C C C C
A A A
B B B B EA A A D D DOS OS OS OS OS OS OS
Aがスワップアウト 時間27
スワップ領域の割り当てスワップ領域の割り当て
プ領域• スワップ領域
– メインメモリに入りきらないものを退避させるためメインメモリに入りきらないものを退避させるための、ディスク上の領域
• スワップ領域割り当てのアルゴリズム• スワップ領域割り当てのアルゴリズム
– メインメモリ管理と同様のアルゴリズム
プ ご 割• スワップアウトごとに割り当てる
– 〃 と異なるアルゴリズム
• プロセス生成時に割り当てる
28
仮想記憶(Virtual Memory)仮想記憶(Virtual Memory)
プ グ ズ ズ• プログラムサイズ > メインメモリサイズ
– オーバーレイ(overlay)というプログラム細分化オ イ( y) う グラ 細分化
• overlay0を 初に実行し、終了すると、次のoverlayを呼び出す
• 細分化するのはプログラマの仕事
• 仮想記憶の登場仮想記憶の登場
– プログラムサイズがメモリサイズを超えても構わないという点が発想の基本ないという点が発想の基本
29
ページングページング
仮想 ド 仮想 ド 空• 仮想アドレス、仮想アドレス空間
– プログラムから見えるアドレスおよびアドレス空間グラ ら見えるア およびア 空間
• MMU(メモリ管理ユニット:Memory Management Unit)Management Unit)– 仮想アドレスと物理メモリ・アドレスとのマッピング
を う プを行うチップ
CPU
MMUメモリ ディスク・
コントローラ仮想アドレス
物理アドレスバス30
MMUの動作MMUの動作
• ページとページ・フレームのマップを示すページ表から物理アドレスを提供する
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 仮想アドレス
010 10
プレゼント/アブセント・ビット(マップされているか否か)
ページ番号オフセット
010 1001 1110 1
012 110
000 1100 0
34
1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 物理アドレス31
ページフォールト(page fault)ページフォールト(page fault)
• ページ・フレームにマップされていないページをアクセスしようとすること
– CPUはOSにトラップをかける
OSはあるアルゴリズムに従って選んだページ・フ– OSはあるアルゴリズムに従って選んだページ・フレームをスワップアウト(ディスクに退避)する
ペ ジ フ ルトを起こしたペ ジの内容を退避– ページ・フォールトを起こしたページの内容を退避させたページ・フレーム部にロードする
32
ページ表(page table)ページ表(page table)
• 目的は、仮想ページをページ・フレームにマッピングすること
• 問題点
ペ ジ表が極端に大きくなる– ページ表が極端に大きくなる
• ページサイズ4K、32ビット・アドレス空間の場合、100万ペ ジ万ページ
• ページ表はプロセスごとに保持
ピングは高速である必要がある– マッピングは高速である必要がある
• 1命令に数回のメモリアクセスが必要な場合もある
• 改良案として、マルチレベルページ表33
ページ表エントリページ表エントリ
• ページ・フレーム番号
ページ・フレーム番号
プレゼント/アブセント 保護 修正 参照 キャッシング抑制
ジ フレ ム番号• プレゼント/アブセント・ビット
– 1: 物理メモリ上にある、0: 物理メモリ上にない
• 保護ビット– 読み取り、書き込み、実行のアクセス権限を示す
• 修正ビット– ページが編集されると、1
参照ビ ト• 参照ビット– ページが参照されると、1
キャッシング抑制ビット• キャッシング抑制ビット– デバイス・レジスタにマップされているページ用 34
ページ置換アルゴリズムページ置換アルゴリズム
ジ 生時 物• ページフォルト発生時、OSは物理メモリから削除するページを選択しなければならない
– 削除するページが編集されていれば、ディスクに書き戻す書き戻す
• 適ページ置換アルゴリズム
– もっとも次の参照までの時間が長いものを選択する
– 実現不可能
• 現実的かつ有用なアルゴリズムが必要現実的かつ有用なアルゴリズムが必要
35
LRU今 LRU今後アク
(未知)
時間的局所性セスされ
時間的局所性に基づく考え方
る確率
• アクセス確率の低いページを選びたい
過去のアクセス間隔(既知)
アクセス確率の低いペ ジを選びたい• アクセス間隔の長いページを選べばよい
LRULeast Recently Used
36
LRUアルゴリズム (1/3)LRUアルゴリズム (1/3)
• LRU(Least Recent Used)
– 長い間使用されていないページは、今後も参照さ長い間使用されていない ジは、今後も参照されない可能性が高い、という考えに基づく
• ページフォルト発生時 も長時間参照され• ページフォルト発生時、 も長時間参照されていないものを選択
• 実現可能な方法は、ハードウェア依存
• ソフトウェアでは 近似解を使用ソフトウェアでは、近似解を使用
37
LRUアルゴリズム (2/3)LRUアルゴリズム (2/3)
ビ ウ タ を• 64ビットのカウンタCを利用
– 各命令後、インクリメント各命令後、インクリ ン
• ページ表のエントリにCを格納できるフィールドを用意ドを用意
• ページを参照した時点で、現在のCの値をそのページエントリに格納する
• ページエントリのカウンタの値が 小のもの• ページエントリのカウンタの値が 小のものがLRUページ
38
LRUアルゴリズム (3/3)LRUアルゴリズム (3/3)
行 を使• 行列を使用
– n×n (n: ページフレーム数)( ジ 数)
例) 0123 の順番でアクセスされた場合 (4×4)
0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0
例) 0123 の順番でアクセスされた場合 (4×4)
0 0 0 00 0 0 0
1 0 1 10 0 0 0
1 0 0 11 1 0 1
1 0 0 01 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0
C=0111 C=1011 C=1101 C=1110
行の2進数とみて、 小値の行の番号がLRU
39
第5回第5回
権• シェルとアクセス権
• 標準入出力 フィルタコマンド シェルスクリプ標準入出力、フィルタコマンド、シェルスクリプト、ファイルのバックアップ、アクセス権、ドライブ ディレクトリ ファイル open/read/writeブ、ディレクトリ、ファイル、open/read/write
• ファイルのメモリへのマッピング、アクセス制御、権限、空き領域管理
40
復習:スレッド復習:スレッド
プ 替• プロセス切り替え
– コスト高高
スレッド• スレッド
– プロセスを分割
– CPUリソースを割り当てる,さらに細かい単位
– 主記憶領域が同じのため 切り替えコスト低主記憶領域が同じのため,切り替えコスト低
41
復習:割込み復習:割込み
割• 割込み
– 通常のCPU演算動作とは異なる事象通常 演算動作 は異なる事象
• キーボード入力を受け取った
• 自動車がどこかに衝突した自動車がどこかに衝突した
• サーバからデータが送られてきた
– 割込み発生時にプロセスの切り替えが起こる– 割込み発生時にプロセスの切り替えが起こる
– TSSでは、プロセス切り替えのためにインタ バルタイマ が定期的に割込みを発生インターバルタイマーが定期的に割込みを発生
42
復習:割込みの種類復習:割込みの種類
内部割込み• 内部割込み– スーパバイザコール割込み
– プログラムチェック(例外)割込み
• 外部割込み入出力割込み– 入出力割込み
– タイマ割込み
マシンチ ク割込み– マシンチェック割込み
– リスタート割込み
43
ジ グ 基本スケジューリングの基本
復習:プロセスの三状態
実行 能 CPUリソースが実行可能(ready)
CPUリソ スが割り当てられた(順番がまわってきた)
CPU以外のリソースを獲得orス パバイザ ル終了スーパバイザコール終了
待ち 実行
割込み
待ち(wait)
実行(running)
スーパバイザコールス パバイザコ ルorCPU以外のリソース喪失 45
プロセスの状態遷移プロセスの状態遷移
CPUリソースが待ち行列
プロセス
CPUリソ スが割り当てられた(順番がまわってきた)
CPU以外のリソースを獲得orス パバイザ ル終了スーパバイザコール終了
CPU待ち 割込み
スーパバイザコールス パバイザコ ルorCPU以外のリソース喪失 46
スケジューリングスケジューリング
実行プロセスの選択• 実行プロセスの選択– CPUスケジューラが行う
– 対話型処理では,数十~数百回/s• スケジューリングアルゴリズム
– 高速かつ軽量に行う必要• オーバヘッド削減のため
• 基本– 待ち行列の先頭プロセスにCPUリソースを割り当て
• 全待ちプロセスの数に依存しない時間でスケジューリングが可能
47
プロセスの中断方式プロセスの中断方式
実行プロセスの切り替えにはプロセスの• 実行プロセスの切り替えにはプロセスの中断が必要– 復習:CPU状態(PSWプロセッサステータスワード)の復習:CPU状態(PSWプロセッサステ タスワ ド)のPCB (Process Control Block, Task Control Block)への待避
中断方式• 中断方式– プリエンプション方式
• OSがプロセスから実行権を剥奪• OSがプロセスから実行権を剥奪• UNIX, WindowsXP, MacOS X
– ノンプリエンプション方式プ セ が に実行権を自主的に返還
プロセス暴走時には• プロセスがOSに実行権を自主的に返還• Windows 95, MacOS 9
暴走時 はシステム停止も
48
ジ グ 的スケジューリングの目的
スケジューリングの目的スケジューリングの目的
を効率的 た• リソースを効率的に利用したい
– CPUリソースは時分割により仮想化リソ は時分割 より仮想化
• プロセス切り替えが多発
• 次に実行するプロセスを選択する機会も膨大次に実行するプロセスを選択する機会も膨大
– 切り替えごとにコスト(オーバヘッド)が発生
• スケジューリング次第で全体のオーバヘッドが増減• スケジューリング次第で全体のオーバヘッドが増減
• 効率の悪いスケジューリング=全体の性能低下
• 効率のよいスケジューリングが必要
50
効率化の指標効率化の指標
応答時間• 応答時間– ある依頼した処理に対して
応答が返ってくるまでに要する時間応答が返ってくるまでに要する時間• 対話処理:レスポンスタイム
– 端末から入力した命令に対しシステムから結果を受け取るまでの時間の時間
• バッチ処理:ターンアラウンドタイム– 投入したジョブに対しシステムから結果を受け取るまでの時間
プ• スループット– ある単位時間においてシステムが処理する仕事量
プ セス切り替えに必要となるオ バ ド等は含まない• プロセス切り替えに必要となるオーバヘッド等は含まない• ユーザにとって意義のある仕事をいかにこなせるか
51
効率化の指標効率化の指標
応答時間とスル プ トは• 応答時間とスループットはトレードオフになる場合も
例)– 例)• 応答時間向上を追求
対話型処理を優先的に• 対話型処理を優先的に
• TSSのクオンタムを短く
• 切り替え回数増加,切り替えオーバヘッド増加切り替え回数増加,切り替えオ バ ッド増加
• スループット低下
• ユーザの要求やシステムの性質に応じて適切な指標・スケジューリングを用いることが重要
52
さまざまなさまざまなスケジューリング方式
ターンアラウンドタイムとレスポンスタイム
タ ンアラウンドタイム• ターンアラウンドタイム
• データの入力の開始から、データ出力が完全、に終了するまでの時間のこと。>レスポンスタイム>レスポンスタイム
• 応答時間ともいう。データ入力の終了から、出力が開始されるまでの時間のことである出力が開始されるまでの時間のことである。
54
さまざまなスケジューリング方式さまざまなスケジューリング方式
FIFO (Fi t I Fi t O t)• FIFO (First In First Out)– 到着順スケジューリング,FCFSSPTF (Sh t t P i Ti Fi t)• SPTF (Shortest Processing Time First)– 処理時間順スケジューリング
PS (P i it S h d li )• PS (Priority Scheduling)– 優先度順スケジューリング
RR (R d R bi )• RR (Round Robin)– ラウンドロビン
MLF (M lti L l F db k)• MLF (Multi‐Level Feedback)– 多重フィードバック
55
さまざまなスケジューリング方式さまざまなスケジューリング方式
FIFO (Fi t I Fi t O t)• FIFO (First In First Out)– 到着順スケジューリング,FCFSSPTF (Sh t t P i Ti Fi t)• SPTF (Shortest Processing Time First)– 処理時間順スケジューリング
PS (P i it S h d li )• PS (Priority Scheduling)– 優先度順スケジューリング
RR (R d R bi )• RR (Round Robin)– ラウンドロビン
MLF (M lti L l F db k)• MLF (Multi‐Level Feedback)– 多重フィードバック
56
FIFOFIFO
着 ジ グ• 到着順スケジューリング
– FCFS: First Come First Served– FIFO: First In First Out
• 常に待ち行列の先頭から処理常に待ち行列の先頭から処理
– ○単純
• プロセス選択機構も簡単になるし 選択オ バヘッドも小• プロセス選択機構も簡単になるし,選択オーバヘッドも小
– ○公平
追い抜き禁止• 追い抜き禁止
– ×ターンアラウンドタイムは良くない
57
FIFOの欠点FIFOの欠点• ターンアラウンドタイム
待ち行列
プロセスプロセスプロセスプロセス1s1s1s100s
103s 3s 2s 1s
• レスポンスタイム
待ち行列
プロセスプロセスプロセスプロセス プロセス100s
プロセス1s
プロセス1s
プロセス1s
103s 102s 101s 100s103s 102s 101s 100s
58
スループット(throughput)スループット(throughput)
• 単位時間当たりに処理できる仕事量のことである。 近では、ブロードバンドルーターの性ある。 近 、 ン タ 性能を表す指標としても用いられる。例えばブロードバンドルーターで 90Mbpsと表記されロ ドバンドル タ で、90Mbpsと表記されていれば1秒間に90Mビット処理ができるとい
うことである もちろんこの数値が高いほうがうことである。もちろんこの数値が高いほうがブロードバンドルーターの性能は高い
59
さまざまなスケジューリング方式さまざまなスケジューリング方式
FIFO (Fi t I Fi t O t)• FIFO (First In First Out)– 到着順スケジューリング,FCFSSPTF (Sh t t P i Ti Fi t)• SPTF (Shortest Processing Time First)– 処理時間順スケジューリング
PS (P i it S h d li )• PS (Priority Scheduling)– 優先度順スケジューリング
RR (R d R bi )• RR (Round Robin)– ラウンドロビン
MLF (M lti L l F db k)• MLF (Multi‐Level Feedback)– 多重フィードバック
60
SPTFSPTF
欠点は– FIFOの欠点は,各プロセスの「重さ」を考慮していないのが原因
• 処理時間順スケジューリング
h– SPTF: Shortest Processing Time First– 待ち行列内プロセスを処理時間順でソート
– 亜種;残り処理時間順(SRTF)
61
SPTFSPTF
処 時 短 プ 処• 処理時間の短いプロセスから順に処理
– ○応答時間 短;理想的○応答時間 短;理想的
– ×実装不可能
• 各プロセスの処理時間を事前に知ることはできない• 各プロセスの処理時間を事前に知ることはできない
待ち行列
プロセスプロセスプロセス プロセス5s
プロセス50sプロセス20s
62
SPTFの実装手法SPTFの実装手法
プロセスの処理時間を推定してスケジ リング• プロセスの処理時間を推定してスケジューリング– 経験則(heuristic)から近似的に処理時間を求める
• 対話型処理のプロセス処理時間• 対話型処理のプロセス処理時間
度数数
– ほとんどのプロセスは短時間で終了– 短時間で終了しないプロセスは,なかなか終了しない
処理時間
63
さまざまなスケジューリング方式さまざまなスケジューリング方式
FIFO (Fi t I Fi t O t)• FIFO (First In First Out)– 到着順スケジューリング,FCFSSPTF (Sh t t P i Ti Fi t)• SPTF (Shortest Processing Time First)– 処理時間順スケジューリング
PS (P i it S h d li )• PS (Priority Scheduling)– 優先度順スケジューリング
RR (R d R bi )• RR (Round Robin)– ラウンドロビン
MLF (M lti L l F db k)• MLF (Multi‐Level Feedback)– 多重フィードバック
64
PSPS
各プロセスに優先度を付加• 各プロセスに優先度を付加– 静的優先度:プロセス生成時に指定した優先度を使用
例) プロセスの種類ごとに優先度を規定• 例)・プロセスの種類ごとに優先度を規定リアルタイムプロセス > OS > 対話型 > バッチ
– 動的優先度:プロセス実行中に優先度を適宜変化• 例)・既実行時間に応じて優先度を変化
・入出力操作直後のプロセスの優先度を高く
– ○優先度を適切に設定できれば非常に有効
– ×高負荷時,優先度の低いプロセスがなかなか実行権を獲得できない(starvation)• 待ち時間に応じた優先度変化(aging)などで対処
65
さまざまなスケジューリング方式さまざまなスケジューリング方式
FIFO (Fi t I Fi t O t)• FIFO (First In First Out)– 到着順スケジューリング,FCFSSPTF (Sh t t P i Ti Fi t)• SPTF (Shortest Processing Time First)– 処理時間順スケジューリング
PS (P i it S h d li )• PS (Priority Scheduling)– 優先度順スケジューリング
RR (R d R bi )• RR (Round Robin)– ラウンドロビン
MLF (M lti L l F db k)• MLF (Multi‐Level Feedback)– 多重フィードバック
66
RRRR• TSSで用いられる方式
CPU待ち行列
プロセスプロセスプロセス
プリエンプション
待ち行列から選択されたプロセスに 微少な
プロセスプロセスプロセス
– 待ち行列から選択されたプロセスに,微少なCPU利用時間(クオンタム)を割り当て
• クオンタム– クオンタム≒無限大:RR = FIFO– クオンタム=極小 :処理時間の短いプロセス有利
67
さまざまなスケジューリング方式さまざまなスケジューリング方式
FIFO (Fi t I Fi t O t)• FIFO (First In First Out)– 到着順スケジューリング,FCFSSPTF (Sh t t P i Ti Fi t)• SPTF (Shortest Processing Time First)– 処理時間順スケジューリング
PS (P i it S h d li )• PS (Priority Scheduling)– 優先度順スケジューリング
RR (R d R bi )• RR (Round Robin)– ラウンドロビン
MLF (M lti L l F db k)• MLF (Multi‐Level Feedback)– 多重レベルフィードバック
68
MLFMLF• Multi‐Level Feedback
– 優先度別に待ち行列を用意
– プロセスは,クオンタムを得るごとに
CPUより優先度の低い待ち行列に移される
高
プロセスプロセスプロセス
優先度度
低 69
MLFMLF
• Multi‐Level Feedback– 複数のクオンタムを必要とするようなプロセス複数 クオンタ を必要 するような
(すなわち長い時間がかかるプロセス)は,どんどん優先度が下がってゆく, 優先度 下 ゆく
– SPTFの良い近似になっている
70
スケジューリングアルゴリズムの実スケジュ リングアルゴリズムの実行例
FIFOの例プ セス 処理時間 [ ] 到着時刻 [ ]プロセス 処理時間 [s] 到着時刻 [s]
A 10 0B 20 2C 5 6
10s
t=2 t=6 t=10 t=30 t=35
28s=(10-2)+20
29s=4(Aに対する待ち)+20(Bに対する待ち)+5(自身の処理時間)
SPTFの例プ セス 処理時間 [ ] 到着時刻 [ ]
SPTF: Shortest Processing Time First
プロセス 処理時間 [s] 到着時刻 [s]A 10 0B 20 2C 5 6
10s
t=2 t=6 t=10 t=15 t=35
33s=(10-2)(Aの処理待)+5(Cの処理待ち)+20(自身の処理)
9s
RRの例プ セス 処理時間 [ ] 到着時刻 [ ]プロセス 処理時間 [s] 到着時刻 [s]
A 10 0B 20 2C 5 6
23s 10=2*(1/1)+4*(1/2)+x*(1/3)+y*(1/2)
t=2 t=6 t=20 t=23 t=35
33s
15s ?*(1/3)=5
お るUNIXにおけるスケジュ リングスケジューリング
実際 体的実装例• 実際のOS (UNIX) の具体的実装例
• UNIX SystemV– Solaris– AIX– HP‐UX
• Linux 2.6
76
UNIX SysVUNIX SysV
多重レベルフィ ドバックがベ ス• 多重レベルフィードバックがベース
相違点• 相違点– 実行の終わったプロセスは,同じ優先度の待ち行列
にに再登録
– スーパバイザモードで実行されるプロセスは,イザ 実行される は,そのプリエンプションの原因から優先度を決定
– ユーザモードで実行されるプロセスは,以下で決定静的優先度• 静的優先度
• 動的優先度(過去のCPUリソースの割当状況から計算)• NICE値(ユーザが指定する優先度)NICE値( ザが指定する優先度)
77
SysVのスケジューリングy高
割
0これらの
込不可
プロセスの実行中は割り込み禁止
優優先度 例)ディスク入出力待ち
他のリソースを確保している可能性が高く,早く実行してやらないと他プロセスを足止めする。
128
低
78
SysVのスケジューリングy高 0 ■ ユーザモード優先度
P USER P_USER+ NICE+ P CPU
優
_
優先度
P_USER基準値 (=60)基準値 (=60)
NICEユーザ指定優先度128 ユーザ指定優先度
P_CPU動的優先度
低動的優先度
79
SysVのスケジューリングy高 0 ■ P_USER
ユーザモードプロセ ユ ザモ ドプロセスの基準値必ずこの値よりも優
ス|パ
優
必ずこの値よりも優先度が低くなる
パバイザ
優先度
ザ
スーパバイザモードプロセスとの境界60
128 通常 60ユ
|ザ
低
80
SysVのスケジューリングy高 0 ■ NICE
ユーザが指定する ユ ザが指定する優先度ユーザは実⾏するプ
優
ユーザは実⾏するプロセスの優先度を下げることができる
優先度
げることができる (基本的には)上げ
ることはできないることはできない60
128
低
81
Linux 2 6 のスケジューリングLinux 2.6 のスケジューリングactive expired
高
CPU
優先度度
低
82
Linux 2 6 のスケジューリングLinux 2.6 のスケジューリングactive expired
高
CPU
優先度度
クオンタムが残っている:←activeへクオンタムを使い切った:クオンタ を使 切 たexpiredへ→
低
83
Linux 2 6 のスケジューリングLinux 2.6 のスケジューリングactive expiredactiveexpired
高
CPU
優先度度
低
84
85
86
87
88
89
90
演習演習
91
演習
92
まとめ:スケジューリング方式まとめ:スケジューリング方式
FIFO (Fi t I Fi t O t)• FIFO (First In First Out)– 到着順スケジューリング,FCFSSPTF (Sh t t P i Ti Fi t)• SPTF (Shortest Processing Time First)– 処理時間順スケジューリング
PS (P i it S h d li )• PS (Priority Scheduling)– 優先度順スケジューリング
RR (R d R bi )• RR (Round Robin)– ラウンドロビン
MLF (M lti L l F db k)• MLF (Multi‐Level Feedback)– 多重フィードバック
93
まとめ:処理時間順まとめ:処理時間順
処 時 ジ グ• 処理時間順スケジューリング
– 理論上,応答時間を 小にできる理論 ,応答時間を 小 きる
– 実装が不可能
• 近似により処理時間順を実現
– 多重レベルフィードバック
94
まとめ:プロセス優先度まとめ:プロセス優先度
静的優先度• 静的優先度
– プロセス生成時に決定成時 決定
• 動的優先度
実行中に変化– 実行中に変化
• 優先度スケジューリング
優先度の低いプロセスがstarvationに陥る可能性– 優先度の低いプロセスがstarvationに陥る可能性
– aging等で解決
95
第5回第5回
権• シェルとアクセス権
• 標準入出力 フィルタコマンド シェルスクリプ標準入出力、フィルタコマンド、シェルスクリプト、ファイルのバックアップ、アクセス権、ドライブ ディレクトリ ファイル open/read/writeブ、ディレクトリ、ファイル、open/read/write
• ファイルのメモリへのマッピング、アクセス制御、権限、空き領域管理
96
シェルのジョブの状態
• フォアグラウンド
– 直接端末から入出力を行える状態.
• バックグラウンド
フォアグラウンドジョブの裏で同時に実行している状態– フォアグラウンドジョブの裏で同時に実行している状態
中断• 中断
– 実行中に一時停止された状態
• 終了
97– 終了した、または終了させられた状態
バックグラウンドジョブバックグラウンドジョブ
• プロンプトの裏で実行されているジョブ– 起動時に & を付ける起動時に & を付ける
通常:% /a out が終了するまで次の
バックグラウンド:
% ./a.out a.out が終了するまで次のコマンドは実行不可
% ./a.out &% a.out の実行中も次のコマンドを
実行可能
注意:ログアウトしてもバックグラウンドジョブが残ることがあるので
98
ログアウトしてもバックグラウンドジョブが残ることがあるので、全てのバックグラウンドジョブを終了させてからログアウトする
ジョブの状態の切り替え
フォアグラウンドォ グラウ
C‐cfg %ジョブ番号
C‐zfg %ジョブ番号
バックグラウンド 中断
C c
bg %ジョブ番号
fg %ジョブ番号
kill –KILL %ジョブ番号kill –KILL %ジョブ番号
終了
99
ジョブ管理のコマンド キー操作ジョブ管理のコマンド、キー操作• コマンド
fg %番号 中断やバックグラウンドのジョブを再開bg %番号 中断状態のジョブをバックグラウンド
で再開
kill KILL %番号 指定した番号のジョブを強制終了kill –KILL %番号 指定した番号のジョブを強制終了jobs バックグラウンドで実行中のジョブ,
及び中断状態のジョブを表示及び中断状態のジョブを表示
fg と bg で %番号 を省略すると,jobsコマンドで + がついたジョブが対象
• キー操作
グ ドジ ブを100
C‐z フォアグラウンドジョブを中断C‐c フォアグラウンドジョブを強制終了
ジョブ管理:使用例ジョブ管理 使用例
• 一旦起動したプログラムをバックグラウンドに変更% ./hello
C‐z[1] + 19277 Suspended ./hello
Ctrlキーを押しながら z
% bg[1] ./hello &%
• 不要なジョブを強制終了
% jobs[1] Running ./hello[2] + Running /a out[2] + Running ./a.out[3] ‐ Running emacs% kill –KILL %2%
101
%
ファイルに関する操作ファイルに関する操作
イ 関する操作• ファイルに関する操作
– アクセス権の設定
– ファイルの取りまとめ、圧縮
– ファイルの探索
– ファイル内の文字列探索
102
ファイルのアクセス権ファイルのアクセス権
ご 権を指定 能• ファイルごとにアクセス権を指定可能
ユーザ ユーザA
ユ ザB
見える見える
見えない
見える見える
見える
file1 file2
103
ファイルのアクセス権ファイルのアクセス権
• 各ファイルについて- ユーザのカテゴリ毎に- アクセス権を
設定可能
ユーザのカテゴリ アクセス権
•読み出し権
•書き込み権
•ファイルの所有者
•同じグループ •書き込み権
•実行権
•同じグル プ
•それ以外
104
ファイルのアクセス権表示 ls ‐l
実行例
このファイルの所有者
イ 所属グ プ• 実行例% ls –l hello.txt
1 79999 989 M 22 19 26 h ll t t
このファイルの所属グループ
‐rw‐‐‐‐‐‐‐ 1 a79999a usr 989 May 22 19:26 hello.txt
所有者のアクセス権
同じグループのユーザのアクセス権
アクセス権の表記
r 読出し権
それ以外のユーザのアクセス権
r 読出し権w 書込み権x 実行権
- 通常ファイルデ レクトリ
ファイルの種類
105
d ディレクトリ
アクセス権の変更chmod
方法• 利用方法
chmod アクセス権を変更するファイル
変更するカテゴリ所有者
変更するアクセス権読み出し権
権利の与奪+ 権利を与えるu 所有者
g 同じグループの利用者o それ以外の利用者a 全ての利用者
r 読み出し権w 書き込み権x 実行権
+ 権利を与える
‐ 権利を与えない
a 全ての利用者
一つ以上指定 一つ以上指定どちらか一つ指定
106
アクセス権の変更chmod
• 利用例利用例– 例1) ファイルの所有者に実行権を与える
% chmod u+x hello.txt
– 例2) 同じグループのユーザーに読み出し権と書き込み権を与える
% chmod u+x hello.txt
書き込み権を与える
% chmod g+rw hello.txt
– 例3) 所有者以外の全てのアクセスを禁止
% chmod go‐rwx hello.txt
– 例4) ディレクトリ全体のアクセス権を変更
g
107
% chmod ‐R go‐rwx work
ディレクトリのアクセス権ディレクトリのアクセス権
• ファイルのアクセス権とディレクトリのファイルのアクセス権とディレクトリのアクセス権は少し意味が異なる.– 読み出し権:読み出し権:
そのディレクトリにあるファイルの名前を閲覧する権利
– 書き込み権:そのディレクトリでファイルの削除や新規作成をする権
利利
– 実行権:– 実行権:そのディレクトリに移動する権利.ただし,実行権が無ければ閲覧もファイルの
108
編集・削除・新規作成も出来ない.
アクセス権アクセス権
フ イルとデ レクトリのアクセス権の操作• ファイルとディレクトリのアクセス権の操作– 読み出し権
– 書き込み権
– 実行権実行権
109
ファイルのとりまとめと圧縮
• 多数のファイルを保管したり他の計算機に転送するときするとき,
一つのファイルにまとめて,圧縮(サイズを小さく)すると便利すると便利.
たくさんのファイルやディレクトリ
まとめる 圧縮
ィ リ
保管, 転送
110
ファイルの取りまとめと展開tar
複数 を ま る• 複数のファイルを一つにまとめる
– 本来はテープに保存する(tape archive)コマンド本来はテ 保存する( p ) ン
複数のフ イル つのフ イル複数のファイル、ディレクトリ
一つのファイル
ディレクトリ
tar ファイル
ディレクトリ ディレクトリディレクトリfile1file2file3
tar
111
file1 file4file2 file3 file4
ファイルの取りまとめと展開tar• 利用法
tar file1 file2 ...処理内容 どれか一つ処 容c 1つのファイルにまとめるt まとめられたファイルの内容表示x まとめられたファイルの展開
どれか つ
表示に関する指示v 詳細情報表示
オプション
(処理内容で表示が異なる)c の場合:まとめられる各ファイル名t の場合:まとめられたファイルの
ズサイズなどの詳細情報x の場合:展開される各ファイル名
対象の取りまとめファイル 必ず指示
112
対象の取りまとめファイルf ファイル名ファイル名が ‐ の場合は標準入出力
必ず指示
ファイルのとりまとめと展開tar
• 利用例– 例1) カレントディレクトリの work と tmp ディレクトリを
test.tar というファイルにまとめる.
ファイル名の末尾を .tar としておくと tar でまとめたファイルであることが分か て便利です
% tar cf test.tar work tmp
であることが分かって便利です.
– 例2) test.tar の中身を表示(詳細情報も表示)(詳細情報も表示)
– 例3) test.tar を元の形に展開
% tar tvf test.tar例3) test.tar を元の形に展開
(展開される各ファイルも表示)
% tar xvf test.tar
113
tar でディレクトリをまとめるときの注意
• ディレクトリは相対パスで指定した方が良い% tar cvf test.tar test
– 任意の位置に展開することができる→ バックアップや他の計算機での利用が容易→ バックアップや他の計算機での利用が容易
もし絶対パスで指定した場合– もし絶対パスで指定した場合
全く同じ絶対パスにしか展開できない
% tar cvf test.tar /home/user3/k70043a/test
全く同じ絶対パスにしか展開できない。
114
ファイルの圧縮 解凍ファイルの圧縮, 解凍
縮 中 な部分を削• 圧縮:ファイル中の冗長な部分を削ってサイズを小さくする.
• 解凍:削られた冗長部分を補って元のファイルに戻す元のファイルに戻す.
縮ファイル
圧縮
解凍
ファイルファイル
解凍
115
ファイルの圧縮,解凍gzip
利用法 圧縮• 利用法: 圧縮
圧縮結果は 元のフ イル名の末尾に が
gzip 圧縮するファイル名
– 圧縮結果は,元のファイル名の末尾に .gz が付いたファイルに格納される.
– 例) hello.txt を圧縮する.( hello.txt.gz が作成される.)例) e o t t を圧縮する ( e o t t g が作成される )
利用法 解凍
% gzip hello.txt
• 利用法: 解凍
例) h ll t t を解凍する (h ll t t が作成される )
gzip ‐d 解凍するファイル名
– 例) hello.txt.gz を解凍する.(hello.txt が作成される.)
% gzip –d hello.txt.gz
116注意: 圧縮,解凍コマンド実行後,元のファイルは消える
圧縮するファイルの選択圧縮するファイルの選択
を 縮する 点• ファイルを圧縮する利点
– ファイルの転送が速いァイル 転送 速
– ディスクを有効に利用できる
• 不便な点
– 通常、使用する前に復元(解凍)が必要
通常,他の計算機に転送するファイルやしばらく利用しないフ イルを圧縮する
117
しばらく利用しないファイルを圧縮する
tar と gzip を組み合わせると効果的tar と gzip を組み合わせると効果的
SRCSRC/ SRC
file1
SRC.tar SRC.tar.gz
file1
SRC file1file2file3
file2file3file4
file2 file3 file4file1 file3file4
tar cvf SRC.tar SRCSRC.tar ファイル
gzip SRC.tarSRC.tar.gzファイル
ができる ができる
tar cvf ‐ SRC | gzip > SRC.tar.gz
118
tar cvf SRC | gzip > SRC.tar.gz一度に実行
取りまとめて圧縮されたファイルの復元復元SRC tar SRC tar gz
SRCSRC/file1
SRCfile1file2
SRC.tar SRC.tar.gz
file1
file1file2file3
file3file4
file2 file3 file4
tar xvf SRC.tar gzip ‐d SRC.tar.gzfile4
SRCディレクトリ以下が展開される
SRC.tarファイルができる
gzip –dc SRC.tar.gz | tar xvf ‐一度に実行
119gzip –dc ファイル名
解凍結果を標準出力に出力
ファイルの探索ファイルの探索
デ が増 くる• ファイルやディレクトリが増えてくると,目的のファイルがどこにあるかわからなくなっ目的 ァイ ある わ らなくなてくる.→ 探索コマンド find→ 探索コマンド find
120
ファイルの探索find
法• 利用法
find 探索開始ディレクトリ –name 名前 探索後の処理
– 探索開始ディレクトリは絶対パス,相対パスどちらで指定してもよい
find 探索開始ディレクトリ –name 名前 探索後の処理
で指定してもよい.– 主な”探索後の処理”:
i t 見つか たフ イルを表示‐print 見つかったファイルを表示‐exec 見つかったファイルに対して
マンドを実行コマンドを実行
121
ファイルの探索find
• 利用例– 例1) work ディレクトリ以下から proj1.f90 を
探し 表探して表示
% find work –name proj1.f90 ‐print
– 例2) ホームディレクトリ以下から末尾が~であるファイルを探して削除
• コマンドには,見つかったファイル名を {} で指定する.
% find ~ ‐name '*~' –exec rm –i {} ¥;
• コマンドの末尾は”空白を一つ以上置いて” ¥;
122
文字列の探索文字列の探索
• ファイル内から特定の文字列を含む行を探して表示する.
プログラムのデバ グなどに利用• プログラムのデバッグなどに利用
123
文字列の探索grep
• 利用法
grep オプション 検索文字列 ファイル
– 主なオプション‐i 大文字小文字を区別しない
grep オプション 検索文字列 ファイル
‐n 行番号も表示する
‐l 指定した文字列を含むフ イルの名前だけを表示するファイルの名前だけを表示する(複数のファイルを指定した場合に利用)
‐v 指定した文字列を含まない行を表示する.v 指定した文字列を含まない行を表示する.
124
文字列の探索grep
• 利用例– 例1) ファイル test.c から total という文字列
を含む行を探索するを含む行を探索する.
% grep –i total test.c
– 例2) ファイル名の末尾が .f90 のファイルから,!を含まない行を探索する!を含まない行を探索する.
直前
% grep –v '¥!' *.f90
• ! のような特殊記号は '¥!' のように直前に¥を付け, さらにファイル名を' で囲んで指定する.
125
シェルスクリプトシェルスクリプト
連 ドを イ 列挙 括 実行• 一連のコマンドをファイルに列挙し一括して実行
– 条件分岐,繰り返しなども利用可能
• 用途:
– 何度も行う決まった処理
– 複雑な処理
バ チジ ブとして投入する処理– バッチジョブとして投入する処理
126
シェルスクリプトシェルスクリプト
利用法• 利用法
カレントデ レクトリにある場合は
スクリプトファイルのパス オプション
– カレントディレクトリにある場合は./ を忘れない.
– 引数を受け付けるかどうかは,シェルスクリプトの内容による.
– コマンドとして実行する前にchmod で実行権限を与えておく.実行権限を
% chmod u+x スクリプトファイル名
127
シェルスクリプトの例1シェルスクリプトの例1
• workディレクトリに移動し,test f90 をコンパイルして実行するtest.f90 をコンパイルして実行する.– バッチジョブのスクリプト
#!/bin/cshcd workfrt test.f90 ‐o test./test
128
シェルスクリプトの例2• 引数に指定されたファイルが存在すれば,
そのファイルで member という文字列を探索する.
– 引数は $数字 で指示する.例) $1 : 1番目の引数.
– ファイルが存在するか否かの判定if (‐f ファイル名)
– メッセージの出力メッセ ジの出力echo メッセージ
#!/bin/cshif (‐f $1) thengrep 'member' $1grep member $1
elseecho "$1 doesn't exist."
endif
129
endif
シェルスクリプトの例3• カレントディレクトリにある,
ファイル名の末尾が .c であるファイルに対し,ファイル名の末尾にさらに .old を付ける.ファイル名の末尾にさらに を付ける
– 繰り返しはforeach 変数 ( 変数のとる値 )
から d までから end まで.
– ここでは変数のとる値として *.c 、すなわちカレントディレクトリにある、ファイル名の末尾が .c のファイルの名前を指定している.
– 条件を満たすファイル名について 順に繰り返しの中を実行する条件を満たすファイル名について,順に繰り返しの中を実行する.
– 変数の中身は ${変数}で参照.
#!/bin/cshforeach cfile ( *.c )
mv ${cfile} ${cfile}.oldecho ${cfile} ${cfile}.olddend
130
分割コンパイルの支援分割コンパイルの支援
分割 パ• 分割コンパイル
– 一つのプログラムを複数のファイルに分割グラ を複数 ァイル 分割→ 大規模なプログラムの管理が容易
– 一部のファイルに修正を施した後,再度全部をコンパイルするのは無駄再度全部をコンパイルするのは無駄.→ 修正を行ったファイルのみコンパイル
131
分割コンパイルの支援make
• ファイルの依存関係を元に必要なコンパイルだけを行う仕組み.
コンパイルのコマンドは計算機によって異なる– コンパイルのコマンドは計算機によって異なる
file1.f90 file1.of90 ‐c cc
file2.f90 file2.of90 ‐c
program
file3.c file3.occ ‐c
make• ファイルの依存関係は Makefile というファイルに
記述.
make
132
Makefileの例• FortranとC言語の混成プログラムFortranとC言語の混成プログラム.• コンパイル以外のターゲットも作成可能
例)clean: 途中でできた不要ファイルを削除– clean: 途中でできた不要ファイルを削除
– backup: 必要なファイルをまとめて圧縮
all: programprogram: file1.o file2.o file3.o
cc o program file1 o file2 o file3 occ ‐o program file1.o file2.o file3.ofile1.o: file1.f90
f90 ‐c file1.f90file2 o: file2 f90file2.o: file2.f90
f90 ‐c file2.f90file3.o: file3.c
cc ‐c file3.ccc c file3.cclean:
rm ‐f file1.o file2.o file3.o *~backup: files.tar.gz
133
p gfiles.tar.gz: file1.f90 file2.f90 file3.c
tar ‐cf ‐ file1.f90 file2.f90 file3.c | gzip > files.tar.gz
Makefileの書き方Makefileの書き方
基本形• 基本形
ターゲット: ターゲット作成に必要なファイルアクシ ンTAB
– ターゲット: 目的
• ファイル もしくは単なる名前
アクションTAB
• ファイル,もしくは単なる名前
– ターゲット作成に必要なファイル名:
• 複数指定可
– アクション:
• ターゲットを作成するスクリプト
複数行にまたが ても可• 複数行にまたがっても可
• 行の先頭は必ず TAB
134
分割コンパイルの支援make
法• 利用法
make ターゲット
– ターゲット: 何を生成するか→Makefileに記述されているものを指定する
make タ ゲット
→Makefileに記述されているものを指定する.– 何もターゲットが指定されない場合,
ll が指定されたものとして実行されるall が指定されたものとして実行される.
135
ファイルシステムAPIとファイルシステムAPIとメモリマップドファイルリ ッ ァイ
136
ファイルシステムの役割(1)ファイルシステムの役割(1)
様 な種類 次 憶装• 様々な種類の2次記憶装置へ,– 簡便で簡便
– 効率的で
安全で– 安全で
– 統一的な(装置によらない)
読み書き手段を提供する
137
ファイルシステムの役割(2)ファイルシステムの役割(2)
電 を も われな 情報 ど• 電源を切っても失われない情報の(ほとんど唯一の)格納場所)– メモリの内容は電源を切ると失われる
• プロセス間で情報を共有する自然な場所• プロセス間で情報を共有する自然な場所
– プロセス間でメモリは分離されていた
メモリ メモリ メモリ
ファイル138
OSがない状態での2次記憶OSがない状態での2次記憶
例 ドデ• 例: ハードディスク
– 固定サイズの「ブロック」の集合(典型: 512B, 1KB)固定サイ ック」 集合(典型 , )– ブロックのアドレス: (シリンダ, トラック, セクタ)
読み書きのインタフェ ス– 読み書きのインタフェース
• I/Oコマンド発行
終了通知の割り込み• 終了通知の割り込み
139
基本的な抽象化: ファイル基本的な抽象化: ファイル
• ファイル名(パス名)ややこしいアドレスではなく自由な文字列– ややこしいアドレスではなく自由な文字列
• バイト配列としてファイルの簡便な読み書き– ファイル名, オフセット 記憶場所
– キャッシュを用いた効率的アクセス
• ファイルの作成,伸長空き領域確保– 空き領域確保
• ファイルの所有者,読み書き権限(来週以降)
140
API : 基本概念API : 基本概念
く• 開く(open)– 権限の検査,以後の読み書き準備権限 検査,以後 読み書き準備
• 逐次的な読み書き(read/write)位置あわせ 頭出し• 位置あわせ(seek; 頭出し)
• メモリマップドファイル(後述)メモリマップドファイル(後述)• 閉じる(close)
openr/w seek
141
Unix APIUnix API
• int fd = open(path, access);• intm = read(fd, buf, n);int m read(fd, buf, n);• int m = write(fd, buf, n);• off_t o’ = lseek(fd, o, from);• int err = close(fd);int err = close(fd);
142
Windows APIWindows API
• HANDLE h = CreateFile(path, access, …);• BOOL ok = ReadFile(h, buf, n, &m, …);• BOOL ok = WriteFile(h buf n &m );BOOL ok = WriteFile(h, buf, n, &m, …);• DWORD o’ = SetFilePointer(h, o1, &o2, from);• BOOL ok = CloseHandle(h);
143
C言語の標準ライブラリAPI (1)C言語の標準ライブラリAPI (1)
• FILE * fp = fopen(path, mode);• size t sz’ = fread(buf, sz, n, fp);size_t sz fread(buf, sz, n, fp);• size_t sz’ = fwrite(buf, sz, n, fp);• int fseek(fp, o, from);• int c = fgetc(fp);int c = fgetc(fp); • int c’ = fputc(c, fp);
144
C言語の標準ライブラリAPI (2)C言語の標準ライブラリAPI (2)
• char * s’ = fgets(s, sz, fp); • int ok = fputs(s, fp);int ok fputs(s, fp);• fscanf(fp, “%d”, &x); /* 例 */• fprintf(fp, “%d”, x); /* 例 */• int err = fclose(fp);int err = fclose(fp);
145
open/read/write系とfopen/fread/fwrite系の関係
系 シ ム• open/read/write系: システムコール
• fopen/fread/fwrite系: (結局はopen etc.を呼び出す)ライブラリ
– 違い1: 書式付入出力(fprintf, fscanf)など高機能なIOのサpポート
– 違い2: バッファリングを行う
• 複数回のfwriteをメモリ上に保持して一度のwriteシステムコールで書き込む
• 一度のreadシステムコールで大量に読み込んで以降の複数回のfreadに答える
146
バッファリングバッファリング
f itf itf itf itf it fwritefwrite
fwritefwrite
fwritefwritefwrite
writewrite147
お断りお断り
本授業資料の作成にあたり• 本授業資料の作成にあたり
• 慶應大学SFC IPL/ITB 岩井クラス
• 戸辺義人先生戸辺義人先生
• 田浦健次朗先生
• 降旗 大介先生
• 松尾啓志先生
• 九州大学情報基盤研究開発センター
• Wikipediaなどの資料を参考にさせていただいています。
• ありがとうございます。ありがとうございます。
148