|| 英語(English)
学習支援計画書(シラバス) 検索システム
情報工学専攻
対象課程 科目名 単位数 科目コード 開講時期 授業科目区分
博士前期課程(修士課程)
オペレーティングシステム特論
Operating System
2 2480-01 2024年度
前学期
関係科目
担当教員名
授業科目の学習・教育目標
キーワード 学習・教育目標
1.オペレーティングシステム 2.デバイスドライバ 3.カーネル 4.プロセス 5.Linux オペレーティングシステム(OS)は計算機を効率的に駆動するためのソフトウェアである. 本科目では,UNIX系OSであるLinuxのカーネルやデバイスドライバのプログラムコードを読 み解くことで,(1)カーネルがどのようにユーザプロセスやデバイスドライバを管理してい るか,(2)デバイスドライバがどのようにハードウェアを制御し,またユーザプロセスと通 信しているか,(3)ユーザプロセスがどのようにデバイスドライバやカーネルの機能を利用 しているか,をより深く理解し,独自に実装できるようになることが目標である.
授業の概要および学習上の助言
各自のPCにVMwareで動作するLinuxマシンを導入し,それで基本的なカーネルモジュール(デバイスドライバ)の実装方法に ついて学んだ後,RaspberryPi3をリモート接続してそのドライバプログラミングを行う.RaspberryPi3にはセンサデバイスな ど接続し,そのドライバを作成する.尚,受講に際しては,(1)RaspberryPi3,(2)マイクロSDカード(ただし,RaspberryPi3 で動作することが確認できいるもの),(3)接続デバイスは各自で用意してもらう(秋月電子やRSコンポーネンツで購入). 【受講者の理解度・進捗状況に応じて授業計画は適宜変更する】
教科書および参考書・リザーブドブック
なし
履修に必要な予備知識や技能
(1)C言語の知識・経験(特にマクロ,構造体,ポインタ,static修飾子,ビット操作演算子).(2)Linuxの操作(基本コマン ド,パイプ,リダイレクト,sshによるリモートログインの方法,viなどCUIベースのテキストエディタの操作)の知識・経験 .(4)C言語によるマイコンプログラミングの経験・知識.(5)UNIX系のシステムコール(特に,open, read, write, close) を使ったプログラミングの経験・知識.(6)UNIX系システムのディレクトリ構成に関する知識・経験
学生が達成すべき行動目標
No.
カーネルがデバイスドライバやプロセスをどのようにして制御しているかを説明できる.
プロセスとデバイスドライバの通信方法について説明できる.
デバイスのデータシートを参照し,自分でデバイスドライバを実装できる.
デバイスドライバと通信するユーザプログラム(プロセス)を実装できる.
達成度評価
評価方法 試験 クイズ
小テスト
レポート 成果発表
(口頭・実技)
作品 ポートフォリオ その他 合計
総合評価割合 0 0 70 30 0 0 0 100
評価の要点
評価方法 行動目標 評価の実施方法と注意点
試験
クイズ
小テスト
レポート 実装したデバイスドライバに関するレポート(50点) 実装したユーザプログラムに関するレポート(20点)
成果発表
(口頭・実技)
実装したデバイスドライバ・ユーザプログラムに関する発表(30点)
作品
ポートフォリオ
その他
具体的な達成の目安
理想的な達成レベルの目安 標準的な達成レベルの目安
(1)カーネルがどのようにユーザプロセスやデバイスドライバ を管理しているか,(2)デバイスドライバがどのようにハード ウェアを制御し,またユーザプロセスと通信しているか,(3) ユーザプロセスがどのようにデバイスドライバやカーネルの機 能を利用しているか,を説明できる.英文で書かれたデータシ ートを自分で読み,それに応じて自分でデバイスドライバ及び それを利用するユーザアプリケーションを設計・実装できるこ と. (1)カーネルがどのようにユーザプロセスやデバイスドライバ を管理しているか,(2)デバイスドライバがどのようにハード ウェアを制御し,またユーザプロセスと通信しているか,(3) ユーザプロセスがどのようにデバイスドライバやカーネルの機 能を利用しているか,を概ね説明できる.与えられたサンプル プログラムを改造し,独自の機能を追加できる.
※学習課題の時間欄には、指定された学習課題に要する標準的な時間を記載してあります。日々の自学自習時間全体としては、各授業に応じた時間(例えば2単位科目の場合、予習2時間・復習2時間/週)を取るよう努めてください。詳しくは教員の指導に従って下さい。
授業明細
回数 学習内容 授業の運営方法 学習課題 予習・復習 時間:分※
1 オペレーティングシステムの概要,環境の構築,カー ネルモジュールの作り方,簡単なシステムコールプロ グラミング(open,read,write,close)の復習 講義と演習 120
2 デバイスドライバの仕組みと構成方法, 仮想ファイルシステム(sysfs,procfs,devtmpfs)を通 じたユーザプログラムとの通信 (同上) 120
3 デバイスドライバの仕組みと構成方法,ドライバモデ ル(クラス,クラス属性,ドライバ,ドライバ属性) (同上) 120
4 RaspberryPiを用いたドライバ作成方法,簡単な電子 回路,デバイスツリー(DeviceTree:DT) (同上) 120
5 メモリマップトIOデバイスの制御(ユーザ空間ドライ バの実装) (同上) 120
6 仮想ファイルシステム(sysfs)を用いたカーネルモジ ュールとプロセスの通信方法,コールバック (store,show)の実装 (同上) 120
7 ユーザ空間におけるメモリマップトIO,ユーザ空間ド ライバの設計法(mmapとunmap) (同上) 120
8 カーネル空間におけるメモリマップトIO (同上) 120
9 キャラクタデバイスドライバ(1),devtmpfsとシステ ムコールの関係,メジャー番号とマイナー番号,3つ のデータ構造(file_operations,file,inode),カ ーネル用デバイスマネージャ(udev) (同上) 120
10 キャラクタデバイスドライバ(2),システムコール (open,read,write,close,ioctl)の実装 (同上) 120
11 RaspberryPi3で動作する独自のドライバの設計・実装 のための作業時間,進捗状況報告 質疑応答 120
12 (同上) (同上) 120
13 (同上) (同上) 120
14 (同上) (同上) 120
15 開発したデバイスドライバとユーザアプリケーション について口頭発表(質疑応答),レポートの回収 質疑応答 120