System Programming II

Course Information

College Tokuyama College Year 2022
Course Title System Programming II
Course Code 0067 Course Category Specialized / Compulsory
Class Format Lecture Credits Academic Credit: 1
Department Department of Computer Science and Electronic Engineering Student Grade 4th
Term First Semester Classes per Week 1
Textbook and/or Teaching Materials 教科書:システムプログラミング(https://github.com/tctsigemura/SystemPrograming)、参考書:カーニハン他、「プログラミング言語C」(共立)、 参考書:David A curry、「UNIX C プログラミング」(アスキー)
Instructor Shigemura Tetsuji

Course Objectives

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

Rubric

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

Assigned Department Objectives

到達目標 B 1 See Hide
JABEE c-3 See Hide

Teaching Method

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

Characteristics of Class / Division in Learning

Active Learning
Aided by ICT
Applicable to Remote Class
Instructor Professionally Experienced

Course Plan

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

Evaluation Method and Weight (%)

試験の平均点課題の平均点Total
Subtotal5050100
基礎的能力000
専門的能力5050100
分野横断的能力000