サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ノーベル賞
d.hatena.ne.jp/kohtani
Linux: ZFS, Licenses and Patents (http://kerneltrap.org/node/8066)最近、ZFSはFreeBSDに移植されたらしいが、LinuxでのZFS利用に関しては問題が2つあるらしい。ライセンスの問題 ZFSのライセンスであるCDDLはGPLと矛盾する。よって、そのコードをGPLのLinuxにはリンクできない。誰かがGPLでバイナリ・コンパチの再実装をするしかない。パテントの問題 SunはZFSに関してたくさんのパテントをファイルしている(提出しているだけで56個)。だから、たとえ再実装しても、それを利用することはできない。それに、特許使用料の支払いが必要な技術を含むコードというのは、そもそもGPLでは配布できない事になっている。「まぁでも、それはSunが決める事たよね。」「じゃあFUSEでCDDLのままならオッケー?」とかいう話。CD
独自にOS開発をしている人に対して、こんなニュアンスの意見をよく目にする。「自分でOSを開発するなんてバカじゃねーの?」むずがゆい・・・。「スシはやっぱりカリフォルニア・ロールがイチバンね」と主張するカリフォルニア在住の米国人と出くわした時くらいに、むずがゆい。なぜなら、OS開発、特にカーネルの開発というのは、プログラミングの中でも格別の面白さがあるから。「おまえそれ、ほんとにわかってて言ってんのか?」と問いたくなる。小一時間問い詰めたくなる。それでは、OS開発の何がそんなに面白いのか? 個人的な意見をまとめてみる。1)自分が神となって世界を創造する醍醐味OSの設計者は神だ。何もないところから、少しづつ世界を構築していき、やがて自分の思い描いた世界が現実のものとなる。正に"make world"。それには材料も道具も要らない。コンピュータさえ要らない。紙と鉛筆、あるいは頭の中だけでも、OS
OS関連の本はこの日付で管理していく。随時変更の予定。言語やツール関係の本を含めるとキリがないので入れない。お気に入りの本気になる本そのほかの本 = @a87
__builtin_expect()はgccの2.96よりサポートされた機能で、プログラマがコンパイラに対して、分岐予測のヒントを指示するもの。__builtin_expect((x), 1): xの値が1の可能性が高い場合__builtin_expect((x), 0): xの値が0の可能性が高い場合と書いておく。例えば、xは大抵の場合には0だからたぶんfoo()はあまり呼ばれない、という場合、 if (__builtin_expect (x, 0)) foo (); コンパイラの裏の人のためにこのように書いておくと、より効率的なアセンブル出力を吐いてくれる。制御がどちらに分岐しそうかは、コードを書いている人間が一番よくわかっているのだから、この仕組みは理にかなっている。最近のプロセッサは投機的実行をするし、分岐予測のミスによるペナルティが大きいものには特に効果がありそう。Linuxカー
Mark Russinovichは、最近ではSonyのルートキットを見つけたとして有名になったが、カーネル・オタクの間では昔から有名だった。NTのサービスをフックするDDJの記事や、regmonやfilemonのソースコードはWindowsをハックする際にとても世話になった。彼のインタビュー・ビデオは以下。http://channel9.msdn.com/Showpost.aspx?postid=294410彼の書いた「Vista カーネルの内部」という記事が面白い。Windows Vista カーネルの内部 : 第 1 部Windows Vista カーネルの内部 : 第 2 部Windows Vista カーネルの内部 : 第 3 部ようやく全3部が揃ったみたいなので、興味のある点だけまとめておく。CPU サイクル カウント普通、スケジューラはTick毎にカレント・スレッドがそのTic
NetBSDのgzipのソースをチェックしてたら、以下のような記述があった。 /* * gzip.c -- GPL free gzip using zlib. * GPL free - つまり、GPLコードが入っていないという意味。zlib自体はzlibライセンスだがここでの、 フリーを標榜するGPLに関してフリー という表現はちょっとした皮肉だと感じた。「他人の自由を制約しないBSDライセンスこそ本当に自由なライセンスだ。対してGPLは・・・」と、BSDL信者は言う。ただ、そういう人も最初からアンチGPLだったわけではなく、最初はこんな感じだろう。GPLはなんとなく押し付けがましいと感じる。商用でも抵抗なく自分のコードを使って欲しい。いちいちライセンス違反に対応するのが面倒。普段のOSにBSDを使っているから。BSDのコードから多くの事を学んだ。GNUのコードも思想もちょっと肌に合わない
ものすごく沢山の割込み要求が来て、プロセッサの実行時間を食いつぶす現象を、インタラプト・ストームと呼ぶ。これにはいくつかの原因が考えられるが、よくあるのがデバイスドライバのバグだ。ハードウェアのバグや設定ミスにより、デバイス側からの割り込みが何度も上がりまくる。デバイスから割り込みが上がったにもかかわらず、ドライバがそれを正しくハンドルできずに、割り込みが上がりっぱなしになる。割り込みがレベル・トリガの場合に、特定のドライバが別のデバイスの割り込みに誤って反応してしまい、正しいドライバまで制御が渡らない。FreeBSDには、カーネルにInterrupt Storm Protection(ISP)と呼ばれる検出機構が実装されている。以下はFreeBSD-7.0のインタラプト・スレッドの一部(kern_intr.c)。 86 static int intr_storm_threshold =
ドコモは、端末メーカーにFOMA端末向けソフトウェア・プラットフォームMOAP(Mobilephone Oriented Applications Platform)を提供している。このMOAPには、Linux版とSymbian OS版の2種類があり、最新のFOMA端末はこのどちらかのOSを搭載している。Linux版はMontaVista。以下、FOMA 903i系の端末のOSとプロセッサ。開発端末OSプロセッサ三菱電機D903iSymbian OSルネサス SH-Mobile G1富士通F903iSymbian OSルネサス SH-Mobile G1シャープSH903iSymbian OSTI OMAP2430(ARM11 core)ソニー・エリクソンSO903iSymbian OS TI OMAP2430?NECN903iLinuxTI OMAP2430 (ARM11)パナソニックP9
何か面白いプラットフォームがないか、ゲームのスペックを調べてみた。前にも書いたが、ゲーム機は世界中で低価格に手に入るので魅力的だ。自分のような趣味の日曜ハックでは、高価な評価ボードやデバッガは買えない。システムプロセッサMhzRAMエミュレータHack実績起動メモGameboy AdvanceARM7TDMI16.8256KVirtual Boy AdvanceGBA LinuxBoot Cable/ Flash CartNintendo DSARM7TDMI + ARM946E-S33+674MNDSemuDSLinuxSuperkeyPSPMIPS R40001~33332MPSPEPSPLinux/ BochsFirmware1.5GP2XARM920T + ARM940T200+20064M-Linux-DreamcastSH420016MChankastNetBSDMilCDPS
■[tech]ZoneとSlabの違い Solaris,FreeBSD,Linuxと最近ではどのカーネルもスラブ・アロケータを使用している。 カーネル・コードに限らないが、同じオブジェクトのためにメモリの確保と開放を繰り返している場合、いちいちメモリ・アロケータを経由するのは無駄だと感じることが多い。そんな時に思いつくのは、最初に沢山のオブジェクトを確保してプールしておく方法と、不要になったオブジェクトをアロケータに返却せずに再利用する方法。どちらにしろ、自分で未使用のオブジェクトを管理する手間が生じるため、これは個々のオブジェクトで扱うのではなく共通した管理機構を用意するほうが効率がいいはずだ。 また、スレッドやタイマなどカーネル内部で使用するオブジェクトはある程度、種類が限られるで、アロケータに要求されるメモリ・サイズというのは実はかなり偏っている。よって、カーネルのメモリ・アロケータ
■[tech]RTOSの要件 comp.real-time faqからの引用。あちこちで参照されてて、前から気になってたので、訳しておく。 原文: Comp.RealTime NewsGroup FAQ RTOSの要件 RTOSはマルチスレッドでプリエンプティブでなければならない。 スレッド優先度を持たなければならないが、デッドライン・ドリブンでなくても良い。 予測可能なスレッドの同期機構をサポートしなければならない。 優先度継承の仕組みがなくてはならない。 OSの振る舞いが(以下のように)提示されるべき。 RTOS開発元により明確に提示されるべき数字。 インタラプト・レイテンシ。これはアプリケーションの要求を満たして、かつ予測可能でなければならない。この値は同時にペンディングになるインタラプトの総数に依存する。 各システムコールの最長実行時間。これはシステム内のオブジェクトの総数にかかわ
試合でシュートが決まった。コーナーキックからのボールを、ゴール前に走りこんでヘディング。試合は引き分けだったけど、シュートが入った時はすごい気持ちよかった。来月の合宿まで、もう少し走りこんでスタミナをつけようと思う。
このページを最初にブックマークしてみませんか?
『Prex-組み込みリアルタイムOS開発日記』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く