コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2008年3月10日 >>> 2008年2月12日
link もっと後

2008年3月10日

かーねる

以前、hdk神からLinuxカーネルは最適化を有効にしないとコンパイルできないという話を聞いたのですが、詳解Linuxカーネルをパラパラと読んでいたら理由が書いてありました。

この不思議な現象を生み出す原因はfix_to_virt関数にあります。どのアーキテクチャにもあると思います。ざっと確認した限りではmips, sh, x86_64, sparc, i386, umに同様の関数が定義されていました(ファイル名はasm/fixmap.h)。
例えばmipsのコードを見ると、以下のようになっています。

fix_to_virt関数(linux kernel 2.6.23.8)

static inline unsigned long fix_to_virt(const unsigned int idx)
{
        /*
         * this branch gets completely eliminated after inlining,
         * except when someone tries to use fixaddr indices in an
         * illegal way. (such as mixing up address types or using
         * out-of-range indices).
         *
         * If it doesn't get removed, the linker will complain
         * loudly with a reasonably clear error message..
         */
        if (idx >= __end_of_fixed_addresses)
                __this_fixmap_does_not_exist();

        return __fix_to_virt(idx);
}

引数idxには必ず __end_of_fixed_addresses未満の定数を渡します。するとこのコードが最適化される際にifの条件が評価され、if文が常に成立しないことがわかります。コンパイラはifブロックを全て消しさってから、呼び出し元の関数に埋め込み(インライン展開)ます。

__end_of_fixed_addressesってのは、各アーキテクチャの固定メモリマップのアドレスを定義するfixed_addresses列挙型の最後に置かれる定数です。値そのものより「どの固定メモリマップアドレスよりも大きい」ことが重要です。この値を越えたアドレスへのアクセスは不正なアクセスなのです。
mipsでは以下のような列挙型で定義されています。

idxに渡すfixed_addresses列挙型

enum fixed_addresses {
#define FIX_N_COLOURS 8
        FIX_CMAP_BEGIN,
#ifdef CONFIG_MIPS_MT_SMTC
        FIX_CMAP_END = FIX_CMAP_BEGIN + (FIX_N_COLOURS * NR_CPUS),
#else
        FIX_CMAP_END = FIX_CMAP_BEGIN + FIX_N_COLOURS,
#endif
#ifdef CONFIG_HIGHMEM
        /* reserved pte's for temporary kernel mappings */
        FIX_KMAP_BEGIN = FIX_CMAP_END + 1,
        FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,
#endif
        __end_of_fixed_addresses
};

正しくない引数(変数や __end_of_fixed_addresses以上の定数)を渡す呼び出しがあると、if文が消去できず __this_fixmap_does_not_exist関数の呼び出しが残ります。しかしこの関数はどこにも定義されていないため、リンク時にエラーになるのです。

つまりこのif文は、最適化によって消去されることを前提に作ってあります。逆に言うと、最適化しなければ正しい呼び出しでも __this_fixmap_does_not_exist関数の呼び出しが残ってしまってコンパイルが通らないことを意味しています。

こうすることで実行時のチェックを省略できて速くなるのでしょうけど、gccの挙動にべったり依存しています。この技を使わずとも実現できる何か良い方法は無かったのかなあ…。

編集者:すずき(2008/03/11 21:18)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年3月9日

古都

大下さんと京都の寺巡りをしました。今回は東寺(教王護国寺、真言宗)と知恩院(浄土宗)です。

東寺では五重塔を撮ったのですが、上がほとんどちょんぎれて見られたもんじゃない写真になりました。しかもその後、携帯の電池が切れてお亡くなりに…。

東寺の五重塔の中は良かったですね。真ん中のでかい柱(心柱、しんばしら)は大日如来を表してるとか、心柱は建物と独立していて伸び率が違うとか、そのせいで長さが合わなくなって心柱だけ短くしたとか。…心柱にしか気持ちが行ってないですな。

金堂はぶつぞーがいっぱいです。あとは、灌頂院(かんじょういん)ってところを特別公開していました。

知恩院は特別公開の三門が面白かったですね。階段が急で危ないけど…。

関西在住

関西に住んでいるものの、面倒くさくてあまり京都には行ってなかったので、どこの寺に行こうとも初めて訪れる場所ばかりです。一方、大下さんは何カ所も巡ってるので2回目とか3回目のことが多いですね。

