タグ

2013年1月2日のブックマーク (28件)

  • よく使うASM命令ベスト100位に説明つけてみた(7/10) - KENJI’S BLOG

    http://d.hatena.ne.jp/rootkit/20080818/1219042285 ベスト50位の中から、最低限これだけ覚えておけばきっと解析できる命令をまとめてみた。 関数呼び出しやEIP変更関連の命令 push スタックへ値を格納 pop スタックから値を取り出す call スタックに次の実行命令のアドレスを入れてジャンプ leave retの前に置かれるもの("mov esp, ebp"+"pop ebp"と同じ) ret スタックのトップにある値を取り出してそこへジャンプ jmp 指定アドレスへジャンプ 値の操作系の命令 mov レジスタ値やメモリの値を転送 movzx 渡したレジスタ値やメモリ値のサイズが異っても転送可能なmov lea 説明しにくい。まぁ[]の中の計算結果がレジスタへ入ると覚えておけばおk xchg 2つのオペランドを交換する(xchg eax,

  • Understanding Atomic Operations

    Introduction Atomic operations are the building blocks of synchronization primitives and non-blocking algorithms. They guarantee that, when modifying a memory location, it will happen without any interference from other threads. They are required whenever writing applications for multiple-cores architectures. Consider this function: void NonAtomicAND(tS32* Value, tS32 Op) { *Value &= Op; } Which t

    Understanding Atomic Operations
  • 0から作るOS開発 割り込みその2 PICとIRQ

    前回までの内容 これまでで、 割り込みには例外、割り込み要求による割り込み(IRQ:Interrupt ReQuest)、ソフトウェア割り込みがある 例外はソフトウェア実行時の異常動作をCPUが検出して発生する IRQはCPU周辺のデバイスが発生させる ソフトウェア割り込みはプログラムがINT命令で自発的に発生させる 割り込みベクタのうち、例外のベクタはCPU仕様によりあらかじめ決まっている 割り込みベクタはIDTの割り込みゲートディスクリプタで定義する IDTとIDTRに読み込ませるデータをC言語で作成し、LIDT命令でロードする GDTについていもGDTRをC言語で作成し、LGDT命令でロードする ことがわかりました。それではカーネルを0から開発していきましょう! 今回はPICについて説明します PIC(Programmable Interrupt Controller) PICはその

    0から作るOS開発 割り込みその2 PICとIRQ
  • 割り込みをつかう

    なんらかのI/Oボードのデバイスドライバを作ろうと思ったとき、割り込みを使いたいことはよくあります。 ある程度遅いデバイスならポーリングをつかって、処理すればいいかと思いますが、それですと、最低間隔はLinuxのタイマ割り込み(標準 10ミリ秒)になってしまいます。 やっぱり、割り込みは便利です。 MS-DOSなどで割り込みを使った方がいらっしゃるかと思いますが、Linux の場合、あれより遥かに簡単です。 割り込みコントローラの処理などは全部 Linux がやってくれて、ドライバ側ですることは「この関数を呼んでください」と登録するだけです。 さらに、Linux では「割り込みの共有」がちゃんとできるので、拡張ボードを挿したら割り込みがたらなくなった、ということもありません(もちろん、独占欲の強いデバイスもありますが....)。 ここでは まずは、ちょっと不安ですが分かりやすい簡単な例で割

  • 割り込み処理 - Linuxカーネルメモ

    ハードウェア割り込みに関するメモ。 割り込みハンドラの登録割り込みハンドラはirq_desc[]に登録されている。デバイスドライバなどが割り込みハンドラを登録する場合はrequest_irq()で登録する。 irq_descの構造を図1に示す。 各IRQ毎のirq_desc構造体が並んでいる。actionリストに、request_irq()で登録した割り込みハンドラを管理する構造体(irq_action)がチェーンされる。基的には1つのIRQに1つのハンドラだが、SA_SHIRQを付けて登録することで1つのIRQに複数のハンドラを登録することができる。この場合は、irq_actionがnextチェーンされる。もちろん、デバイスドライバなどの処理が割り込みを共有できる作りになっていないといけない。 irq_descのhandlerには割り込みコントローラ依存のハンドラが登録されている。ここ

  • NoSQLの現状

    このため、NoSQLの知識を持つ開発者やアーキテクトに対する需要が高まってきています。最近の調査によると、最近必要とされる開発スキルは次の通りです。 HTML5 MongoDB iOS Android Mobileアプリ Puppet Hadoop jQuery PaaS ソーシャルメディア 技術的要求のトップ10の中で、NoSQLデータベースは2つあります。1つは、iOSよりも上です。これがNoSQLをほめているのでなかったら、何なのでしょう?! しかし、一見したところ、NoSQLはますます速く深いところまで適用されるようになっています。2011年の夏に、有名な報告書の中でOracleは次のように述べました。NoSQL DBがアイスクリームの味のように感じるかもしれないけれど、あまり深入りしない方がいい、NoSQLはそれほど長く残らないかもしれないから。そのわずか2、3ヶ月後、Oracl

    NoSQLの現状
  • IK.AM

  • CompProBeta11.0_Customer_Presentation.ppt

    Intel、インテル、Intel ロゴ、Intel Atom、Intel Core、Xeon は、アメリカ合衆国およびその他の国における Intel Corporation の商標です。 © 2009 Intel Corporation.無断での引用、転載を禁じます。 インテル® マイクロアーキテクチャー Nehalem† ソフトウェア最適化 † 「Nehalem」 の開発コード名で呼ばれていた新しいインテル® マイクロアーキテクチャー インテル株式会社 ソフトウェア&サービス統括部 © 2009 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。 内容 • ソフトウェア最適化と並列化のおさらい • インテル® マイクロアーキテクチャー Nehalem

  • 並行プログラミングの原理から実践まで - L'eclat des jours (2009-08-31)

    _ 並行プログラミングの原理から実践まで アスキーの鈴木さんからもらって読み始めたが、いきなり1章の練習問題でつまづく。教科書(序文によれば大学の最終年度の教科書兼実務者の参考文献を想定している)っぽく、ぶっきらぼうに問題が出ていて解答はない。 おれの来の読者(実務者)としての正しい読み方は1章をすっとばして(アムダールの法則は別らしい)、いきなり実践編の並行スタックだとか並行キューとか、プライオリティキューとかを読めば良いのだろうが、せっかくだからまじめに(CSコースの読み方)読んでみようかなぁと。 (もっとも2章の相互排他、3章の並行オブジェクトは基的に読むべきとされている。3章ではJavaメモリモデルとしてダブルチェックロッキングがなぜ無効なのかについての解説があったりするが、わかりやすい。ただ、volatileフィールドを揮発性フィールド、シリアライザブルを線形化可能と日語に

  • 「組み込み」ならではの基礎知識 ――スタートアップ・ルーチンからハードウェアまで

    組み込みソフトウェアには,一般のアプリケーション・ソフトウェアにはない考えかたが存在する.ここでは,「組み込み」ならではのいくつかの概念について解説する.例えば,プログラムのランタイム構造やスタートアップ・ルーチン,割り込み,配列の実体,同期/非同期,volatile,ハードウェアなどを説明する.  (編集部) - 目次 - プログラムはどのように動くのか main関数以前(スタートアップ) array[-1]はなぜ動くのか(配列の実体) volatileを指定したくなるとき 時間の制御問題(同期と非同期呼び出し) ポーリングと割り込み エッジ・トリガとレベル・センス メモリとポート ここでは,組み込みソフトウェア開発者をめざす新人の皆さんに理解していただきたい考えかたについて解説します.ここで解説する内容は,一般的なC言語やソフトウェア開発の解説書にはあまり説明されていないものです(もし

  • cloudpackブログ -NginxのアクセスログにELBの"400 Bad Request"エラー(まとめ)

    ELBの下のNginxで、下記のアクセスログが頻繁にみられました。 ("x.x.x.x"はELBのIPアドレスです) x.x.x.x - [16/Nov/2012:00:00:17 +0900] 0.000 "-" 400 0 "-" "-" 0 0 x.x.x.x - [16/Nov/2012:00:00:18 +0900] 0.000 "-" 400 0 "-" "-" 0 0 x.x.x.x - [16/Nov/2012:00:00:18 +0900] 0.000 "-" 400 0 "-" "-" 0 0 上記の減少はElastic Load Balancer にぶら下がってる時の access logで非常に詳しく説明されていました。 つまり、ELBがsecond health checkと言われるコネクションを開いて閉じるだけの チェックを行い、それがNginxのアクセスログで

    cloudpackブログ -NginxのアクセスログにELBの"400 Bad Request"エラー(まとめ)
  • TCP/IPプロトコル・スタックの省メモリ開発事例(前編)  ――ミドルウェアの追加で既存の16ビット・マイコンがネット対応マイコンに変身

    TCP/IPプロトコル・スタックの省メモリ開発事例(前編)  ――ミドルウェアの追加で既存の16ビット・マイコンがネット対応マイコンに変身 浅井 敬,佐藤 剛,坂直史 安価な16ビット・マイコンは機器制御などに広く使われている.そのマイコンにTCP/IPプロトコル・スタックを搭載すれば,マイコンはネットワーク対応マイコンに変身し,ネットワーク経由で機器の情報を取得したり,設定を変更したりすることができる.稿では,TCP/IPプロトコル・スタックの16ビット・マイコンへの実装について解説する.メモリ制約の範囲内に収まるように,必要な機能を取捨選択し,処理を簡略化して,最終的にはROM 8Kバイト以内,RAM 0.5Kバイト以内に収まるTCP/IPプロトコル・スタックを作った.  (編集部) 16ビット・マイコンは各種機器の制御用途に広く使われています.具体的には,外部で発生した情報をセン

  • ハードウェアを意識したプログラミングの基礎(前編)

    デバイス・ドライバを作るためには,まずハードウェアをアクセスする手法を知らなければならない.エンディアンやアラインメントを意識したり,CPUのバージョンによる命令の違いなどを考慮する必要がある.さらに最近では,命令そのものを追加できるソフト・マクロのCPUコアなども登場している.そこで,ここではCPUとデバイス(メモリ)の間のエンディアンについて説明する.  (編集部) 稿では,筆者がこれまでに行ったLinuxを用いた開発の中で得た経験を元に,Linuxなどのデバイス・ドライバを開発・移植するときにハマりやすい点を紹介したいと思います.内容は大きく分けて,以下の四つになります. エンディアン I/Oアクセス ハードウェア,CPU,コンパイラ アラインメント 特に断りがなければ,ここではポインタ・サイズが32ビットのCPUを対象にします.具体的には,x86,ARM,MicroBlaze,P

  • スタックと割り込み ―― プログラムが動く仕組みを知ろう

    ここでは,C言語で開発したプログラムがシステム上で動く際に必要な,「スタック」と「割り込み」と呼ばれる仕組みについて説明する.「スタック」は関数の作業領域としてメモリの一部を利用する仕組みである.「割り込み」は実行の流れを切り替えるための仕組みである.どちらもC言語の文法ではないが,プログラムが動く仕組みを知っておくと,特にデバッグで役に立つ. (筆者) 稿では,スタックと割り込みの概念や動作原理について説明します.スタックと割り込みは,Cプログラムの文法上は見えないにもかかわらず,プログラム実行の上で重要な役割を果たしています. 1.プログラムの実行の流れを知ろう ここでは,順次実行,分岐,関数呼び出しという3種類のC言語プログラムを例に,プログラムの実行の流れを見ていきます.まずは,順次実行と分岐について,C言語ソース・レベル,およびメモリ上の動作レベルで見ていきましょう. ● 順次

  • ハードウェアの仕組みとソフトウェア処理 ―― マイコンの動作を理解する

    ここでは,マイコンが動作する仕組みについて解説します.まず,ソフトウェアを実行するためのハードウェアの仕組みを説明します.次に,ソフトウェアで多くの処理を実現できる理由を,ソフトウェアの基道を示しながら説明します.(編集部) 1. ハードウェアの基動作を理解する マイコンは,メモリに置かれたソフトウェアの命令コードを取り出して実行します.命令コードの取り出しと実行を担当するのがCPUです.そのために,CPUには命令を取り出す機構と,取り出した命令を実行する機構が置かれています. 最近のCPUの高速化技術では,命令コードの取り出しから実行までの一連の動作を細分化して連続的に実行したり,複数の命令を並列に処理することによって,CPUの処理効率を大幅に向上しています. ● 命令コードの取り出しから実行の流れ CPUは,あらかじめメモリに並べられた命令を順番に取り出して,内容を解読して,実行し

  • swest-1208.pptx

    Hiroaki Takada 今更ྐ聞けない マルチコアプログラミングの基礎 ⾼ভ⽥‫ݓ‬ 広章 2012年྘8⽉ٰ31⽇ٞ 1 マルチコアプログラミングの基礎 名古屋⼤֒学 ⼤֒学院情報科学研究科 教授 附属組込みシステム研究センター⻑˺ NPO法⼈ӫ TOPPERSプロジェクト 会⻑˺ Email: hiro@ertl.jp URL: http://www.ertl.jp/~ȣhiro/ SWEST14チュートリアル Hiroaki Takada 講演の内容 講演の趣旨 ▶  マルチコアプロセッサ上でプログラムを作成する上で知っ ておくべきハードウェア知識について解説 ▶  特に,マルチコアプロセッサを生で(高度なOSやプログラミ ング環境なしで)使う場合に必要な知識を中心にする 目次 ▶  マルチコアプロセッサの分類 ▶  コヒーレントキャッシュ

    yass
    yass 2013/01/02
    今更聞けないマルチコアプログラミングの基礎
  • ju11net九州体育(科技)有限公司

    ju11net九州体育(科技)有限公司 404 Not Found nginx

    yass
    yass 2013/01/02
    スピンロックから始めるLinuxカーネル入門
  • 今さら聞けないマルチプロセッサの基礎教えます ――キャッシュの共有,割り込みの共有,OSによる制御

    今さら聞けないマルチプロセッサの基礎教えます ――キャッシュの共有,割り込みの共有,OSによる制御 木村啓二 組み込みシステムやシステムLSIにおいて,対称型や非対称型のマルチプロセッサ・システムを設計,利用する機会が増えてきた.ところで,実際にマルチプロセッサがどのように動作しているかご存じだろうか? 稿では,マルチプロセッサ・システムにおけるCPUやOSの動作,アプリケーションを開発するときの注意点などについて解説する.  (編集部) 組み込み分野では,一つのチップ上に複数のCPUコアやDSPコアを組み込んだシステム(いわゆるマルチコア)を設計する機会が増えてきました.一方,複数のプロセッサで並列処理を行うマルチプロセッサ・システムは1960年代から科学技術計算やサーバ用途の分野で研究されており,広く実用化されています. サーバ用途のマルチプロセッサ・システムは,同じプロセッサを複数

  • [xv6 #0] xv6ソースコードリーディングの準備 – 日曜研究室

    継続的にブログを更新するネタとしてxv6という教育用OSのソースコードを読んでいき、その感想をメモ書き程度につらつらと書いていきたいと思います。 Xv6とは? Xv6, a simple Unix-like teaching operating system英語) xv6 – Plan9日記(日語) とりあえずビルド ソースに変更を加えて動作確認しようとかは思ってませんが、とりあえずどんなものか知るために動かしてみます。 Xv6 on VirtualBox – Plan9日記(参考) ビルド用のOSにはFedora 16 x86(on VMware Player on Windows 7 x64)を使いました。 ビルドに必要な物は以下のコマンドで入れました。 yum groupinstall 開発ツール yum install qemu gitで適当なディレクトリにソースを落とした後、

    yass
    yass 2013/01/02
  • 並列プログラミング(その1) : DSAS開発者の部屋

    1.マルチプロセッサ時代の並列プログラミング Pentium4でHyperThreadingが採用されてから、一般的なPC用のCPUでも並列動作が発生するようになりました。 マルチスレッドプログラムにおいて、シングルプロセッサ環境では問題にならなかった事が、マルチプロセッサ 環境では問題になってきます。 もちろん、pthreadなどを利用して普通にプログラムを書いている場合は、複数のスレッドから同一の メモリにアクセスするところを全てMutexやSemaphoreで同期しておけば問題ありません。が、プロセッサ間の 同期ってどんな問題があってどうやって対処しているのか気になったので、調べてみました。 IntelやAMDのDeveloper's Manualなどを読んで勉強しながら書いているので、間違っている部分が あるかもしれません。間違いに気づかれた方は、宜しければコメントやトラックバック

    並列プログラミング(その1) : DSAS開発者の部屋
  • 並列処理/並列化 - le4 parallel programming

    並列処理/並列化 マルチプロセッサ(マルチコア)とマルチスレッド マルチプロセッサ(multiprocessor), マルチコア(multi-core) 複数のプロセッサ(コア)を持つ計算機(ハードウェア) Pプロセッサ(コア)で、理想的にはP倍の高速化 共有メモリ型並列計算機 マルチプロセッサ(マルチコア)計算機上では、 複数のプロセッサ(コア)がそれぞれpcやレジスタ(spを含む)を持ち、 メモリについては共有して動作する。 共有されていないメモリでは, load命令などの実行によりあるアドレスの値を読み出す(read)と, store命令などの実行により最後にそのアドレスに書き込み (write)した値が読み出せる. 共有メモリ(shared memory)は, 非常におおざっぱにいうと: +------------+ +------------+ | processor | | p

  • 遅延評価いうなキャンペーンとかどうか - ぐるぐる~

    遅延評価については以前も書いてるんですが、そのときは結論なしでした。 が、ちょっと考えるところがあって、言語を Java に絞って自分の考えを明確にしておきます。 結論から書きましょう。 「Java(とC#) で遅延評価って書いてあるものは遅延評価ではない」です。 Java における「評価」とは まず一番最初に、Java で「評価」って言うと、どういうことを指すのかを確認しておきます。 言語仕様の該当部分を要約すると、こんな感じでしょうか。 プログラム中の式を評価すると、結果は 変数 値 無し のうちのどれかとなる。 評価した結果が値になる、というのはいいでしょう。それ以外の 2 つを軽く説明します。 評価の結果が「変数」とは? コメント欄で指摘が入っています。 代入の結果は変数ではありません(15.26)。 結果が変数となるのは、ローカル変数、現在のオブジェクトやクラスの変数、フィールド

  • Memory Models: A Case For Rethinking Parallel Languages and Hardware – Communications of the ACM

    CACM Web Account Membership in ACM includes a subscription to Communications of the ACM (CACM), the computing industry's most trusted source for staying connected to the world of advanced computing. Sign In Sign Up Most parallel programs today are written using threads and shared variables. Although there is no consensus on parallel programming models, there are a number of reasons why threads rem

  • Facebook広告を個人で出稿してみた - MEMOGRAPHIX

    Facebookニュースフィードとかの右カラムに広告出るけど、この広告は個人でも出稿できる。実は jadda vol.02 の広告を12月21日から12月31日まで出してたので、配信の手順や感想などを書いておきたい。 広告の作成広告の作成は、「Facebookに広告を掲載」 ページからできる。感心したのは、おそろしく細かくターゲットを指定して広告配信できるところで、Facebookのユーザープロフィールをもとに、 年齢・性別住んでいる地域趣味・関心学歴・勤務先○○さんとつながりのある人とか、とにかく細かすぎる指定ができる。さらにフォームに何か入力すると、推定対象人数が即表示される。この数字見るだけでも楽しくて、日に住んでてひだまりスケッチ好きな人数とか分かる。 広告の価格は、相場があってだいたいその範囲で入札すればよい。はじめに予算を指定しておけば、予算いっぱいになるまで広告が配信され続

  • Lock? We don't need no stinkin' locks!

  • Beginners guide-concurrency

  • Who ordered sequential consistency?

  • Memory Barriers and JVM Concurrency

    InfoQ Software Architects' Newsletter A monthly overview of things you need to know as an architect or aspiring architects. View an example Memorial Day Sale: Save up to 60% on InfoQ Dev Summit Boston (June 24-25)

    Memory Barriers and JVM Concurrency