システムプログラミング

科目基礎情報

学校 香川高等専門学校 開講年度 令和03年度 (2021年度)
授業科目 システムプログラミング
科目番号 4026 科目区分 専門 / 選択
授業形態 授業 単位の種別と単位数 履修単位: 2
開設学科 情報工学科(2018年度以前入学者) 対象学年 4
開設期 通年 週時間数 2
教科書/教材 教科書:篠山学 著 「システムプログラミング入門-実行しながら理解するLinux OSのしくみ」
担当教員 篠山 学

到達目標

オペレーティングシステムの役割を理解し,それらの資源を利用する手段としてシステムコールを使用したプログラミングが行える。計算機内でのプロセスの状態遷移を把握でき,それを自由にコントロールできるようになる。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1目的に必要なシステムコールや関数などを自在に使えるシステムコールや関数の動きを知っている講義で出てきたシステムコールや関数などを1つも理解していない。
評価項目2
評価項目3

学科の到達目標項目との関係

教育方法等

概要:
オペレーティングシステムの役割を理解し,それらの資源を利用する手段としてシステムコールを使用したプログラミングが行える。計算機内でのプロセスの状態遷移を把握でき,それを自由にコントロールできるようになる。
授業の進め方・方法:
各学習項目ごとに内容の解説を行い,関連する例題を説明した後,実際に実行結果を確認し理解させる。その後課題プログラムを作成し,レポートとして提出する。必要な関数の用法等はオンラインマニュアル等の参照によって自ら解決できるよう指導する。
注意点:
オフィスアワー木曜日7,8限目

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
前期
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週 [後期期末試験]

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週

評価割合

試験課題提出合計
総合評価割合8020100
基礎的能力401050
専門的能力401050