今回は東寺も知恩院も特別公開をしており、大下さんはご満悦でした。あぁーいや、どちらかというと特別公開を狙って行った、というべきでしょうかね。

編集者:すずき(2008/03/11 21:19)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年3月8日

梅の季節

大阪城公園に梅見に行きました。満開とのことでしたが、思ったほど咲いていない?梅の季節なのに…と疑問に思いつつ、咲いている木を見つけて写真撮ったり、香りを楽しんだり。梅は良い香り。


咲いてた梅の木

梅林の終点に看板があって、それによるとなんとこの狭い公園に90種類以上植えてあるのだとか。たくさんの種類を一度に見た方が得!って思ったんだろうけど、風情が…。まあ関西らしいといえばそうなんですけど。

逆に、多種類なので多少時期を外してもどこかの木が咲いているという利点があります。時期を過ぎても諦めないで見に行ってみましょう。多分咲いてます。

みんなでシアタールームを借りてスマブラしました。でかい画面でスマブラをやると目がすごく疲れる…。

編集者:すずき(2008/03/11 21:19)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年3月7日

誕生会

久々に同期の人と飲み会をしました。

んで、いつもの飲み会かと思いきや、ケーキをもらって誕生日をお祝いしていただきました。


誕生日のケーキ

いやーこの年になっても、祝ってもらえるとそりゃ嬉しいもんです。感謝感謝!!

編集者:すずき(2008/03/11 21:19)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年3月6日

相変わらずなJRさん

西明石(兵庫県)行きが来たんですが、電車の表示は草津(京都府)行き。行き先が真逆?それが何か??と言わんばかりの誤表示。

車内は車内で電光掲示板が狂ってて、本来表示すべき駅の一つ先を表示していました(※)。長岡京で乗ったら、山崎って出てるし、高槻駅で降りるときも「ただいまの駅は摂津富田」だった。てきとーねえ。

2〜3駅止まってもずれっぱなしで直らないところを見ると、電光掲示板だけど表示内容は手動で制御しているとみた。何か微妙…。

参考: JR京都線の駅
(至、大阪) - 茨木 - 摂津富田 - 高槻 - 山崎 - 長岡京 - 向日町 - (至、京都)

新しくてもおかしい

とまあ以上が古い電車(たぶん JR西日本221系です)の話。新しい電車(たぶん JR西日本321系です)は天井からでかい液晶ディスプレイが下がっていて、片方は駅名や路線図を表示して、もう一方はCMを流し続けています。こいつもときおりおかしいです。

駅名を表示する方はあまりおかしくなりませんが、終点を越えた地点に居ることになっていたり、近郊路線図のまま固まって現在地の表示を諦めている時があります。

またCMを流している方のディスプレイもハングアップすることがあります。先日などはクイズ番組の問題出題画面で固まっておりました。他にも多数CMがあるなかで、なぜそこで固まるのか?答えが気になって仕方ない。

編集者:すずき(2008/03/11 21:19)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年3月4日

仲間割れ

アサヒコムのニュースを見てたら、こんなニュース(ゆうちょ銀、ヤマトのメール便使う 日本郵政社長が怒る)がトップにどかーんと載ってて、思わず笑ってしまった。

ゆうちょ銀行が全国の郵便局に冊子を送る際に、身内の日本郵便ではなく、ヤマト運輸のメール便で送っちゃって、日本郵政の社長がもうカンカンです。ニュースによるとお互いの言い分はこう(超絶意訳)。

日本郵便 「そういう仕事はうちだろが!何ヤマトに回しとんじゃー!!」
ゆうちょ銀「お前がさっき『そんな仕事できねえ』って追い返したからだろがー!!」

日本郵便側の「最初は断った」とか「公募の存在すら知らん」のはあんまりですけど、一回断られたからってあっさりヤマト運輸に回しちゃうゆうちょ銀も相当手厳しい。郵政公社って仲悪いんですかね?

編集者:すずき(2008/03/05 21:55)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年3月3日

screen + zshの幸せ

会社でscreenを使うようにしてからそこそこ経ちました。といっても時間が過ぎただけで使う機能は大したこと無いんですけども。

今はターミナルを縦に長くびよーーーんと伸ばして(70〜80行くらい)、screenで2画面に分割するのがお気に入りです。なのでウインドウ関連のキーバインドだけいじってます。その他は便利そうな設定を拾っては寄せ集めました。

