Exercise List os 2023

Menu

2023年度の問題です。過年度生は全部解答すれば、それで2023年度合格とします。 〆切は、2024/10/11 とします。


宿題

問題に関しては、問題ごとに別なメールで、以下のタイトルで
    Subject: Operating System Lecture Exercise 1.1

kono@ie.u-ryukyu.ac.jp まで送ること。

学籍番号をメールの中に記述すること。問題番号は正確に記述すること。出席しない場合でも、問題解答を送れば出席扱いとします。

学科のメールアカウント及び、学科のメールサーバ経由で提出すること。それ以外は受け付けません。

ソースコードは最低限引用すること。

ソースコード自体は、学科の Mercurial repository に置き、そのRepository のURL をレポートに含めること。

Repository は、*問題ごと*に作成し、

   ssh://urasoe.ie.u-ryukyu.ac.jp/net/home/hg/y07/e075737/os/ex1.1 

という形式で示してください。Web URL は参照以外には使わないこと。

コンパイルエラーは、gcc なら -O2 -Wall で確認し、エラー及びウォーニングを、すべてなくすこと。Eclipse でも、エラー及びウォーニングはすべ取ること。

C では Makefile、Java では build.xml を含めること。

他人のレポートのコピペ、WWW上の公開された情報からのコピペは、3回で不可とします。


英語の教科書の使い方

問題1.1


学科のサーバの設定

問題1.2

API の位置付け

 

実際には、ユーザの行うことと、ハードウェアでそれを実行するところの間には、さまざまな段階がある。OS は、その各段階での標準化を提供する。

library (static, dynamic) 、あるいは、kernel trap 、さらに、サーバ(daemon)などが、様々な機能を実現する焦点となる。これを API (Application Program Inteface )と呼んでも良い。

問題1.3


問題1.4 Web page の課題

問題1.4

問題2.1

(注意: gitlab ci の失敗例は、compiler error とか file not found ではだめ。テストを実行してテストが失敗している例を示す)

Golang/Rust/Java/TypeScript のどれかで、プロジェクトを作る。

go lang は brew install go でもよいが、サーバ上で singularity で動かしてもよい

問題2.1 Golang Project


Buffered と Unbuffered な書き出し

Buffer を使う場合と使わない場合での書き出し速度の実験を行う。実験結果をレポートにまとめる。

綺麗なグラフを作成する。

問題2.2 書き出しの実験


gitlab での merge 、pullreq

複数人で作業する時に行われる merge と pull request を試してみる。

問題2.3 読み込みの実験を pull equest で作る


問題2.4

find の使い方

問題2.5

zsh の使い方

問題2.6

C のAPIは、構造体を用いることが多い。構造体の扱いに気をつけながら、API の使い方を勉強しよう。

C/C++/Rust/Go の ファイルシステムに関して調べる


問題2.7 MTBF

MTBF とは Mean Time Between Failures (平均故障間隔) の略で、故障発生までの時間の平均値のこと。

MTBF について調べてみよう。

MTBF


問題 2.8 df command

df command を使って、自分がどこにいるかを調べよう。

学科のサーバの構成は?

df command の使い方


User

/etc/passwd , /etc/master.passwd で管理されている。Uid は数字で16bitのシステムが多かったが、今では32bitが普通。パスワード自体は/etc/master.passwd にあり直接検索できない。また見ることができたとしても、encode されているので解析は不可能ではないが難しい。

昔は、crypt されたパスワードが、/etc/shadow などに格納されていて、元のパスワードに復号することが出来なかった。この方法では、CHAPなどの challenge 型の認証には対応できない。現在では、パスワード自体が暗号化されて、復号化可能な状態で格納されているのが普通である。

Mac OS X には、KeyRing というパスワードの管理システムが使われている。

問題2.9


問題3.1

Kernel 側の実装について調べる。

Linux Kernel Source


問題3.2

プロセスが使用しているシステムコールを調べる。

システムコールのトレース


問題3.3

Perl による shell の実行で、どのようなプロセスの状態の時間的遷移をUMLの sequence diagram で、記述してみよう。

サーバの sequence diagram


問題3.4

プロセスが使用しているファイルディスクリプタを調べる。

プロセスの ファイルディスクリプタ


問題4.1 シミューレータ

プロセスシミュレータ Rust

問題4.2-4.3教科書の問題

割り当てられた教科書の問題を解け。

    Subject: Lecture on Operating System Lecture Exercise 4.2
    Subject: Lecture on Operating System Lecture Exercise 4.3

として、2つ個別のメールで出して下さい。

レポートを、まだ一つも出してない人には割り当てられません。

英語の問題を英語で書き写して、その後に解答すること。(問題の訳は必要ありません)

解答は日本語とします。

ChatGPTで自己採点(400文字以内)してから提出すること

ChatGPTの自己採点もレポート含めること

Web 上から写したものを見付けた場合は失格としてます。


問題5.1 Amdal 則を実測し可視化する

Amdahl 則の実装

問題5.2

PathFinder を使って、Thread を用いたプログラムが要求仕様を満たしていることを検証しよう。

golang のモデル検査器があればそれを使っても良い。

PathFinder の問題


問題6.1

Rustの並行実行

Rustの並行実行


問題6.2

golang で Semaphor を実装してみる

Channelの実装


問題6.3

flock_test.pl などのソース

DeadLock の問題


問題7.1 Busy Wait

OSに時間を渡さないと不必要に CPU を食ってしまう。しかし、応答性は Buy wait が良い。そのバランスを考えよう。

Busy Wait の問題


問題7.2 getaddrinfo

コンピュータ上の使用可能なアドレスを探す。

getaddr.pl
getaddr.py.pl
getaddrinfo の問題


問題7.3-4 様々な API

以下の問題を2つ選択して、API を調べる簡単なプログラムを作成し動作を調べよ。ここに載ってない Unix / Mac OS X の API を調べてもよい

   Rust   Cargoを使うこと
   Go     module にすること
   C      cmake を使うこと
   Java   gradle を使うこと

Gitlab CI として適切な test を用意し実行すること

test の glitlab CI のURLを提出する

    Subject: Lecture on Operating System Lecture Exercise 7.3
    Subject: Lecture on Operating System Lecture Exercise 7.4


問題8.1

malloc/ free を繰り返して、 fragmentation を実際に見てみる。

fragmentation の 観察


問題8.2

GUI によるPage table のデモ

問題8.3 Perfomance of Demand Paging

 

平均Page fault 処理時間


問題8.4 Perfomance of Demand Paging

 

mlock


問題8.5 mmap によるコピー

mmap したファイルを write することにより、memory copy を減らすことができる。(今は、あまり使われない)

mmap によるコピー


問題9.1

バックアップに関する考察

問題9.2

セキュリティに関する考察と s/mime

問題10.1

記述問題

問題10.2

アンケート

岡崎先生のアンケートに答えて下さい。

解答したことをメールで所定の形式で報告すること。サブジェクトのみで良い。


VMの課題

問題11.1

Ansibleの課題

問題11.2

Containerの課題

問題11.3

Cloud の課題

問題11.4

Shinji KONO / Tue Sep 17 11:50:54 2024