オペレーティングシステムの役割を理解し,それらの資源を利用する手段としてシステムコールを使用したプログラミングが行える。計算機内でのプロセスの状態遷移を把握でき,それを自由にコントロールできるようになる。
概要:
オペレーティングシステムの役割を理解し,それらの資源を利用する手段としてシステムコールを使用したプログラミングが行える。計算機内でのプロセスの状態遷移を把握でき,それを自由にコントロールできるようになる。
授業の進め方・方法:
各学習項目ごとに内容の解説を行い,関連する例題を説明した後,実際に実行結果を確認し理解させる。その後課題プログラムを作成し,レポートとして提出する。必要な関数の用法等はオンラインマニュアル等の参照によって自ら解決できるよう指導する。
注意点:
オフィスアワー木曜日7,8限目
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
システムプログラミングのためのC言語知識 |
低学年で学んだC言語の知識に加えて,構造体, ポインタ,リスト処理について復習し理解を深 める。D2:1,2
|
2週 |
UNIXにおけるマルチプログラミングとプロセスの状態遷移 |
どのようにマルチプログラミングが実現されるかを理解する。 プロセスの生成,プログラムの実行,システムコールを理解する。D2:1,2
|
3週 |
fork, wait, exec, exit(基本概念) |
forkシステムコールにより子プロセスを生成できることを理解する。D2:2,3
|
4週 |
fork, wait, exec, exit(プログラミング) |
execファミリによって外部プログラムを実行できることを理解するD2:2,3
|
5週 |
fork, wait, exec, exit(プログラミング) |
waitシステムコールにより親プロセスと子プロセスを同期させられることを学ぶ。D2:2,3
|
6週 |
fork, wait, exec, exit(プログラミング) |
プロセスの状態が主に4種類あることを理解し、ゾンビプロセスを作成するプログラムについて学ぶ。 プロセステーブルが読み取れるようになる。D2:2,3
|
7週 |
thread |
threadによるユーザへの応答時間の短縮方法について学ぶ。D2:2,3
|
8週 |
threadとmutex |
threadを用いたマルチスレッドにおける排他制御について学ぶ。D2:2,3
|
2ndQ |
9週 |
[前期中間試験] |
|
10週 |
試験問題の解答と授業評価アンケート 引数のあるコマンドを実行できるシェルの作成
|
execvを用いて引数を持つコマンドを実行できるようにする D2:1-3
|
11週 |
プロセスとプロセスの状態 |
プロセスの主な状態を理解する。 D2:1-3
|
12週 |
ゾンビ状態とその生成方法 |
ゾンビ状態を作成したり、ゾンビ状態のプロセスを消す。 D2:1-3
|
13週 |
ファイルシステムやパーティションの構造 |
ファイルシステムの仕組みやパーティションの構造を理解する。 D2:1-3
|
14週 |
簡易シェルの作成 |
UNIXのシェルの位置付けを理解し,簡易なシェルを作成できる。 D2:1-3
|
15週 |
簡易シェルの作成 |
UNIXのシェルの位置付けを理解し,簡易なシェルを作成できる。 D2:1-3
|
16週 |
[前期期末試験] |
|
後期 |
3rdQ |
1週 |
ファイルシステムとパーティション |
UNIXファイルシステムのディスクの領域管理,ファイル管理の仕組みが理解できる。 ファイルの管理情報を参照,変更を行うプログラムを作成できる。 D2:1-3
|
2週 |
i-node |
ファイルやディレクトリの管理情報が格納されているi-nodeについて理解できる。D2:1-3
|
3週 |
statシステムコールやstat構造体 |
statシステムコールやstat構造体を用いたプログラムが作成できる。D2:1-3
|
4週 |
ディレクトリエントリとファイルアクセス |
ディレクトリエントリを用いたプログラムが作成できる。D2:1-3
|
5週 |
ファイルの所有者とパーミッション、マスク値 |
ファイルやディレクトリのパーミッション、マスク値について理解できる。 また、パーミッションを変更できる。D2:1-3
|
6週 |
オプション付きコマンドが実行できる簡易シェルの作成 |
オプション付きコマンドが実行できる簡易なシェルを作成できる。 D2:1-3
|
7週 |
ファイルシステムとパーティション、i-nodeの確認演習 |
Linux上でファイルシステムやパーティション、i-nodeを確認するコマンドやプログラムが作成できる。D2:1-3
|
8週 |
ファイルの所有者とパーミッション、マスク値の確認演習 |
Linux上でファイルの所有者とパーミッション、マスク値を確認したり変更するコマンドやプログラムが作成できる。D2:1-3
|
4thQ |
9週 |
[後期中間試験] |
|
10週 |
pipe機能とパイプラインを用いたコマンド(プロセス間通信) |
名前付きパイプが理解できる。 D2:1-3
|
11週 |
pipe機能(プログラミング) |
名前付きパイプを用いたプログラムが作成できる。D2:1-3
|
12週 |
共有メモリとセマフォ(プロセス間通信) |
共有メモリが理解できる。 排他制御であるセマフォが理解できる。 D2:1-3
|
13週 |
シグナルの原理(プロセス間通信) |
シグナルを使った,プロセス間の同期の原理を理解するとともに,プログラムが作成できる。 Ctrl+CやCtrl+Zなど何気なく使っていたショートカットキーが実はSIGINTやSIGTSTPなどのシグナルに対応していたことを学ぶ。 D2:1-3,E2:2
|
14週 |
シグナルの原理(プログラミング) |
シグナルを受信するだけでなく、無視することも必要になるケースを理解する。 アラームシグナルを理解するとともに、プログラムを作成できる。 D2:2,E2:2
|
15週 |
シグナルの原理(プログラミング) |
さまざまなシグナルを使ったプログラムが作成できる。 D2:2,E2:2
|
16週 |
[後期期末試験] |
|