現在の .screenrc

escape ^t^t

# disable vbell toggle
bind ^G
bind g

# disable screen lock
bind ^X
bind x

# bind 'window remove' to x and ^X
bind ^X remove
bind x remove

# bind 'window only' to q
bind q only
# bind 'window split' to s
bind s split

vbell off
defscrollback 1024
defencoding UTF-8

autodetach on
startup_message off

caption always "%{=d wk} %-w%{=s wk}%n %t%{-}%+w %= %{=d kg}%y/%m/%d %c"

今感じる不満は、ステータス部に表示されるスクリーンの名前が全部「1:bash 2:bash 3:bash」とbash以外何も表示しないことかな。大量にスクリーンを作ると、ステータス部が全部bashで埋まります。

ネットで調べたらzshのpreexec機能と .screenrcを組み合わせれば願いが叶うみたいです。ですがね当方はbashなのでね、そんな便利な機能はないのですよねー…。zshも入ってた気がしなくもないですけどねえ。

あとは細かい点ですが、

  • コピーモードで / 押した(検索モード)ときに、lessのように検索ヒットした文字をハイライトしてほしい
  • Ctrl+sでインクリメンタル検索できるけどCtrl+gで取り消すとなぜか検索開始位置に無理矢理戻されてむかつく
  • ステータス部分に日本語を出すとメチャクチャになる

あたりが気になります。新バージョンで改善されているかもしれないので今度コンパイルしてみようかな…。

bashの場合

じゃあ本当にbashしかない人はどうすんのよ、って疑問が沸いたので引き続き調べてみると、bashのデバッグフック機能を使ってpreexecを無理矢理実現している設定(preexec.bash.txt)が見つかりました。

これは面白いって事で、上記ファイルを元手に作ったら上手く行きました。けどね、どうしてかjobsの一覧がおかしくなりますのよ?なんでなんで?

調べるとbashのバグで、デバッグフックで実行した文がジョブリストの内容を書き潰すそうです。うーむ、困りましたね。jobsは結構使うからダメですね。

