プロセスの実行
プロセスの実行方式についての説明ということで、 バッチ方式、タイムシェアリングシステム(時分割多重)、リアルタイム方式、 シングルタスク方式、マルチプロセッサ方式などを説明。 ここで、簡単に最近のプロセッサの高速化事情として、 パイプライン、スーパスカラ、マルチプロセッサ、そしてその実装として 最近は Dual Core , Quad Core などの製品が増えてきた事などを紹介、 雑学系として、映画タイタニックのプロセッサや、SETI@HOME やらの事例も紹介。
またプロセスの実行も、処理の視点では、 ジョブ、プロセス、スレッドなどの単位で実行される点を説明する。
さらに次の説明の導入として、割り込み機能の説明を行い、割り込みが発生した時の プロセッサの処理や、割り込みの種類を説明。
例年、マルチタスクで実行するよりバッチ処理の方が速くなる場合もあるよ… というのをスラッシングとタスクスイッチを関連付けて説明してるけど、 話し忘れているなぁ…仮想記憶の所で話しておこう…
ディスプレィ
後期後半のグラフィックスの授業の導入として、ディスプレィなどの説明を行う。 CRT における電子銃からラスタースキャン方式、インターレース走査、ベクタースキャン方式などの説明を行う。 LCD の説明として、偏向板と液晶の動作説明などを説明。 比較のして、色再現性、反応速度、視野角などの違いを説明する。 プラズマディスプレィなども紹介する。
色について
色としては、光の三原色(R,G,B)、絵の具の三原色(C,Y,M,K)の説明を行い、 画素と情報量の話しを始めるが、RGB各8bit、640×480 のメモリー量の途中で時間となりました。
悪魔付き
3年の実験でパソコンが不調ということで、色々触っていると、 以前より微妙に調子の悪かったマシンを確認で触っていると、 「HD不調のはずだったのに私が触ったら電源さえ入らなくなる」、 「調子が悪いと起動しなかったマシンが本当に起動しなくなる…」、 といった調子で、3台連続して動かなくなる。 学生には「先生、悪魔つきなんやから、もう触ったらあかんて…」と言われる…はぁ…
# 電源故障やらHDD故障なので高久先生と一緒に、別の動かなくなったマシンの部品をよせあつめて修理に追われる…
JABEE中間審査終了
前回の審査でシステムの継続運用が重要との点を受け、中間審査をうける。 昨年の認証評価の後でもあり、ひとまず無事実地審査を終える。 3年後は、また審査となるが、改善のシステムの継続のためには、大変とはいえ必要だろう。 面談に協力してくれた専攻科学生さんには、ひとまず感謝。
機械語とライブラリ、OSとは
機械語ができるまで
先週のプログラムの実行方式の説明の続きとして、機械語ができるまでを説明。 高級言語→(コンパイラ)→中間コード→(リンカ)→機械語。 リンカの役割としてライブラリコードの組み込みも説明する。 ライブラリの実装方式として、静的リンク方式と動的リンク方式を解説。
OSとは
これまでの話の中にも何度もでてきた OS の役割を改めて説明する。 基本プログラム+開発環境+ユーザプログラムから成り、 OS によって、共通の操作性と資源(CPU,メモリ,時間,周辺装置等)の利用が 提供されている。 資源の利用では、ハードウェア保護や排他制御といった資源保護機能が大切な役割であることの説明。
時間が余ったので雑談として、携帯電話などの組み込み系では、資源保護機能が無いことを話す。 逆に資源保護が無いのなら、どうして携帯アプリがなぜ安全に動くのかを説明する。 i-mode+FOMA は、Java のおかげで危険を排除、au(BREW)は、安全確認したものだけをダウンロードできる…といった説明をする。
2分木と演算子データの扱い
2分木構造の応用のネタとして、2項演算子による式の表現を2分木を用いて行う方法を説明。
式の表現方法
式の表現方法として、中置記法、前置記法 (ポーランド記法) ) FN ポーランド記法の由来は、提唱者がポーランド人だかららしい。 /FN 、後置記法 (逆ポーランド記法) 特に、逆ポーランド記法等は、書き方自体が演算子の優先順位を含んでいる点や、 コンパイラを作成する時などの機械語生成が容易、スタックで実装が容易といった点を説明する。 逆ポーランド変換も基本情報処理の問題として定番なので、説明したいけど時間がかかるし データ構造とは離れるので、紹介のみ。 式の優先順位や右結合・左結合といった用語も説明する。
2分木で式を表現
最後に2分木で式を表現・生成し、 その値を実際に再帰呼び出しで値を計算するプログラム例を説明する。
struct Expr { int data ; // 数値データの場合は、left=right=NULLとする。 struct Expr* left ; struct Expr* right ; } ; // 数値の木を生成 struct Expr* Integer( int x ) { struct Expr* ne ; ne = (struct Expr*)malloc( sizeof( struct Expr ) ) ; if ( ne != NULL ) { ne->data = x ; ne->left = ne->right = NULL ; } return NULL ; } // 演算子の木を生成 struct Expr* Operator( char op , struct Expr* l , struct Expr* r ) { struct Expr* ne ; ne = (struct Expr*)malloc( sizeof( struct Expr ) ) ; if ( ne != NULL ) { ne->data = op ; ne->left = l ; ne->right = r ; } return NULL ; } // 木のデータを式として評価する int eval( struct Expr* e ) { if ( e->left == NULL && e->right == NULL ) { return e->data ; } else { switch( e->data ) { case '+' : return eval( e->left ) + eval( e->right ) ; case '*' : return eval( e->left ) * eval( e->right ) ; } } } // 動作確認 void main() { // e = 1 + 2 * 3 ; struct Expr* e = Operator( '+' , Integer( 1 ) , Operator( '*' , Integer( 2 ) , Integer( 3 ) ) ) ; printf( "%d\n" , eval( e ) ) ; }
雷
説明の途中で、余りにも雷雨が激しいので、雑談として落雷や感電の説明をする。 んで、真面目な授業のネタよりも、こういう雑談の方が学生さんはよく覚えているのが、 現実だったりする。 (人間の体内は手足間で平均500Ω程)
トラックバック SPAM が大量に…
気づくとトラックバック SPAM が大量に書き込まれていた。 対応も面倒だし、トラックバック機能を止める。
おもしろいアイディアだけど…
広告アイディアを、製品販売元とは関係なしにユーザが提案して、 広告を企業に『押し売り』しようという、ユニークなビジネスモデル。
だけど…
だけど、広告サンプルなのか本気なのかちょっと解らないけど、 物は???である。
- 007:背が伸びるつり革:身長の低い人向けの電車のつり革に、 専用の広告を…というアイディアなんだけど、 ある意味… 『チビにけんか売る気かぁ〜?』 というアイデアである。
- 006:このブツブツが目に入らぬか:盲人向けの道路の点字ブロックを ベネトンカラーのように配色し、広告ネタにしようというアイデア… だけど点字ブロックは、弱視の人が『黄色』で目立つ目印としても 利用していて、黄色以外だと視認性が落ちるという視点が抜けているんだなぁ…
ということで『押し売り』の名前通り、 相手にとっての視点が『びっみょ〜♪』に配慮に欠けている、変なサイトだったとさ。