分散システム 電子・情報工学系 新城 靖 <yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/dsys-1998/1999-01-26
/sunrpc-exercise.html
あるいは、次のページから手繰っていくこともできます。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/
http://www.hlla.is.tsukuba.ac.jp/~yas/index-j.html
分散システムの授業で SunRPC の練習問題で使うプログラム番号は、重ならな いように次のようなルールで決めることにする。
60iiiiiin
iiiiii
は、6桁の学籍番号。
n
は、0〜9の任意の数(複数のプログラムを作る時に
使える)。
これで足りない人は、この範囲意外で、適当にぶつかりそうにない番号を使う 事。
固定長でもいいですが、可変長に対応していることが望ましい。可変長の時、 長さが違っていた時には、エラーを変えすようにしたした方が望ましい。
上の加減サービスと同様に、スカラ倍や内積、その他の手続きを入れなさい。固定長でもいいですが、可変長に対応していることが望ましい。可変長の時、 長さが違っていた時には、エラーを変えすようにしたした方が望ましい。
整数の加減サービス は、単純な整数の和と差を計算するものである。これを行列(2次元配列)を取 るように変更しなさい。固定長ではなく、可変長に対応していることが望ましい。可変長の時、大きさ が違っていた時には、エラーを変えすようにしたした方が望ましい。
ヒント:C言語では、2次元配列は連続番地に置かれることが決まっている。 これを1次元配列としてまとめて送ってしまう方法がある。配列の行の数と列 の数は、別のパラメタで送る。
2次元配列をポインタの配列で表現する方法もある。
putenv() と getenv() を使って、RPCサーバの環境変数を読み書きするような プログラムを作りなさい。
注意:putenv() の引数は、strdup() すること。(同じ名前の環境変数がある と、ゴミが出てきてしまうが、この課題ではよしとする。)
rusers コマンドと類似のクライアント・プログラムを作りなさい。この課題 では、サーバ側を作る必要はない。インタフェースは、次の場所にある。
このインタフェースに適合するようなクライアント側のプログラムを作りなさ い。~yas/dsys/sunrpc-4.0/rpcsvc/rnusers.x
以下、rusers コマンドの実行例。
今まで自分が作ったプログラムの中から1つ選んで、それをRPCのプログラム に変更しなさい。ただし、次のような条件を持つものとする。% whokirane ttyq0 2月 9日 00時01分 yas ttyq1 2月 9日 00時37分 % rusers localhost
localhost kirane yas % rusers -l localhost
kirane localhost:ttyq0 Feb 9 00:01 8 (greenwich.softla) yas localhost:ttyq1 Feb 9 00:37 (hlla.hlla.is.tsu) %
![]()
malloc() する例は、 日付時刻サービス にあります。
◆クライアント側で bus error や segmentation fault が出る
クライアント側では可変長配列を含む引数を渡す時には、 例にあるように、独立に配列の領域 を確保する必要があります。単に送る構造体を宣言しただけでは、その中に含 まれているポインタの先は無効です。普通の変数(クライアント側の引数の先 は auto変数でもよい)の番地を自分でセットするか、malloc() で取ります。 この課題は、RPC の課題です。データをファイルやキーボードから与える必要 はありません。プログラムの中に固定してしまってもかまいません。int data1[] = { 1, 2, 3, 4, };■SunRPCのレポート
上の課題を1つ選んで時なさい。 締切は、2月9日(当日の日付有効。)1999 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 1 2 3 4 5 6 1 2 3 4 5 6 3 4 5 6 7 8 9 7 8 9 10 11 12 13 7 8 9 10 11 12 13 10 11 12 13 14 15 16 14 15 16 17 18 19 20 14 15 16 17 18 19 20 17 18 19 20 21 22 23 21 22 23 24 25 26 27 21 22 23 24 25 26 27 24 25 26 27 28 29 30 28 28 29 30 31 31■レポートの出し方
レポートは、次のような形式の電子メールで送ること。
---------------------------------------------------------------------- To: yas Subject: [dsys/report1] <内容に関したサブジェクト> 学籍番号 i965432(各自の学籍番号で置き換える) 名前 漢字の名前 <本文> ---------------------------------------------------------------------- <内容>To: は、学類の O2 からは、yas だけでもかまいません。その他のホ ストからは、yas@jks.is.tsukuba.ac.jp とします。 Subject: には、dsys とレポートの番号(reportN, N は1,2,3,...) を必ず含めること。
電子メールの本文の先頭に学籍番号と名前(漢字の名前がある人は、漢字で) を書くこと。
内容は、日本語で書くこと。文章には、述語を付けること。体言止めは、使わ ないこと。単にプログラムを含めるのではなく、「以下に○○のプログラムを 示す」と書くこと。実行結果を付けること。
送られたレポートには、「手動で」確認応答(acknowledge)のメールを送ります。 すぐには送られてきません。 3日たっても確認応答が届かない時には、もう一度送り、 yas@is.tsukuba.ac.jpに、その旨連絡すること。
送ったレポートは、講義が終るまで保存すること。
授業に関連した質問・要望などは、レポートとは別に次のような形式で送ること。
---------------------------------------------------------------------- To: yas@is.tsukuba.ac.jp Subject: [dsys] <内容に関したサブジェクト> ----------------------------------------------------------------------Subject: には、report を含めないこと。report に含まれた質問は、返事が 遅くなります。
[SunRPC] [SunRPCデータ型] [SunRPC練習問題] [NFS] [Pthread] [Pthread同期]
↑[もどる] ←[1月19日] ・[1月26日] →[2月2日]
Last updated: 1999/02/09 01:21:35
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>