ちなみに手持ちのDebianだと発生しませんのでもう直ってるんです。が、以前も書いたように腐れyumが腐っててアップデートできないなんてもう腐りすぎ。FedoraもDebian系と微妙に操作が違っててちくちくとウザい。あーすげぇ、イライラするぜぇ〜〜(´皿`;) 。

編集者:すずき(2008/03/05 21:55)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年3月2日

あるある、あるある

本屋で医龍の16巻を見つけて買ったんですが、全然わけがわからない。何が起きたのかと思ったら、単に買い忘れて15巻読んでないだけだった。

よーし、15巻はAmazonで注文しちゃ…って…、それって最初からAmazonで買えば良かったんじゃないのかな?ん?まあいいか!

そういえば実家にいた頃、家族で名探偵コナンとか金田一少年の事件簿を楽しみ読んでました。その時は確か既に同じ巻がないか家に電話で確認するのが恒例だったような。コナンとか金田一って何巻まで買ったかさっぱりわからんのよ。

マンガは読みたし、部屋は狭し

引っ越しのときに漫画本を全部売り払った上に、現在住んでいる寮もそんなに広いところではないしあまり本を買いたくありません。既に置く場所ないし。

が、今まで読んでいたマンガはどうも続きが気になって、つい買ってしまいます。おかげでどのマンガも最新から2〜3巻しかありません。なんとも中途半端。

編集者:すずき(2008/03/05 21:53)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年3月1日

モナー

某顔文字ではありませんよ(・∀・)

以前も全クリしたロードモナーク(SFC版: 日本ファルコム、エポック)を懲りずにまたやっています。一面30分程度という時間が非常に便利です。RPGなんかはついやりすぎて深夜2時を過ぎたりするから危険です。

2回目の挑戦とあって、前より旨くなっていることを期待したのですが、残念ながら実力はあまり変わないようです。クリアするだけなら簡単ですが、上達の道は甘くないというナイスバランス。

ロードモナークのほぼ全てを攻略している有名なサイト「ロードモナークいろいろ」を見ていると、自分なんかには信じられないようなスピードでクリアしている人がたくさんいるようです。

ランキングコーナーに全面クリア後のスコア(残日数とか)が載っているのですが、自分の二倍以上の人がぞろぞろいます。何、この記録…怖っ……。

編集者:すずき(2008/03/05 21:53)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年2月29日

うるう年

今日は4年に一回しかない肉の日(というのは冗談で、本当は2月9日らしい)です。4年に特別な意味を見出す人も居るでしょうが、昔の人が適当に作った暦を今も適当に引きずっているから起きてしまうだけで、別に何も意味のない日なんですよね。

電車

JR京都線はときおり途中で連結されたような形の編成
つまり、<運転席]-[客車]-[客車]-[運転席>-<運転席]-[客車]-[運転席> のような形
が走っています。田舎の方で分離するんでしょうかね。

で、いつもの通勤で乗る真ん中辺り(3〜4両目付近)が運転席付きの車両になっています。今日は暇だったので運転席をずっと眺めていました。最近の電車は全てデジタルメーターなんですね。

運転台を眺めると架線電圧とか列車の速度という比較的わかりやすい数字と、BC圧、MR圧とかいう謎の数字が仲良く並んでピコピコ動いておりました。BCって何だろうね??

編集者:すずき(2008/03/01 00:44)

コメント一覧

  • hdkさん(2008/03/01 11:24)
    運転席のところが通路になってる車両、数年前に常磐線で見たことがあります。アナログメーターでしたがw
  • すずきさん(2008/03/01 14:59)
    なんと、常磐線は通り抜けられるのか。京都線は運転席の通り抜けできません。
    できないと困るか?と言われると微妙ですけど…。
open/close この記事にコメントする



2008年2月28日

この世の覇者は

生物が活動する目的の一つとして「圧倒的多数派を維持し続けること」があると思います。

例えば圧倒的多数に至るために人類は、目に入った他者を滅ぼす、という手法を取りました。策は功を奏し、人類は急激に増えましたがあまりに攻撃的すぎて自身の首も絞めています。人類は圧倒的多数を維持できる程の力を持たない種なのかも知れません。

まあ、人類が生物の覇者か否かは時間が証明してくれるのでさておいて。

周りを攻撃して滅ぼす方法で未来が望めないなら、周りと共生することで覇道を歩む生物はいないのでしょうか?自分は、共生する生物はいずれ攻撃的な生物にやられて消えるものだと思っていたのですが…、実は意外と近く成功者が居たのでした。

その名はミトコンドリアです。ミトコンドリアは酸素からエネルギーを生む器官です。一説によれば古代に存在したバクテリアが細胞内に取り込まれ、共生を始めたことが起源だと考えられているそうです。その説を信じるならミトコンドリアは真核生物(細菌類を除いたほぼ全ての生物)と共存し続ける生物と言えます(※)。

細菌の一派として生きる道もあったでしょうけれど、真核生物との共生を追いに追って「この世の全ての真核生物と一蓮托生の関係を築くこと」に辿り着いたのでしょう。ミトコンドリアはこの世の覇者たる生物に到達したと言えるかもしれません。

(※)ミトコンドリアは独自のDNAを持ち、分裂によって増えます。しかし細胞外では生存できず、独立した生物ではありません。この際どこから生物と呼ぶかは曖昧にしておきましょう…。

編集者:すずき(2008/03/01 00:25)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年2月26日

もんふぁー

モンスターファームオンライン始めました。ゲームの内容以前にね、製品としてどうなのよ?ってとこが多すぎます。

  • クライアントがルートキット
  • クライアントが無意味に重い
  • キャラの顔の大半が変
  • メッセージ送りの反応が鈍い
  • 戦闘も激もっさり
  • 戦闘は攻撃ボタンをいちいち押すシステム、反応鈍い
  • 他人の操作するキャラが数人出てきたら処理落ち
  • 透明人間(キャラの名前だけ出る)がいっぱい歩いてる

最近 nProtectを初めとしたルートキットを入れるのがネトゲの標準になりつつあるんですが、いい加減やめて欲しいな。あと我が家のPCではCDを読まない(モンスターを作るときに使う)のですが、Daemon Toolsのせいかもしれないです。ま、どうでもいいけど。

とにかく全体がもっさりーもっさらーもっされすとーです。非常にイライラします。ベータ版とはいえひどすぎる。テクモさんガンバっておくれよ。

編集者:すずき(2008/02/27 23:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年2月25日

ゆるさを越えて脱力

昨日、萬栄に買い物に行った際にへんてこりんなキャラクターが頑張ってました。

近くで虎っぽいパーカー(顔出てたけど)を来ていたおじいさんに聞いてみたら、名前はももんがと言うそうです。…うーん?どの辺がモモンガなの??全然わかんないよ。ネタか?


ももんがくん

内藤ホライゾン「ちょっおまっ、誰がモモンガだお!どうみてもブーンはブーンだお。しまいにはブーンするお!」
⊂ニニニ(^ω^)ニ⊃ ブーーーーン

本当にありがとうございました。

編集者:すずき(2008/02/27 23:16)

コメント一覧

  • 超神ネイガーさん(2010/06/15 13:02)
    これって、ゆるキャラだねぇ。
    モモンガって茶系じゃなかったっけ?
  • すずきさん(2010/06/16 19:09)
    >超神ネイガーさん
    懐かしい記事にコメントありがとうございます。

    確かに動物のモモンガは茶色ですが、こんな丸くないし、モモンガの最大の特徴である滑空&皮膜を取り入れてほしかったです。

    余談ですがこのキャラクター、この日見たきりその後一度も見かけません。

    どこに行っちゃったんだろうなあ…。
open/close この記事にコメントする



2008年2月24日

至高の京都へ

大下さんが住まい探しで京都にいるらしいので、その合間を利用して2人で龍安寺に行きました。寺に向かう前に茶寮都路里(京都府下京区、京都駅JR伊勢丹6階)でパフェを食べたりしてたら、外がいつのまにかあやしい空模様。というか大雪。

JR京都駅から龍安寺に行くには金閣寺あたりでバスを乗り継ぎます。ところが降りしきる雪のせいなのかバスが待てど暮らせど来ない。ちくしょう、雪め。雪なんかいらないんだよ…。


龍安寺の石庭

外と同様に龍安寺も寒かったです。石庭は春が一番綺麗みたいですが、元々真っ白な砂に石があるだけの庭なので、雪が積もってても良い味出してます。暖かい季節に縁側で寝ころがってこの庭を見られたなら最高だなあ。

編集者:すずき(2008/02/27 22:56)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年2月23日

朝から晩まで

大阪の問屋街にある萬栄(大阪市中央区)へ特売品を狙って朝から買い物に行きました。友人は特売品をゲットしていましたが、自分は残念ながら特売品を一切買いませんでした。宝石とかアクセサリばかりなんですもの。

開店前の店に並んだのは今回が初めてだと思います。誘われない限り自分で並びに行くこともなかろう。まあ、ろくに調べず行って「まだ開いてないYO!!」ってパターンはありそうです。

昼食後、昼からの買い物メンバーと合流して、引き続き買い物です。が、もう何も買う物も見る物もありません。土曜日はいつも昼間で寝るのが普通で、今日のように朝からずっと活動しているのと眠くなってきます。途中であまりに眠くなってきてマクドナルドで寝てました。もう最悪の客ですよ。

しゃぶしゃぶ

晩はH高さんの退寮&結婚予定おめでとうパーティーってことで、あじびる花心本店(大阪市北区)という店でしゃぶしゃぶを食べました。なぜかカラオケ設備のある部屋に通されました。食べながらカラオケ?珍しいね。

H高さんの奥さん(予定)は歌が上手でした。自分も歌おうと思ったら店の人に時間ですって言われてあえなく終了しました。

ボウリング

解散して残ったメンバーでラウンドワンへ。ボウリングしました。3ゲームやって、最後のゲームはレーン対抗で勝負(罰ゲーム:ビリがトップへジュースおごり)でした。負けも勝ちもせず2位です。無難が一番です。

スコアは80、100、110って感じでした。最後のゲームがレーン対抗勝負だったので上り調子だったのはラッキーでしたね。

編集者:すずき(2008/02/27 22:59)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年2月22日

ぷち工場実習

訳あってビデオデッキ(の箱)をたくさん運んだので疲れました。明日は筋肉痛になっているに違いない…。

帰り道、上司に車で乗せていってもらった上にラーメンまでおごってもらいました。なんか申し訳ないです。

編集者:すずき(2008/02/27 21:46)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年2月20日

同期機構

マルチスレッド処理とか調べていると、セマフォ、ミューテックス、モニターといった同期機構達の名前を良く目にします。違いが良くわからぬまま使っているのは良くないと思い立って復習してみたものの…こんがらかってきた。難しい。

以下、そのまとめ。全般的に用語があやしいので正しい用語を知ってたら教えてください。

セマフォとミューテックス

やはりこの二つの違いが難しいです。思いこみが入ってる可能性大なのでご指摘は大歓迎です。

ミューテックス(MUTual EXclusion)はロックまたはアンロックの二状態を持つ同期機構です。ロックされているミューテックスを他の人がロックしようとすると、他の人はロックを拒否されるか、ロックが解除されるまで待ってからロックします。ロック操作にはいくつかの概念があります。

ロックの所有権
AさんがロックしたらAさんが所有者となり、他人のBさんがアンロックすることはできません。Aさんが責任を持ってアンロックしなければなりません。
再帰ロック(リカーシブ・ロック)
ロックした所有者に限って、ロック中のミューテックスをさらに何度もロックできます。これは再帰関数でロックするときに便利です。
弱いロック
条件によってロックに強弱がつくか、または初めから優先順位があります。強いロックが弱いロックを無理矢理アンロックして、ロックを強奪できます。奪われた方は異常な状態になるので、終了させるか、リカバリ処理で元に戻します。これはデッドロックの解消に使えます。

ミューテックスについてはこんなもんでしょうか?次、セマフォいってみよう。

セマフォ(Semaphore)にはロック/アンロックの概念はありません。あるのは P操作(セマフォが0でなければ数字を1減らす、0ならば待つ)と、V操作(セマフォをとにかく1増やす)です。ミューテックスは複雑な型になり得ますが、セマフォは整数値で実装可能でしょう。実装したこと無いけど。

セマフォはある区間(同じセマフォを対象とするP操作とV操作の間)に同時に何人入れるか?だけを制御します。

例えるならば、食堂で料理を載せるトレーでしょうか。食堂の入口で店員(セマフォ)にトレー(セマフォの値)をもらい(P操作)、食事した後、出口でトレーを店員に返す(V操作)というルールです。食堂にトレーが3枚しかなければ、一度に食事できる人は3人(スレッドやプロセス)に制限できるという仕組みです。

チケットの枚数(セマフォの初期値)を変えれば、ミューテックスと等価なセマフォも作れます。二値セマフォ(0か1しか値を取らないセマフォ)と言うそうですが、P操作がロックで、V操作がアンロックに相当します。

しかしセマフォにはミューテックスのような所有権、再帰といった概念はありません。自分のロックが誰かに壊されてしまう可能性(アンロックのときに異常な状態になるので検知はできますが…)や、ロック区間で再帰すればデッドロックに陥って自爆することがある。ってことです。

もちろんセマフォに所有権付けたって、ミューテックスの所有権がなくたって一向に構いません。世の中を見ても、実装によって同期機構の動作はバラバラです。同期機構って何だかわからないー!と感じる主因は単に「実装依存が多すぎる」だけかもなあ…。

その頃Linuxは

ミューテックスとセマフォの実装の例として、Linuxのpthread(POSIX threadの略?)mutexとPOSIXセマフォの説明を見ます。pthread mutexはその名の通りスレッド間のみの同期を取る機構であり、POSIXセマフォはプロセス間共有ができる違いが大きいでしょう。

POSIXセマフォでは名前付きと無名を選べます。名前を付けるとファイルとして見えるのも大きな特徴でしょう。これはあくまでもPOSIXが規定する機能で、セマフォがみんなそうなっているわけではありません。しつこくて申し訳ないです。

一方pthread mutexはというと、基本的には二値セマフォです。しかし所有権チェック&デッドロックのチェックや、再帰ロックが可能になるオプションを指定できます。しかし 〜NP(non portableかな?) という名前を見るに、恐らくPOSIX準拠じゃない機能です。

一方Javaは

Javaにはセマフォとミューテックスとはまた別にsynchronizedという別の同期機構(モニタというらしい)が備わっていますが、Wikipediaによればモニタはロックで実現できます。奇遇だね俺もそんな気がするよっ、ってことでスルー。

JavaのミューテックスはLockインタフェースの実装クラス(ReentrantLock, ReentrantReadWriteLock)が相当します。どちらも所有権の概念と、再帰ロックの概念を持っています。

他にも公平なロックという概念をオプションとして提供しています。公平なロックは上記の説明で出てませんでしたねえ。あれまー…。簡単に説明します。

公平なロック
ロックしようとした順番にロックを渡す。
不公平なロック
ロックしようとした順番を無視して適当にロックを渡す。

ある一つのミューテックスをロックして仕事してアンロックする、という動きを繰り返しているAさん、Bさん、Cさんの3人がいるとします。3人が常に一つのミューテックスを欲しがっていますが、Aさんが偶然何度もロックを取得してしまうと、BさんやCさんはその間全く動けない状態に陥ります。

このときBさんやCさんは飢餓状態に陥っている、と言います。飢餓状態が起きないことを保証するロックの配り方、それが公平なロックです。

ReadWriteLockは多数の読み出し側(Reader)と少数の書き込み側(Writer)がいるときに有効なロックの戦略です。ReadLock(ReentrantReadWriteLock#getReadLock() で取得する)とWriteLock(ReentrantReadWriteLock#getReadLock() で取得する)のペアで使用します。

ReadLockは特殊なロックで複数人が同時にロックできます。WriteLockはReadLockと他人のWriteLockに対して排他的です。そのためWriteLockはReadLockと同時にかかることはありません。

何言ってんだテメェは!って思ったそこの貴女、表にしまし…たらちょっと見づらかったので、リストにしました。ReadWriteLockは大きく3状態に分けられます。

ロックされていないとき
どちらのロックも成功します。
ReadLockがかかっているとき
ReadLockは成功します。WriteLockは待ちます。
WriteLockがかかっているとき
ReadLockもWriteLockも待ちます。

同期機構においてはPOSIXよりJavaの方が何かと親切ではあります。しかし親切な機能は大概遅いというのもお忘れ無く。

編集者:すずき(2008/02/21 02:37)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年2月19日

意図的

Wikipediaのヒドラジンの項目を見ていたら、何か違和感を覚えました。

今も何度か読み返しましたが、やはり違和感があります。どこかというと、第二段落のこの下り(2008年2月19日現在)です。

気化吸引、皮膚への接触ともに腐食をもたらし全身を骨までドロドロに溶かす。

ヒドラジンは強アルカリで毒性も強いらしいのですが「全身を骨までドロドロに…」は言い過ぎというか、辞典らしくないアホっぽい書き方に見えます。

編集履歴を見ると匿名の誰かがこの下り「だけ」をわざわざ書き足したようで、意図的なものとしか思えません。何かヒドラジンに嫌な思い出でもあったのかねえ?

ん、文句言う前に自分で直せよって?まあそういうなって…。

編集者:すずき(2008/02/21 00:22)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年2月18日

こげくさいでんしゃ

15日の話になりますが、会社帰りの電車に乗ると機械の焦げるような臭いがしていました。臭いで鼻が痛くなったんでたまらず乗った方と逆のドアに逃げましたが、さらに焦げ臭さが増したので、隣の車両に避難しました。

電車を降りてから焦げ臭かった車両の横を通ったら、なんと外側も激しく焦げ臭い。下回りのどこかが焼けてるんじゃなかろうか?大丈夫なのかJR西日本。

編集者:すずき(2008/02/21 00:07)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年2月16日

須磨ブラ

「スマブラ」って打ったらとんでもない変換になったのでそのままにしておく。

友人(Senaさん)の部屋でWiiのスマブラXをやりました。64版を数回やったことあるだけでスマブラを語るのも失礼な話ですが、正直あまり面白くないというか、前にあった爽快感が無いです。

立ち攻撃(方向キーを押さずに攻撃)と横攻撃(左右キー+攻撃)の使い分けがイライラします。64にも横攻撃ってあったっけ?あっても覚えてないってことは、さほどイライラするものではなかったのでしょうけど。

あと全体的に判定が辛いっていうか、意地悪というか。バランス調整なのか、難易度を上げたのか。なんというかびみょ〜な出来です。

しばらくやったら面白くなるのかなあとも思いますが、人の家のゲーム機を使い倒すのはさすがに気が引け…って相当入り浸ってるので今更言えたもんじゃないけどさw

編集者:すずき(2008/02/18 21:15)

コメント一覧

  • senaさん(2008/02/21 00:15)
    別に気になさらず〜。
    一人でやるより面白いし、
    いつでも歓迎ですよー。
  • すずきさん(2008/02/21 20:44)
    > sena さん
    そういってもらえるとありがたいです。また遊びましょう。
    調子に乗って居ついてしまわないように気を付けます。
open/close この記事にコメントする



2008年2月15日

うおー

仕事で全く原因が分からずに苦労していた部分がついに解消した。原因に気づいたらなんてことないことなんだけど、気づくまでが長かったなあ。うーん、スッキリ。

基本的には、休みの日に仕事の内容は考えないようにしてますが、苦戦しているときほど気になって仕方ないです。そういうときはどうしても考えてしまいますね。先週辺りがまさにそんな感じでした。

飲み会

同期と飲み会。参加してた一人が仕事で行き詰まってる部分があると言って、飲み会の間もずっと考え事をしていました。あの状態では酒もうまくなかろうなあ。

なんというか、先週の自分を見ているようです。彼の問題があと一息で解決することを願いつつ。ガンバれ。

編集者:すずき(2008/02/18 21:15)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年2月14日

JDKのそーす

SunのサイトからJDKのソースがダウンロードできます。なんとタダなのです。

JDKのソースなんて何に使うの?と言いますと。Javaのライブラリの大部分はJava言語で書いてあります(一部はC言語ですが)。Javaを作った人達が書いたコードはこれ以上ない極上のサンプルと言えましょう。

私のようなJava素人ですと、斜め読みしているだけで発見がいっぱいです。

今日は自身のクラスのコンストラクタをthis(); で呼べることを初めて知りました。今までいちいちprivate void Initialize() とか作ってたよ。かっこわるー…。

編集者:すずき(2008/02/15 01:57)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年2月13日

リクルーティング

加藤研のゼミが朝早くあるようなので、先生に会えるかと思って朝早く行ってみました。こんな早く来て、鍵が開いてなかったらどうしよう…と思ったのですが、博士課程なお二人が居たので事なきを得ました。

京都のお土産はつまんないので、意表をついて「ひよこ」をおみやげにしたらほぼ100%の人に「なんでひよこ?」って聞かれました。作戦成功でございます。

何か勢いでゼミにまで出てしまいました。テラナツカシス。

研究室で皆さんと話したり、IKeJI&まぶっちーの研究の話とかを聞いていたら楽しかったです。一年経った今も、加藤研はとても良いところだったなあと思います。

会社

会社説明会で最後にちょろっと話しました。話が全く面白くなかったのか、皆さん怖い顔。こりゃ失敗か。

懇親会の会場を決める係だったのですが、決める際のすったもんだの割に、結局懇親会には5人しか来なかったので、決めても決めなくても何も変わらんのであった。悲しい…。

編集者:すずき(2008/02/15 02:24)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年2月12日

初めての

初めての有給取りました。3連休に繋げて4連休にするという大胆な使い方を試みたので、何か困難が待ち受けているのかと思ったのですが、上司に聞いてみたら「ああ、いいよ」って感じであっさりOKくれました。

他の人に聞いたわけではないので何とも言えませんが、お客さんに支障が出るような休み方でなければ、何も言われないでしょう。きっと。

編集者:すずき(2008/02/15 02:01)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2008年3月10日 >>> 2008年2月12日
link もっと後

管理用メニュー

link 記事を新規作成

<2008>
<<<03>>>
------1
2345678
9101112131415
16171819202122
23242526272829
3031-----

最近のコメント5件

  • link 24年6月17日
    すずきさん (06/23 00:12)
    「ありがとうございます。バルコニーではない...」
  • link 24年6月17日
    hdkさん (06/22 22:08)
    「GPSの最初の同期を取る時は見晴らしのい...」
  • link 24年5月16日
    すずきさん (05/21 11:41)
    「あー、確かにdpkg-reconfigu...」
  • link 24年5月16日
    hdkさん (05/21 08:55)
    「システム全体のlocale設定はDebi...」
  • link 24年5月17日
    すずきさん (05/20 13:16)
    「そうですねえ、普通はStandardなの...」

最近の記事3件

  • link 24年6月27日
    すずき (06/30 15:39)
    「[何もない組み込み環境でDOOMを動かす - その4 - 自作OSの組み込み環境へ移植] 目次: RISC-V目次: 独自OS...」
  • link 22年12月13日
    すずき (06/30 15:38)
    「[独自OS - まとめリンク] 目次: 独自OS一覧が欲しくなったので作りました。自作OSの紹介その1 - 概要自作OSの紹介...」
  • link 21年6月18日
    すずき (06/29 22:28)
    「[RISC-V - まとめリンク] 目次: RISC-VSiFive社ボードの話、CoreMarkの話のまとめ。RISC-V ...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 06/30 15:39