この記事はLinux Advent Calendar 2014の25日目ですヽ(=´▽`=)ノ 今回はLinux Kernel Hack入門編ということで入門的なことを書いてみたいと思います。 まず使用する環境ですけど最近出たばっかのFedora 21のWorkstationにしました。まあ、今回の内容的にはディストリビューションは問わないんですが、多くの人が馴染んでいるであろうfedora系というかパッケージマネージャがyumということでこれにしてみました。 自分は普段Arch Linuxなんですけど、こっちだとkernelのmake install時にちょっとしたスクリプトを書く必要があったりするのもあって、fedoraのほうが手軽かなというのもあります。 カーネルコード・リーディング ブラウザベースでコード・リーディング 読めるソースは大概メインラインのカーネルということになりますが
5. Open Cloud Campus 5 Linux女子部 Dockerを支える技術 一般的なサーバ仮想化の分類 物理マシン 物理マシン ホスト OS ハイパーバイザ (カーネルモジュール) 仮想 マシン ゲスト OS VMware vSphere, Xen など Linux KVM ハードウェアによる仮想化 (物理マシンにハイパーバイザを内蔵) ソフトウェアによる仮想化 (物理マシン上にハイパーバイザを導入) ソフトウェアによる仮想化 (ホスト OS にハイパーバイザ機能を追加) 物理マシン OS 非仮想化環境 基本的には「物理マシン」と同等の「仮想マシン」を複数 作り出す技術です。 仮想 マシン ゲスト OS 仮想 マシン ゲスト OS 仮想 マシン ゲスト OS 仮想 マシン ゲスト OS 仮想 マシン ゲスト OS 仮想 マシン ゲスト OS 仮想 マシン ゲスト OS ハイパ
講義ノートの目次へ 情報科学の一分野である「情報理論」(Information Theory)の講義ノート。 勉強しやすいものを集めた。 情報理論のテキストには,暗号に重点をおいた物と,符号理論(Coding Theory)から始める物の2タイプが存在する。 さらに言えば,符号理論も,データ圧縮と誤り訂正の2つに大別される。 ここでは下記のように分類する。 (1)暗号と,暗号理論に必要な数学。 要点:初等整数論,素数に関連したアルゴリズム,有限体,公開鍵暗号,エルガマル暗号,ゼロ知識証明。 (2)情報のデジタル符号化をテーマにした「情報理論」 要点:シャノンの情報理論。エントロピーと情報量,圧縮,通信路の符号化,誤り訂正。写像や行列など,線形代数を使って表現することが多い。広義では暗号理論を含む。 これらの事項を独学するための資料。 ※もし数学が苦手だったり,暗号だけをかじりたい場合,こち
オープンソースと関数型言語による プログラム解析と カバレッジテスト自動実行 有限会社ITプランニング 今井 敬吾 1 第12回組み込みシステム技術に関するサマーワークショップ @ ホテル日航豊橋 テスト手法 2つのアプローチ ブラックボックステスト プログラムの入出力に着目 尺度:「外部仕様通りに入出力される」こと ホワイトボックステスト プログラムの内部構造に着目 尺度:「プログラムの全部を通る」こと e.g. 命令カバレッジ、分岐カバレッジ、パスカバレッジ 課題: 自動化によるコスト低減 網羅性の向上 2 テストケースの自動生成問題 ブラックボックステスト: ○比較的平易に実装可能 外部仕様をツール入力可能な形で準備する必要あり ホワイトボックステスト: ○ソースコードから生成可能 高度なプログラム解析技術が必要 数学的に自動生成困難な場合も (eg. ハッシュ関数) 最近のツール
いろいろなプロジェクトを歩き渡って来た。相対したコードも様々。 機能分割がうまくできてるもの、理解しやすいお手本になりそうなものから、応急処理的な つぎはぎだらけもの、最長不倒関数を遙かに上を行くようなとんでもコードまで。 ここはあのプロジェクトのコードの方がまともだなと思って、いいところは真似してきた。 悪いものは、できるものはリファクタリングしたりしたこともあるけど、いかんせん元のコードが 理解不能な場合はどうしても塩漬けのままとなる。 せめて、自分のところぐらいは・・・と書いてきたつもり。 しかし、未だに「美しい」と言われる絶対的なコードには出会ったことがない。 幸せの青い鳥を追い求めているのだろうか。 OSSならお手本としてどんなものがあるだろうと思って探してみたら以下の記事が見つかった。 Aaron Swartz氏「みんなそろそろD.J. Bernsteinが世界史上最高のプログ
世界初の組み込みスーパーコンピューター NVIDIA Jetson TK1 開発キットは、GPUのパワーを組み込みアプリケーション用に開発するのに必要なものをすべて提供します。革命的な NVIDIA® Tegra® K1 SOCが搭載され、世界中のスーパーコンピューターにも採用されているNVIDIA Kepler™コンピューティングコアと同一のものです。これにより、フルファンクションなNVIDIA CUDA® プラットフォームが実現されるので、コンピュータビジョン、ロボット工学、薬品、医学用の数値計算システムを素早く開発、展開することが可能になります。 NVIDIA では、CUDA、 OpenGL 4.4、NVIDIA VisionWorks ツールキットな どを含む、BSPとソフトウェアスタックを提供しています。開発とプロファイリング用ツールの完結したソフトウェアスイート、さらにはそのま
sum = 0; do { nread = read(0, addr, n-sum); if (nread != -1) sum += nread; } while (sum < n); As you may see, this implementation is weird because using read(0, addr, n-sum) instead of read(0, addr+sum, n-sum). Therefore, it is possible to do Partial Overwrite by splitting input into several. @wapiflapi, a great hacker in France shares the exploit using this method(http://hastebin.com/iyinepaxen.p
http://dev.gentoo.org/~dberkholz/articles/toolchain/tls.pdf を読みました。 TLS の実装はざっくり言うと常に TLS 管理領域を指してるレジスタを一個作ってて、それをスレッドごとに別の値にするだけ。 86 ではセグメントレジスタが使われてる…くらいのざっとした理解はまぁ一般的にあると思うんですが、細かい実装となるとなかなか難しい。間違ってるとこあるかもですがなんか書いてみます。 TLS はまず、本当に全スレッドが使うの? って話があるので、メモリ効率を考えると遅延ロードをした方がいい。ただ遅延ロードするとなるとどうしても関数呼び出しとかがからんで、最初に確保しておいた時のコードよりどうやっても遅くなる。 PLT みたいに関数の呼び出しがどっちにせよ起きるようなケースとは違って、 CPU とメモリのトレードオフがある。 基本的には
スレッドはグローバルは変数は共有しますが、マルチスレッドアプリケーションにおいて、スレッド固有のデータを保持したい場合があります。それを実現するのが、スレッドローカルストレージ(TLS)です。 func()を2つのスレッドとして作成します。そこでは、__thread int aとint bをインクリメントした値を表示しています。最初のスレッドではa = 1 b=1、次のスレッドではa = 1 b=2となっています。int aとしたならa=2なるところです。すなわち__thread int aはスレッド固有の変数というわけです。 #include <stdio.h> #include <pthread.h> __thread int a = 0; int b = 0; void *func(void *arg) { a++; b++; printf("a = %d b=%d\n", a, b
David A Rusling david.rusling@arm.comv0.8-3 January 25, 1999 JF Projectv0.8-3 December 2000 *フレーム表示* 本書は、Linux カーネルの仕組みを知りたい Linux 愛好家のためのものです。これは 内部構造のマニュアルではありません。むしろ Linux で使用されている原理や メカニズムを解説したものであり、Linux の動作原理とはどういうもので、なぜそれ が採用されているのかを説明するものです。 Linux という対象は常に変化しています。本書がベースにしているのは現在の安定 版である 2.0.33 のカーネルソースですが、これは個人や法人の大部分で使用されて いるのがこのバージョンだからです。 また、本書は自由に配布してもらってかまわないので、一定の条件のもとにではあり ますが、複製や再配
CERT C コーディングスタンダード 日本語翻訳版コーディングスタンダードのご利用条件/著作権・免責事項 00. はじめに 01. プリプロセッサ (PRE) 02. 宣言と初期化 (DCL) 03. 式 (EXP) 04. 整数 (INT) 05. 浮動小数点 (FLP) 06. 配列 (ARR) 07. 文字と文字列 (STR) 08. メモリ管理 (MEM) 09. 入出力 (FIO) 10. 環境 (ENV) 11. シグナル (SIG) 12. エラー処理 (ERR) 13. Application Programming Interface (API) 14. 並行性 (CON) 49. 雑則 (MSC) 50. POSIX (POS) AA. 参考情報 BB. Definitions CC. 未定義の動作 DD. 未規定の動作 XX. お問い合わせ 00はじめに このページ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く