また Linux カーネルの話です。 Linux では fork によるマルチプロセスと、pthread によるマルチスレッドでの並行処理を比較した場合、後者の方がコストが低く高速と言われます。「スレッドはメモリ空間を共有するので、マルチプロセスとは異なりコンテキストスイッチ時にメモリ空間の切り替えを省略できる。切り替えに伴うオーバーヘッドが少ない。」というのが FAQ の答えかと思います。 が「オーバーヘッドが少ない」と一言にいわれても具体的にどういうことなのかがイメージできません。そこで Linux のスレッド周りの実装を見て見ようじゃないか、というのが今回のテーマです。 3分でわかる(?) マルチプロセスとマルチスレッド まずはうんちく。マルチプロセスとマルチスレッドの違いの図。以前に社内で勉強会をしたときに作った資料にちょうど良いのがあったので掲載します。Pthreadsプログラミ
「プロセスは実行中のプログラムを抽象化したものである」これは私が著書 "Linux Kernel Development" の中で使った比喩だ。バイナリイメージ、仮想メモリ、各種カーネルリソース、関連付けられたセキュリティコンテキストといったものだ。スレッドは、「プロセスの中の実行単位」で、仮想プロセッサやスタック、プログラムの状態だ。言い換えれば、プロセスは実行されるバイナリであり、スレッドはOSのプロセススケジューラがスケジューリングできる最小の実行単位であると言える。 プロセスは1つ以上のスレッドを持っている。シングルスレッドのプロセスでは、1つのプロセスは1つのスレッドしか持っていない。つまり、スレッドはプロセスであると言ってしまえる。実行されるのは何か1つのことだけだ。マルチスレッドのプロセスでは、プロセスは複数のスレッドを持っている。つまり、複数の何かが実行されている。 現代の
最近はとても便利なプラットフォームがいっぱいあって、 詳細な中身を意識しなくても簡単に使えるという素晴らしい時代ですが、 深くまで突っ込んで考えないといけない場面が たまーーーーーーーに でてきます その時になって初めて、 誰かが用意してくれた快適な環境を使っていただけで自分では何も解決できない という現実を叩きつけられるわけです 大げさに言いましたすみません ちょっと前に仕事でサーバーのパフォーマンス調査をする機会があり、 その中で "プロセス" と "スレッド" って一体何が違うの!? って疑問にぶち当たりました わかるような、わからないような 何となくわかったつもりになっている事でもそろそろちゃんと理解して、 今日からイケてるエンジニアになりましょう この記事では 1. マルチタスクOSとプロセス 2. メモリの役割 3. 物理アドレスと仮想アドレス空間 4. プロセスがメモリに保持
A multicore system is a single-processor CPU that contains two or more cores, with each core housing independent microprocessors. A multicore microprocessor performs multiprocessing in a single physical package. Multicore systems share computing resources that are often duplicated in multiprocessor systems, such as the L2 cache and front-side bus. Multicore systems provide performance that is simi
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "スレッド" コンピュータ – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2017年5月) スレッド(thread)とは、コンピュータプログラムにおいて特定の処理を行うための一貫性のある命令の流れのことであり、プロセッサ利用の最小単位[1]。プロセスは少なくとも1つ以上のスレッドを含む。一般的に各プロセスには独立した仮想アドレス空間が割り当てられるが、プロセス内のスレッド群はアドレス空間を共有する。そのためプログラムを実行するときのコンテキスト情報が最小で済み、同じプロセス内でスレッドを切り替える際はアドレス空間の切り替えが不要となるの
この文章は、サーバサイドのウェブアプリケーション開発において、社内実績の少ない新しい言語を採用したときにインフラ面で考慮したことを社内向けにまとめたものです。 はてなでは、長らくPerlでウェブアプリケーション開発を続けてきた一方、ここ数年で社内でScalaまたはGoの採用事例も増えてきました。 今後開発が始まるプロダクトにおいても、Perl、Scala、Goもしくは他の言語を採用するかどうかを開発開始時に選ぶことになるでしょう。 新言語を採用するときに、考慮すべきことの一つとして、「インフラ」への影響があります。 新言語に関する雑談をしていると、ウェブアプリケーションエンジニアに「インフラ」への影響について聞かれます。 もしくは、ウェブオペレーションエンジニアから考慮するポイントを伝えることもあります。 ScalaやGo以外に、Node.jsやサーバサイドSwiftはどうかというのも雑談
技術部の松尾(@Kazu_cocoa)です。 最近、 @moroや私を中心に、テストから開発を駆動するという方向で、とある活動を始めました。その活動の中では、 @t_wadaさん を 技術顧問 として巻き込んで活動を進めています。そんな取り組みを少しここにまとめます。 取り組みの前段階 先日、私はテストエンジニアというロールに焦点を当ててテストという言葉に対する2種類の話をいたしました。TDDのようにテストによって開発を駆動していく側面の話と、人の認知・感じ方に寄った仕様自体含めてテストしていく側面の話です。 クックパッドエンジニアトークナイト 〜クックパッドテストエンジニアのあり方〜 を開催しました! クックパッドエンジニアトークナイト 〜クックパッドテストエンジニアvol.2 Testing編〜 を開催しました! その際、会の傍でt_wadaさんらと私たちが開発するWebアプリケーショ
Welcome to the MinGW project file distribution directories. This is the top level directory containing Installer, MinGW, MSYS and Other directories. You will find Base, Extension and Contribution directories that are futher broken down by package in the MinGW and MSYS directories. You will find mingw-get and mingw-get-inst in the Installer directory. The Other directory contain a hodgepodge of fil
2. #ccc_r11 Copyright 2016 Hiroyuki Onaka テスト駆動開発(Test Driven Development) TDDとは? Generated by 社畜ちゃん台詞メーカー http://blog.oukasoft.com/OS/ 3. #ccc_r11 Copyright 2016 Hiroyuki Onaka By National Photo Company [Public domain], via Wikimedia Commons https://en.wikipedia.org/wiki/Bulletproof_vest テストファーストしたら?
2. 徳丸浩の自己紹介 • 経歴 – 1985年 京セラ株式会社入社 – 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍 – 2008年 KCCS退職、HASHコンサルティング株式会社設立 • 経験したこと – 京セラ入社当時はCAD、計算幾何学、数値シミュレーションなどを担当 – その後、企業向けパッケージソフトの企画・開発・事業化を担当 – 1999年から、携帯電話向けインフラ、プラットフォームの企画・開発を担当 Webアプリケーションのセキュリティ問題に直面、研究、社内展開、寄稿などを開始 – 2004年にKCCS社内ベンチャーとしてWebアプリケーションセキュリティ事業を立ち上げ • 現在 – HASHコンサルティング株式会社 代表 http://www.hash-c.co.jp/ – 独立行政法人情報処理推進機構 非常勤研究員 http://www.
Python パッケージ管理技術まとめ (pip, setuptools, easy_install, etc) Python のパッケージ管理関係の情報がオフィシャルには整理されてなく、 またパッケージ管理まわりででてくるキーワードもいくつもあって分かり難いので完結にまとめてみました。 このドキュメント自体は少し長いですが、結論としては2015年1月時点では 原則 pip を使ってパッケージの管理を行う setuptools も広く使われているので入れておくとよい。そもそも pip のインストール時に自動的ににインストールされる distribute は 2013年に setuptools にマージされたので不要 という方針でよいと思います。 ただ少し古い情報ソースやパッケージのドキュメントを読んでいると distribute の利用が勧められていたり、 site-packages, e
dots. Conference Spring 2016 ゲーム開発の裏側 http://eventdots.jp/event/580344
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く