Quad Core マシンがメモリエラー
研究費で Quad Core のハイパワー環境として導入した PowerEdge T105 であるが、 OS のインストールから手を焼いた。ひとまずOSが動きだしたのはいいんだけど、 今度は、"aptitude safe-upgrade" あたりを実行しようとすると再起動がかかってしまう。 ネットワークを使う仕事でエラーがでるのかと思い、オンボードEther のドライバ tg3 の ドライバの最新をひろって入れて安定…かと思いきや、やっぱり勝手に再起動。
不安になってきたけど、BIOSの画面で"エラーレポート"の機能に気づき、 LOGを確認すると、"Unrecoverble ECC Memory Error DIMM2,2"が立て続けに 記録されていた。 メモリの初期不良品をつかんでしまったかと思って、ブルーになるが、状況確認のために メモリのスロットを入れ替える。その結果、ちょいと処理をさせても安定している。 しかし、いつ再発するかわからないので、「負荷試験」がわりに、 必要ないけどカーネル再構築とパッケージの追加インストールを行う。 再構築はまだ実行中だけど、過負荷に耐えている。 この雰囲気は、「メモリの接触不良によるECCエラーで、スロット入れ替えにより、 接触不良が改善された」という様子。
ハノイの塔の帰納法による証明とメモリ利用の問題提起
ハノイの塔の処理回数の証明
前回授業のハノイの塔のルールの説明を受け、 実際にハノイの塔の処理回数の再帰方程式を示す。 そして実際にその証明ということで、数学的帰納法を用いて証明を行う。
処理速度のオーダの一般例として、 の事例として、クイックソートなどの例を示し、説明のしやすい マージソートについて、再帰方程式を示す。 次に代入法により、その式の一般解を示す。
メモリ利用の問題提起
例として、名前と電話番号のデータベースを作るというテーマとして、 これに必要とするデータ構造の宣言を示し、その問題点を示す。
#define DATA_SIZE 100 #define NAME_SIZE 10 #define TEL_SIZE 10 char name[ DATA_SIZE ][ NAME_SIZE ] ; char tel[ DATA_SIZE ][ TEL_SIZE ] ;
しかし、DATA_SIZE は、1クラス50人ではなく、学年=200人、学校=1000人かもしれない。 TEL_SIZE は、12-3456 でなく、携帯電話 090-1234-5678 の16文字かもしれない。 "0033"をつけるかもしれない、"内線番号"がつくかもしれない、"国際電話で国別コード"がつくかもしれない。 NAME_SIZE も、漢字8文字=16byteかもしれない、 寿限無 みたいな名前だったら、漢字約100文字=200byte にするのか? 最初から、こういうめったにない事例に応じて、*_SIZE を巨大にするのは、メモリの無駄。 かといって、
int x ; char name[ x ] ; // C言語では、配列サイズは定数しか使えない
こういう点で、データサイズが任意というのは、いかにプログラムで扱いにくいのかを説明する。
複素数をテーマにしたレポート
オブジェクト指向プログラミングの、具体的な処理によるレポート課題 ということで、例年どおりの複素数の取り扱いのプログラムの説明と 演習を行った。
レポート1(複素数の加減乗除)
授業中に示した上記の2つのプログラムをベースに、 記載されていない減算・除算のプログラムを作成し、レポートを作成する。 レポートには、下記のものを記載すること。
- プログラムリスト
- プログラムへの説明
- 動作確認の結果
- プログラムより理解できること。
実際にプログラムを書いてみて分かった問題点など…