The basic assumptions behind LRU have been invalidated by streaming media, garbage collection and other things possible in large address spaces, but until 2002 there weren't many replacements available that are suitable to be implemented in a general purpose OS. However, with the advent of LIRS, ARC, Clock-pro and CAR/CART algorithms, it looks like there could be a benefit to Linux in implementing
はじめまして、ありえるに入社し2ヶ月ほどたつsodexです。 よろしくお願いします。 早速ですが、入社以前の今年4月から趣味で書いているオリジナルカーネルsodexがカーネルとしての体面が整いましたのでReleaseしてみました。 sodex 0.0.1 このカーネル、今のところ私個人の勉強目的で書いているため、これで何かをする事は出来ませんがカーネルに興味がある方は原形が残らないほど改造して頂き、出来ればそのコードを提示頂けたら僥倖です。 さて、WindowsやLinux, Solaris, BSD系, Tron等 巷には様々なカーネルが開発されており、もはや枯れた分野とも言えるカーネルを今しかも個人が何故趣味で開発しているのか?疑問に思う方もいらっしゃると思います。その理由はただ一つ「知的好奇心」です。皆さんも物の動きや動作原理を不思議に思ったり疑問を抱き調べた事があるかと思いますが、
TheC10kProblem - 「C10K問題」(クライアント1万台問題)とは、ハードウェアの性能上は問題がなくても、あまりにもクライアントの数が多くなるとサーバがパンクする問題のこと 目次 この文書について C10K 問題 関連サイト まず読むべき本 I/O フレームワーク I/O 戦略 1. 各スレッドが複数のクライアントを受け付ける. そしてノンブロッキング I/O と レベル・トリガ型の完了通知を利用する. 伝統的な select() 伝統的な poll() /dev/poll kqueue() 2. 各スレッドが複数のクライアントを受け付ける. そしてノンブロッキング I/O と 変更型の完了通知(readiness change notification)を利用する. kqueue() epoll リアルタイム・シグナル fd 単位のシグナル (Signal-per-fd)
仮想デバイスドライバを利用したプロセス間通信について September 11, 2006 Posted by butcher in : C, Operating System , trackback 仮想デバイスドライバを利用したプロセス間通信について説明します。といってもよくわからないと思うので、ちゃんと説明します。 Unixでプロセス間通信というと、ソケットを使ったもの、パイプを使ったもの、共有メモリを使ったもの等がありますが、それぞれ長所・短所があると思います。 ものすごく簡単に言うと、 ソケットでは、 複数マシン間での通信が可能 通信処理のオーバーヘッドが大きい(コネクション開始・終了処理も含め) パイプでは、 ソケットより通信処理のオーバーヘッドが少ない 親子関係のプロセスに限定される 共有メモリでは、 シンプルで高速 書き込み・読み取りの同期をとるのが難しい 等が
キャッシュって何だろう? 性能の観点でCPUの仕様を見るとき、コア数、クロック周波数の次に来るのがキャッシュの容量というのが一般的であるが、キャッシュとはどういうもので、どう動くのかについてはあまり理解されていないように思われる。そこでこの一連の連載ではキャッシュについて述べようと思う。 プロセサのクロックが16MHz(GHzでは無い!)程度であった1980年代半ばまではDRAMメモリのアクセス時間も5サイクル程度であり、データをDRAMまで取りに行くことは大した問題では無かった。しかし、プロセサのクロックが1GHzを超えると、プロセサのクロック周期は1ns以下であるのに対して、DRAMのアクセスは1CPUの小規模システムでも50〜80ns程度であり、100CPUサイクルのオーダで待ち時間が発生することになった。これではプロセサコアはメモリにデータを取りに行く時間、遊んでいるばかりで、処理
■[tech]プリエンプティブ・カーネル システムコール実行中にもインタラプトをトリガとして”即座に”スケジューリングが可能なカーネルをプリエンプティブ・カーネルと呼ぶ。 伝統的なUNIXカーネルでは、カーネルモード実行中にインタラプトが発生しても、その時点でスケジューラがキックされる事はない。カーネル実行中のスケジューリング要求は保留され、それはカーネルモードを抜けてユーザモードに戻る直前に処理される。このタイミングは要するに、カーネル内部の様々な”しがらみ”から開放されたユーザモードに近い状態であり、安全にスケジュールが可能である。カーネルモードであっても、例外やインタラプトによりカーネルの実行がネストする可能性があり、カーネルの出口ではどちらのモード(場所)に戻るのかを常に確認する必要がある。 このようなノンプリエンプティブな設計のカーネルでは、カーネル内部を実行するのは常にただ一つ
仮想デバイスドライバを利用したプロセス間通信について September 11, 2006 Posted by butcher in : C, Operating System , trackback 仮想デバイスドライバを利用したプロセス間通信について説明します。といってもよくわからないと思うので、ちゃんと説明します。 Unixでプロセス間通信というと、ソケットを使ったもの、パイプを使ったもの、共有メモリを使ったもの等がありますが、それぞれ長所・短所があると思います。 ものすごく簡単に言うと、 ソケットでは、 複数マシン間での通信が可能 通信処理のオーバーヘッドが大きい(コネクション開始・終了処理も含め) パイプでは、 ソケットより通信処理のオーバーヘッドが少ない 親子関係のプロセスに限定される 共有メモリでは、 シンプルで高速 書き込み・読み取りの同期をとるのが難しい 等が
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く