ホーム » 2009 (ページ 6)

年別アーカイブ: 2009

2025年6月
1234567
891011121314
15161718192021
22232425262728
2930  

検索・リンク

ワード境界とビットフィールド

構造体の説明の後半として、メモリの使用量と関係深いワード境界とビットフィールドの説明を行う。 最初に、主記憶の不足とプログラムの関係として、仮想メモリとメモリ不足時にハードディスクアクセスが多発し、スピード低下について述べる。

ワード境界

struct A {
   char name[ 3 ] ; // イニシャルと点数の構造体?
   int  point ;
} a[ 4 ] ;
境界無視 境界配置
|NNNP|   |NNNx|    N:name
|PPPN|   |PPPP|    P:point
|NNPP|   |NNNx|
|PPNN|   |PPPP|
|NPPP|   |NNNx|
|PNNN|   |PPPP|
|PPPP|   |NNNx|
|PPPP|

CPUに比べて、主記憶の速度は遅いため、メモリアクセスは必要最小限にしたい。 しかしながらワード境界を無視すると、a[0].point の取得には、2回のメモリアクセスが 発生するため、処理速度が低下する場合がある。 このため、name 3文字の後ろに1byteの空きを設けて、ワード境界をまたがらない様に 構造体の要素を配置するのが一般的。

この話の前に、char=8bit=1byte=0..255(-128..0..127),32bitCPUなら、 int=32bit=4byte=-2^31..0..2^31-1といった復習を簡単に行った。

メモリインタリーブとよばれる方式を使うと、 ワード境界があっても最小限のメモリ参照で済むが、ハードウェアが複雑化する。 情報処理技術者試験を受けるのであれば、インターリーブも理解しておくこと。

ビットフィールド

struct YMD {
   int  year ;
   int  month ;
   int  day ;
} ;

といった構造体では、12byte のメモリを使用するけど、メモリ使用を減らすには、 year=0..2047,month=0..15,day=0..31と考えれば、20bitで十分。 メモリの使用量を減らすために、year , month , day を1つのint型で覚えるには?

ymd = year *10000 + month*100 + day ;
printf( "月=%d" , (ymd % 10000) / 100 ) ;

という方法もあるけど、2進数として年月日を覚えるのであれば、

// YYYYYYYYYYY000000000
// or         MMMM00000
// or             DDDDD
ymd = (year << 9) | (month << 5) | day ;
printf( "年=%d" , ymd >> 9 ) ;
printf( "月=%d" , (ymd >> 5) & 0x0F ) ;
printf( "日=%d" , ymd & 0x1F ) ;

とすれば、int 型で、年月日を必要最小限のbit数で保存できる。 しかしながら、2進数演算は分かりにくいので、以下のようなビットフィールドを使えば簡単。

struct YMD {
   unsigned int  year  : 11 ;
   unsigned int  month :  4 ;
   unsigned int  day   :  5 ;
} ;

割り込みとOSの関係

先週の割り込みの説明を受け、その割り込みを使うOSの機能について解説を行う。 先週はこの計算機システムの授業直後に、子供のインフル発症が分かり自分の体調不良と 合わせて急遽自宅待機となったこともあり、 最初の雑談で新型インフル感染者がいないことを確認した。

割り込みとOSの関係

割り込みの応用の例として、タイマー割り込みを使ったマルチタスク処理を説明する。 割り込み発生時に、現プロセス情報を保存し、OS内の処理で実行待ち行列のプロセスより、 スケジューラが1つを選び、前回実行時のプロセス情報を復帰させながら、処理が切り替わる ことを解説。スケジューラについては、基礎的なラウンドロビンのみ。

次に入出力割込みを使った処理の説明として、最初に入出力プロセスが命令発行後に、 入出力待ちとなり、デバイスからの入出力割込みで状態を復帰し処理が継続されるまでを 説明する。次に、この時系列を、OSがどの様に介在するのかをさらに詳しく説明する形式で、 説明を追加する。

同じく入出力割込みを例にしながら、特権モードとユーザモードについて説明し、 ソフトウェア割り込みを用いてOS内の特権モードに移行し、呼び出しチェックをうけた後で、 デバイスドライバを呼び出し、デバイスに命令が伝わるまでを詳しく解説する。 これにより、ユーザプログラムが、 ハードウェアを直接操作しセキュリティチェックをかいくぐることができないシステムについて 理解してもらう。

ネットワークの導入説明

後半の青山先生の計算機アーキテクチャの講義までの残り講義数も少ないため、 早々に後半の説明目的のネットワークについて、導入説明を行う。

ハードウェア共有(プリンタサーバ)、データ共有(ファイルサーバ)、サーバの計算機能力の利用 の説明により、資源を共有することができることを説明する。 これに加え、処理依頼を複数のコンピュータで実行することの「負荷分散」や、 コンピュータ故障時のサービス停止のリスクを減らすことができる「リスク分散」について 説明する。

残り授業は11/16,11/27(曜日振り替え) の2日間のみ。

第3回歯みがきロボットコンテスト

