システムプログラミングⅡ

科目基礎情報

学校 徳山工業高等専門学校 開講年度 令和03年度 (2021年度)
授業科目 システムプログラミングⅡ
科目番号 0067 科目区分 専門 / 必修
授業形態 講義 単位の種別と単位数 学修単位: 1
開設学科 情報電子工学科 対象学年 4
開設期 前期 週時間数 1
教科書/教材 教科書:システムプログラミング(https://github.com/tctsigemura/SystemPrograming)、参考書:カーニハン他、「プログラミング言語C」(共立)、 参考書:David A curry、「UNIX C プログラミング」(アスキー)
担当教員 重村 哲至

到達目標

1. プログラミングを通じてオペレーティングシステムに必要な機能を理解する。
2. オペレーティングシステムの機能を用いるプログラムを作成できる。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
1. プログラミングを通じてオペレーティングシステムに必要な機能を理解する。学んだ全てのシステムコールの役割が理解できた。学んだシステムコールの3分の2以上で役割が理解できた。学んだシステムコールの中3分の2未満しか役割が理解できなかった。
2. オペレーティングシステムの機能を用いるプログラムを作成できる。シェルを理解し必要なシステムコールを選んで機能追加ができる。学んだシステムコールの3分の2以上でエラー処理を含むプログラムが作成できる。学んだシステムコールの中で使えるものが3分の2未満である。

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

到達目標 B 1 説明 閉じる
JABEE d-1 説明 閉じる

教育方法等

概要:
UNIXのシステムコールを使用したプログラミングと、その背景にあるオペレーティングシステムの仕組みについて授業する。
授業の進め方・方法:
講義と演習を繰り返す。
講義した内容はプログラムを作成して動作確認をしながら進める。
十分な演習時間は確保しないので,毎回1時間程度,時間外の演習(プログラムの完成)を行うことが必須である。
注意点:
最終評価=「課題1から課題12の評価点の平均点」を100点満点に換算したもの

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

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

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ガイダンス(コーディング規約、C言語開発環境、添削システム)
【事前事後学習の内容(1時間)】システム操作(課題1)
1. 添削システムから課題を受け取ることができる。
2. 課題プログラムをコーディング規約に沿って書くことができる。
3. 添削システムに課題を提出することができる。
2週 ファイル入出力システムコール
【事前事後学習の内容(1時間)】cpコマンド作成(課題2)
1. システムコールの必要性が説明できる。
2. open, read, write, close システムコール使用したプログラムが作成できる。
3週 高水準I/Oと低水準I/O
【事前事後学習の内容(1時間)】高低水準性能比較(課題3)
1. 低水準I/Oと高水準I/Oの関係が説明できる。
2. バッファの役割が説明できる。
3. 性能の比較ができる。
4週 UNIXファイルシステム
【事前事後学習の内容(1時間)】実システム調査(課題4)
1. ファイルのモード、ディレクトリ、ハードリンク、シンボリックリンクの意味を理解しUNIXコマンドで操作できる。
5週 ファイル操作システムコール
【事前事後学習の内容(1時間)】コマンド作成(課題5)
1. mkdir, rmdir, symlink, link, unlink, rename, chmod, chdir システムコールを使用する幾つかのコマンドを作成することができる。
6週 プロセスとJOB
【事前事後学習の内容(1時間)】実システム調査
1. プロセスとは何か模式図を使って説明できる。
2. プロセスとJOB関連のUNIXコマンド(^C等も含む)が操作できる。
7週 シグナル
【事前事後学習の内容(1時間)】sleep関数作成(課題6)
1. シグナルとは何か簡単な説明ができる。
2. ハンドラ関数が記述してsignalシステムコールで登録できる。
3. kill、sleep、pause、alarm等のシステムコールを用いたプログラミングができる。
8週 環境変数
【事前事後学習の内容(1時間)】実システム調査(課題7)
1. 環境変数の役割が簡単に説明できる。
2. 環境変数を操作するUNIXコマンドを使用できる。
2ndQ
9週 環境変数の仕組み
【事前事後学習の内容(1時間)】printenvコマンド作成(課題8)
1. 環境変数の仕組みを簡単に説明できる。
2. 環境変数を扱う簡単なプログラミングができる。
10週 他のプログラムの実行
【事前事後学習の内容(1時間)】envコマンド作成(課題9)
1. spawn方式とfork-exec方式の違いを説明できる。
2. execシステムコールを使用したプログラムが作成できる。
3. 入出力のリダイレクトについて説明できる。
11週 プロセスの生成
【事前事後学習の内容(1時間)】system関数作成(課題10)
1. forkシステムコールの役割と動作を説明できる。
2. fork-exec-exit/waitの流れをもつプログラムを作成できる。
12週 シェルプログラム
【事前事後学習の内容(1時間)】例題プログラム理解
1. 与えられた最低限の機能をもつシェルプログラムの構造を理解できる。
13週 シェルプログラムの改造1
【事前事後学習の内容(1時間)】例題プログラム改造(課題11)
1. シェルプログラムに環境変数管理機能を追加できる。
14週 シェルプログラムの改造2
【事前事後学習の内容(1時間)】例題プログラム改造(課題12)
1. シェルプログラムにリダイレクト機能を追加できる。
15週 期末テストは実施しない
16週 レビュー
課題の解答と提出状況確認など

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

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング与えられた問題に対して、それを解決するためのソースプログラムを記述できる。4前1,前2,前4,前6,前7,前10,前12,前13,前14
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。4前1,前2,前4,前6,前7,前10,前12,前13,前14
システムプログラムコンピュータシステムにおけるオペレーティングシステムの位置づけを説明できる。3前2,前3,前4,前5,前6,前7,前9,前10,前12,前13,前14
プロセス管理やスケジューリングなどCPUの仮想化について説明できる。3前2,前3,前4,前5,前6,前7,前9,前10,前12,前13,前14

評価割合

課題平均点合計
総合評価割合100100
基礎的能力00
専門的能力100100
分野横断的能力00