福井県歯科医師会主催の、歯みがきロボットコンテスト第3回大会が、開催されました。 高専からも2台が参加しましたが、昨日のシード権取得の大会では準優勝ながらも、 今日の試合では、残念ながら負けてしまいました。

今年のルールでは、車体ルールでの制限が緩やかだったので、面白い車体があつまり、 盛り上がって楽しい試合でした。

リモコン部門

自律部門

第3回歯みがきロボットコンテスト(電子情報後援)

福井県歯科医師会主催の福井高専後援にて開催されている、 第3回歯みがきロボットコンテスト『いい歯の日』の11/8(シード権大会は11/7)に開催されました。 電子情報工学科では、選手としての参加の他、試合審判などの運営で協力させて頂きました。

電子情報から参加した2台の車体は、前日のシード権獲得のプレ大会の自律部門にて2位では ありましたが、11/8の大会では残念ながら、負けてしまいました。 決勝試合の動画風景は、こちらにて掲載しております。

自律部門(電子情報参加車体)

リモコン部門(小学生部門)

2009年11月8日(第137回)

今週は収録でお届けしました。

  • 英語の囃子 第19回 吉田先生、電子情報4年丸山さん
    英語の桃太郎を読んでみよう
    eng091108.mp3
  • IT研究会で作ったゲームについて

Emacs+trampの再発見でWindows環境にMeadowを…

Emacsの中からリモートファイルの編集は、昔は ange-ftp をよく使っていた。 しかしながら、ftp がセキュリティ面から使われなくなり ange-ftp は使わなくなり、 最近は直接Loginが多かった。 先日、tramp という機能を見つけて、改めて Emacs 環境を整備。 Windows 環境にも Meadow を入れる。しかし、tramp を使おうと思っても、 意外と設定が必要であった。 .emacs.el の置き場所用に環境変数のHOMEを設定し、 同様に cygwin の PATH を通して、 "fakecygpty.exe" をインストール。

Linux Server,MacBook, Meadow のどの環境でも動く、.emacs.el を作成して、 気持ちのいい環境になりました。

ajaxtermの設定修正

自宅より、職場のサーバを触るときには、ajaxterm を経由して、ssh のトンネルを掘って 行っていたが、最近ずっと ajaxterm での login に失敗していた。 ajaxterm のバージョンアップが原因かと思っていたけど、 自宅サーバ意外のアクセスを避けるための、アクセス制限が原因だった。 自宅サーバのIPアドレスが変更になっていた…

ヨッタバイト時代だそうな…

先日、情報構造論の授業にて、ポインタが何バイトというネタから、 16bit /32bit/64bit アドレス空間がどの程度という話を紹介した。

私の学生時代であれば、ポインタ=16bit,64Kbyte 空間で、Intel 8086にてセグメントを 駆使して、もうちょいと使えてたけど…という狭い空間。 んで、32bit=4*1024*1024*1024=4GBで、主記憶でさえ32bitを越えるのはあたりまえ。 だからこそ、今からのOSは、64bit=16*K*K*K*K*K*K=16EB(エクサバイト)。 Kilo/Mega/Giga/Tera/Peta/Exa/Zetta/Yotta

しかしながら、インターネットに流れるデータを覚えようものなら、それでも足りない状態で、 米国家安全保障局(NSA)は、2000億円かけて、Yotta Byte の巨大ストレージを作るかも… という記事がでている。 うーむ、そのデータのうち、どの程度が本当に記憶する必要のあるデータなのだろうか…. NSA的にはやっぱり、 「何気なく公開されているYouTube 画像の1フレームに実はテロの爆弾の作り方が 埋め込まれているかもしれない」から、 全インターネットデータは保存しないといけない…という考え方なのかなぁ…

データベース演習テーマ

子供が新型インフルエンザにかかった中、風邪をひいたようでインフルエンザと 判別困難ということで、インフルエンザ同様に熱が引いて2日は出勤するなとのお達しにより、 欠席です。

データベースではもう少しSQLの解説をしてからの演習を予定していましたが、 以下の通りの演習とします。

  1. 11/4,11/5の両日を課題とする。
  2. 提出期限は、中間試験前まで
  3. WebによるSQL体験環境にアクセスし、教科書に記載されているSQLの例題を実行し、基本的動作を確認せよ。
  4. 次に、自分で考えた、検索として意味のあるSQLコマンドを2つ実行し、 その処理的意味と、処理結果をレポートにまとめよ。
  5. ただし、FROM節に複数のテーブルを指定するような検索であること
  6. 次に、その検索と同様の処理を、C言語にて記載したプログラムを作成せよ。
    教科書のデータと同様のC言語のひな型
  7. SQL,処理の意味,結果,C言語,以上のことから分かったことを、レポートにまとめて提出

2009年11月1日(第136回)

  • メールテーマ:この秋みんな何してる?
  • 北陸アンカンファレンス2009の会場の石川高専にいるコバピーたちと生電話
  • 数学の部屋 第49回「グラフ電卓とべき関数」 長水先生、市波さん、長谷川さん
    放送中に出てくるグラフはこちら
    math091101.mp3
    photo09110101.jpg
    これがお話の中心のグラフ電卓です。

システム

最新の投稿(電子情報)

アーカイブ

カテゴリー