並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 224件

新着順 人気順

仮想メモリの検索結果1 - 40 件 / 224件

  • 登 大遊「イノベーションは“いんちき遊び”から生まれる」

    「デジタル敗戦」という言葉が確定した事実かのように語られる日本のICTの現状に対し、天才プログラマーの登 大遊氏は「あまり心配する必要はない」と話す。日本に必要なのは大企業の「遊び」だと言う。 by Yasuhiro Hatabe2021.08.30 1293 782 29 独創的な若きイノベーターを選出する世界的アワード「Innovators Under 35(イノベーターズ・アンダー35)」。その日本版「Innovators Under 35 Japan」が今年も開催され、8月31日まで公式サイトで候補者の推薦および応募を受付中だ(本人による応募のみ9月7日までに延長)。 このアワードで、「通信」領域の審査員を務める1人が登 大遊氏(36歳)である。登氏は、筑波大学入学時に、独立行政法人情報処理推進機構(IPA)の「未踏ソフトウェア創造事業 未踏ユース部門」に採択され開発したVPNソフ

      登 大遊「イノベーションは“いんちき遊び”から生まれる」
    • 低レイヤの知識の重要性は今後も変わらない - 小崎資広に聞くLinuxカーネル開発の裏側 - エンジニアHub|Webエンジニアのキャリアを考える!

      低レイヤの知識の重要性は今後も変わらない - 小崎資広に聞くLinuxカーネル開発の裏側 Linuxは、世界でもっとも広く使われているソフトウェアのひとつであり、多くのエンジニアの仕事に密接に関わっています。では、Linuxそれ自体は、どのように開発されているのでしょうか。Linuxの中枢である、Linuxカーネルの開発者のひとりである小崎資広さんに、知られざる開発の裏側を聞きました。 オペレーティング・システムLinuxは、世界でもっとも広く使われているソフトウェアのひとつであり、オープンソースというカルチャーが生み出した、大きな大きな結実です。サーバー用OSとしてはデファクトと呼べるほどの普及を見せており、それだけにLinuxの動向がもたらす影響は広範にわたります。こうした前提があるなかで、Linuxそれ自体は、どのように開発されているのでしょうか。 今回、お話を聞いた小崎資広(こさき

        低レイヤの知識の重要性は今後も変わらない - 小崎資広に聞くLinuxカーネル開発の裏側 - エンジニアHub|Webエンジニアのキャリアを考える!
      • CとRustで一から作るマイクロカーネルOS

        マイクロカーネルは浪漫に溢れる非常に作りがいのあるソフトウェアです。この記事は,「マイクロカーネルベースのOSの一から作ってIaaSで動かす」ことを目標に作ったマイクロカーネルベースのOS Resea(りーせあ)の設計と実装について軽くまとめた物です。 ソースコードはGitHubにあります。 マイクロカーネルとは Linuxのようなモノリシックカーネルでは色んな機能がカーネル空間で動きますが,マイクロカーネルではユーザプロセスたちが互いに通信しながらOSを作り上げます。プロセス・スレッド・仮想メモリ管理,プロセス間通信,タイマーといった必要最低限の機能だけをカーネルが担います。デバイスドライバやファイルシステムといった残りの機能は,独立したユーザプロセスとして動きます。たとえデバイスドライバが暴走しても他のコンポーネントを壊すことはないのです。マイクロカーネルは信頼性が高く,疎結合で美しい

          CとRustで一から作るマイクロカーネルOS
        • Apple・AMD・テスラ・Intelを渡り歩いた天才エンジニアのジム・ケラー氏へのインタビューが公開中、Intelで一体何をしていたのか?

          AMDのAthlonやZenマイクロアーキテクチャ、Apple A4など数々のチップ開発に携わり、「天才エンジニア」と高い評価を受けるジム・ケラー氏は2021年1月にIntelを突如退職し、記事作成時点ではAIチップのスタートアップであるTenstorrentの社長兼最高技術責任者を務めています。そんなケラー氏に、技術系ニュースサイトのAnandTechがインタビューを行っています。 An AnandTech Interview with Jim Keller: 'The Laziest Person at Tesla' https://www.anandtech.com/show/16762/an-anandtech-interview-with-jim-keller-laziest-person-at-tesla なお、ジム・ケラー氏の経歴は以下の通り。 入社退職年企業肩書き関与した製

            Apple・AMD・テスラ・Intelを渡り歩いた天才エンジニアのジム・ケラー氏へのインタビューが公開中、Intelで一体何をしていたのか?
          • 動かしながらゼロから学ぶLinuxカーネルの教科書

            価格:2800円+税 発売:2020年9月10日 Linuxの心臓部にあたるカーネルについて理解を深め、Linuxを本格的に学んでいこうという人のための「初めて読むLinuxカーネルの専門書」です。 サーバーOSとしてのLinuxを学ぼうとしても、Linuxの専門書は難しく、ステップアップに手ごろな本が見つかりづらいのが現実です。 そこで本書では系統立てた章立てと、いくつもの実験を盛り込んだ構成にすることで、Linuxの中核となるカーネルの仕組みを分かりやすく丁寧に解説しました。OSとしてのLinuxがどのように動いているのかが分かります。 1章と2章では基礎となる部分を大きくページを割いて紹介。3章ではLinuxカーネルのソースコードから実際に動く状態に組み立てる「ビルド」の操作を紹介します。4章以降では、3章までに学んだ知識や手法に基づき、Linuxカーネルの仕組みを解説していきます。

            • プログラマーのためのCPU入門 | フューチャー技術ブログ

              まあ後半のインテルのモデルになると同じCPUでも熱設計で性能が大きく変わったり、ブースト時の性能だったり、いろいろあるのであくまでも数字は目安ですが、無視できないほど大きくなっているのがわかります。特に、Ryzenが元気なここ5-6年の競争による進化がすごいです。 なぜ5-6倍も性能が上がったのか、というのをすぐに言葉できちんと説明できる人はあまりいないと思います。最近、更新がなくなってしまい、Facebook(なぜか友達にしていただいた)上でも活動がみられなくて、悲しいのですが、後藤弘茂のWeekly海外ニュースの連載をずっと読んでいた人であれば、「命令デコーダーが増えたのね」とかなんとなく強くなった部分のイメージがつくとは思いますが、そのなぜ、というのに、実験付きで数値の根拠も含めてわかりやすく説明してくれているのが本書です。 CPU実験がおもしろい本書は、豊富な図で(LambdaNo

                プログラマーのためのCPU入門 | フューチャー技術ブログ
              • ハイパーバイザを作ってみた - Qiita

                仮想マシンがどのように実現されているか気になったので、勉強がてら簡単なハイパーバイザを作ってみました。ソースコードはGitHubで公開しています。 方針 RaspberryPi3で動作するAArch64向けのType-1(ベアメタル)ハイパーバイザを作ることにしました。名前は"raspvisor"とします。 スクラッチから作り始める気力はなかったので、なるべく流用できるものは使っていくことにしました。そこで、RaspberryPiのOS開発教材であるRPi OSをハイパーバイザに改造していくことにしました。RPi OSはコード量が少なく読みやすい上、割り込み処理、プロセススケジューラ、ユーザプロセス、システムコール、仮想メモリといった機能が一通り実装されています。OSを改造することにしたのは、プロセス管理や仮想メモリ、割り込み処理といった部分を、ハイパーバイザの実装に流用できそうだと思った

                  ハイパーバイザを作ってみた - Qiita
                • Linux が動作する RISC-V CPU を自作した (2019 年度 CPU 実験 余興)

                  私が所属する東京大学理学部情報科学科では三年の冬学期に CPU 実験という実験授業が開講されています。本稿ではその簡単な説明をした後、その実験の一環として約一ヶ月ほど取り組んだ「Linux が動作する RISC-V CPU を自作するプロジェクト」で何をしたか、またどのような成果を得たかについて紹介したいと思います。 本稿を読むその前に 弊学科では「XX 年度に教養学部から理学部情報科学科に進学してきた学生」を「XXer」と呼ぶ文化があります。本稿ではこの表現を断りなく用います1。また私は普段 Web が好きでもっぱら Web セキュリティに関することを追いかけているだけのしがない学部 3 年生なので (私についての情報は ここ に大体まとまっています)、こういう低いレイヤのことは未だによく分かっていません。あくまで素人の記事だとご理解いただけると嬉しいです。誤りの指摘や質問があれば、ここ

                    Linux が動作する RISC-V CPU を自作した (2019 年度 CPU 実験 余興)
                  • 詳解 システム・パフォーマンス 第2版

                    本書は、エンタープライズとクラウド環境を対象としたオペレーティングシステムとアプリケーションのパフォーマンス分析と向上について解説します。 主にLinuxベースのオペレーティングシステムに含まれるツールとその使用例を通じてシステムパフォーマンスを引き出す手法を説明します。システム評価のためのベンチマーク、キャパシティプランニング、ボトルネックの解消について解説しスケーラビリティを制限する要因を発見、分析し、解決する方法を学びます。 第2版では、perf、Ftrace、BPFの解説が加わり、Linuxとクラウドコンピューティングについての説明が充実しました。 システムのパフォーマンスを向上させ、コストを削減し、レイテンシの外れ値を減らすための方法を学ぶ本書はエンジニア必携の一冊です。 まえがき 1章 イントロダクション 1.1 システムパフォーマンス 1.2 職種 1.3 作業 1.4 分析

                      詳解 システム・パフォーマンス 第2版
                    • golangとDockerとOOM — KaoriYa

                      golangで書いたプログラムをDockerで動かしOOMが発生した際になるべく情報を残して殺される方法を紹介します。 2020/08/16追記: この記事の内容はgolangに関してはやや現実的ではなくなってしまいました。 詳しくは続編を参照してください。 TL;DR golang製のプログラムは仮想メモリ(VSZ)の確保に失敗するとgoroutineのダンプを吐いて死ぬ DockerのOOMはRSSベースで検出時にSIGKILLを投げてくる Docker利用時にVSZで制限をかけるスクリプトを書いた golang製のプログラムはlinux-amd64において最低でも101MBのVSZを要求する VSZの制限がそれより小さいと当然起動できない 実際のRSSは3MB程度で起動する Background コンテナ内で動いているプロダクション上のgolang製のプログラムが時々OOMに殺されて

                      • 「別プロセスの PHP が今何をしているか」を実況するプログラムを PHP で作った - Qiita

                        0 fgets <internal>:-1 1 <main> <internal>:-1 0 fgets <internal>:-1 1 <main> <internal>:-1 0 fgets <internal>:-1 1 <main> <internal>:-1 ... 0 time_nanosleep <internal>:-1 1 PhpProfiler\Lib\Loop\LoopMiddleware\NanoSleepMiddleware::invoke /home/sji/work/php-profiler/src/Lib/Loop/LoopMiddleware/NanoSleepMiddleware.php:33 2 PhpProfiler\Lib\Loop\LoopMiddleware\KeyboardCancelMiddleware::invoke /home/sji/

                          「別プロセスの PHP が今何をしているか」を実況するプログラムを PHP で作った - Qiita
                        • WSL2 を導入すると、思った通り Windows10 は仮想マシン上で動作した(と思う) - Qiita

                          WSL2 と Hyper-V と Parent partition 現在では多くの方が自分のPCにWSL2(Windows Subsystem for Linux 2)をインストールし、Windows上でLinuxライフを満喫しているのではないかと思います。 さてさてマイクロソフトさんからWSL2の発表があった時、それを伝えていた記事の中に「WSL2はHyper-Vの技術を利用する」という旨の文言がありました。それ以来ずーっと疑問に思っていたのが、 「Hyper-Vを使うなら、ホストOSとなるWindows10は仮想マシン上で動くんだよなぁ。性能低下とか起きないのかな??」 ということです。 そもそもHyper-Vというハイパバイザは"Type-I型"と称される仮想化方式を採用していて、ホストOSが仮想マシン上で動作するはず...。Hyper-V界隈の単語で表現すると、ホストOSは"Par

                            WSL2 を導入すると、思った通り Windows10 は仮想マシン上で動作した(と思う) - Qiita
                          • RustでOSを書いた

                            はじめに RISC-V CPU を FPGA 上に実装して、マイクロカーネル OS を Rust で書いて動かしてみました。 CPU について RISC-VとChiselで学ぶ はじめてのCPU自作 に沿って RISC-V の CPU を作り、機能をエンハンスしました。 乗除算命令、RVC命令、ビット拡張命令の一部を追加 7段パイプライン化 DRAM コントローラ 4KB命令キャッシュ、8KBデータキャッシュ 2ビット分岐予測 周辺コントローラ実装(SDC、UART、タイマー、割込コントローラ) Arty A7-35T という FPGA ボード上で動作させています。 スーパーバイザーモードは実装していないので、仮想メモリは使えません。みんなで仲良くメモリを共有します。 CPU の実装はこちらに置いてあります。書籍のサポートリポジトリの fpga 実装版を fork して機能追加しています。

                              RustでOSを書いた
                            • C言語でSQLiteのクローンを作るチュートリアルやった - valid,invalid

                              2019年12月の冬休みに1週間程かけて"Let's Build a Simple Database"という、C言語でSQLiteのクローンを作るチュートリアルをやりました。この存在を教えてくれた同僚に感謝 :pray: cstack.github.io チュートリアルの内容 Richard Feynman先生の“What I cannot create, I do not understand.”という言葉が掲げられているように、データベースを作ることでデータベースをより深く理解することに主眼が置かれているチュートリアルです。 これは重要事項説明かつタイトル詐欺に関する謝罪なのですが… 残念ながらこのチュートリアルは完成しておらず、Part 13が2017-11-26に公開されたのを最後に更新が止まってしまっており、以下の13章しかありません。 Part 1 - Introduction

                                C言語でSQLiteのクローンを作るチュートリアルやった - valid,invalid
                              • Microsoft Azure、わざと障害を発生させてサービスの耐障害性を鍛える「Azure Chaos Studio」発表

                                マイクロソフトは、Microsoft Azure上で人為的に障害や性能低下などを発生させることで、アプリケーションの耐障害性を確認し改善できる、いわゆるカオスエンジニアリングを実現する新サービス「Azure Chaos Studio」をプレビュー版として発表しました。 カオスエンジニアリングはもともと、動画配信サービスのNetflixがAWS上で稼働する同社のサービスの耐障害性を高めるために作り出した方法論です。2012年には人為的に障害をシミュレーションするツール「Chaos Monkey」をオープンソースで公開しています。 参考:サービス障害を起こさないために、障害を起こし続ける。逆転の発想のツールChaos Monkeyを、Netflixがオープンソースで公開 このChaos Monkeyの名称などから、こうした障害のシミュレーションを用いる手法を「カオスエンジニアリング」と呼ぶよう

                                  Microsoft Azure、わざと障害を発生させてサービスの耐障害性を鍛える「Azure Chaos Studio」発表
                                • Linuxカーネル内にWebAssemblyランタイムを実装し、ネイティブバイナリよりも高速に実行可能にする「Kernel-WASM」登場

                                  Linuxカーネル内にWebAssemblyランタイムを実装し、ネイティブバイナリよりも高速に実行可能にする「Kernel-WASM」登場 代表的なWebAssemblyランタイムの1つであるWasmerを開発しているWasmer社は、Linuxカーネル内にWebAssemblyランタイムを実装することで、安全かつ通常のLinuxバイナリよりも高速にWebAssemblyバイナリを実行可能にするオープンソースソフトウェア「Kernel-WASM」を公開しています。 (2023/2/13追記 このKernel-WASMの開発は2020年で止まっておりましたことを見落としていました。最近になって海外で話題になっており、新しい話題だと勘違いしたことが原因です。古い情報であることを基にした記事となっておりますことをお詫びいたします) Linuxカーネル内のWASMランタイムは第二のOS 同社はLi

                                    Linuxカーネル内にWebAssemblyランタイムを実装し、ネイティブバイナリよりも高速に実行可能にする「Kernel-WASM」登場
                                  • 現代における自作OSの難しさ 〜自作OSのいまと昔 [第2回] | さくらのナレッジ

                                    前回の記事では、自作OSとは何か、そしてこれまでの自作OSの歴史を紹介しました。しかし、近年になって自作OSを取り巻く状況は大きく変化してきています。そこで今回は、現代における自作OSでは、これまでと比べてどのような点が変化してきたのか、どのような難しい点があるのかについて紹介し、さらにそれらに対する解決策を、筆者の経験をもとに提案してゆきます。 自作OSをとりまく環境の変化 川合秀実氏著「30日でできる!OS自作入門」が出版された2006年頃と比べて、コンピュータをとりまく環境は大きく変化してきました。その変化には、CPUのコア数やビット幅からファームウェアの変遷、そしてデバイスの進化も含まれています。まず最初に、CPUのコア数について着目してみましょう。 CPUコア数の増加 上記の図は、1999年から2019年までにIntelから発売されたCPUのコア数の変化を示したグラフです。ご覧の

                                      現代における自作OSの難しさ 〜自作OSのいまと昔 [第2回] | さくらのナレッジ
                                    • Goならわかるシステムプログラミング第2版が出たので書評しますね - moriyoshiの日記

                                      少し前になりますが、3月23日に、渋川よしきさんの著された「Goならわかるシステムプログラミング 第2版 」が発売されました。初版と比べてかなり加筆されておりパワーアップしているので、初版をすでにお持ちの方でもさらに興味深く読むことのできる内容に仕上がっている、というのが第一印象です。 残念ながら初版発売時に記事にする機会がなかったのですが、あらためて今回書評したいなと思いましたので、徒然書いていきたいと思います。 この本は実はシステムプログラミングの本ではないかもしれない 「システムプログラミング」とは何でしょう。正直私にもわかりません。その語をはじめに思い浮かべた人は、プログラミングという概念のその中にあえて「システムプログラミング」という分類を作ろうと思い至ったということですから、きっと「非システムプログラミング」というものもあるということでしょう。知らんけど。しかし、これは本書の位

                                        Goならわかるシステムプログラミング第2版が出たので書評しますね - moriyoshiの日記
                                      • CPUキャッシュがGoのコードに与える影響(翻訳)|TechRacho by BPS株式会社

                                        繰り返しますが、正確な図はプロセッサモデルによって異なります。ここでは見積もりのため、以下の目安で考えます。メインメモリのアクセスに60ns(ナノ秒)かかり、L1キャッシュへのアクセス速度はその約50倍高速だとします。 さて、プロセッサの世界には「参照の局所性(locality of reference)」と呼ばれる重要な概念があります。プロセッサがメモリ上の特定の場所にアクセスするとき、以下のように予測を立てます。 近い将来、メモリ上の同じ場所にアクセスする可能性が非常に高い これは「時間的局所性(temporal locality)の法則」です 近い将来、メモリ上のその場所からごく近い場所にアクセスする可能性が非常に高い これは「空間的局所性(spatial locality)の法則」です CPUにキャッシュが存在する理由のひとつが、この時間的局所性です。では空間的局所性を高めるにはど

                                          CPUキャッシュがGoのコードに与える影響(翻訳)|TechRacho by BPS株式会社
                                        • Ruby 3.2.0 リリース

                                          Posted by naruse on 25 Dec 2022 Ruby 3.2.0 が公開されました。Ruby 3.2では多くの機能を追加するとともに、様々な改善が行われています。 WASIベースのWebAssemblyサポート WASIベースのWebAssemblyへのコンパイルがサポートされました。これにより、ブラウザやサーバーレスエッジ環境、その他のWebAssembly/WASI環境でCRubyのバイナリが利用できるようになります。現在この移植版はThread API以外のbasic testとbootstrap testをパスしています。 Background もともとWebAssembly (Wasm)が導入されたのは、プログラムをブラウザの上で安全かつ高速に実行するためでした。しかし、様々な環境で安全かつ効率的にプログラムを実行するという目的は、Webだけでなく一般的なアプ

                                          • Windows版Firefoxの「メモリ不足によるクラッシュ」を70%減らした手法とは?

                                            ウェブブラウザの利用中に「画面が突然閉じてしまった」という経験をしたことがある人は多いはず。ウェブブラウザ「Firefox」の開発チームの一員であるガブリエラ・スヴェルト氏は、Windows版Firefoxにおけるクラッシュを減らすために行ったメモリ最適化の概要を解説しています。 Improving Firefox stability with this one weird trick - Mozilla Hacks - the Web developer blog https://hacks.mozilla.org/2022/11/improving-firefox-stability-with-this-one-weird-trick/ FirefoxはmacOSやLinuxといったWindows以外のOSにも提供されていますが、スヴェルト氏によるとメモリ不足に起因するクラッシュはWi

                                              Windows版Firefoxの「メモリ不足によるクラッシュ」を70%減らした手法とは?
                                            • Windows NT系はUNIX系と比較して設計上のどういう点が先進的だったのか?

                                              元Google・現Microsoftのソフトウェアエンジニアであるジュリオ・メリノ氏が、現代のWindows 11の基盤アーキテクチャとなっているWindows NT系と、FreeBSDやLinuxなどに代表されるUNIX系を比較した考察をまとめています。 Windows NT vs. Unix: A design comparison - by Julio Merino https://blogsystem5.substack.com/p/windows-nt-vs-unix-design ・開発の経緯 MicrosoftはDOS系となるMS-DOSを1981年8月に、Windows 1.0を1985年11月にリリースしました。そして、DOS系の後継としてOS/2をIBMと共同開発していましたが、プロジェクトが難航したため、OS/2とは別となるMicrosoft独自の「Windows N

                                                Windows NT系はUNIX系と比較して設計上のどういう点が先進的だったのか?
                                              • 効率的なGo

                                                本書は、Goアプリケーションの効率やスケーリングに関する疑問に対して、実用的な答えを与えてくれる書籍です。 レイテンシー、CPU、メモリ資源についての知識、またOSやGoがそれらを抽象化している方法について、またソフトウェアの効率に関わるデータ駆動な意思決定を行う事の意味や、計算量解析の手法、最適化状況の例など、実用的なソフトウェアを開発する中での「効率」に関する知識を紹介します。 Goやその他のモダンな言語で書かれたプログラムを設計、作成、変更するソフトウェア開発者、また誰かが書いたソフトウェアを主に運用するDevOpsエンジニア、SRE、シスアド、プラットフォームチームなどの読者が、いつ、どのように効率最適化を適用するかという問いに答えるための知識を身に付けることができるでしょう。 関連ファイル 原著者による本書のサンプルリポジトリ 正誤表 ここで紹介する正誤表には、書籍発行後に気づい

                                                  効率的なGo
                                                • テキストエディタを作る

                                                  ここの記事を更新するのは約1年ぶり。夏の間は遊んでいたり秋からは仕事が忙しくなったりの近況だった。 コロナウィルスで自宅に閉じ込められてしまったので、プログラミングの練習のためにテキストエディタを作ってみた。 得られた知見などを紹介しよう。 目標としている機能・実装 練習・教材用として十分な小ささ。 記事のネタになる。また、作っていて飽きない。ひと篭もりするプロジェクトとして適切なサイズ。 昔から、プログラマなら作ってみたいものとして、(1)コンパイラ (2)OS (3)エディタ、がよく挙げられる。コンパイラについては以前に書いた。今回はエディタにチャレンジしてみることにした。 テキストエディタを作る場合、GUIツールキットを使って作成することも考えられるが、今回はviのようにターミナル上で動作するタイプのものを作る。時間があれば、次の様な発展的な目標も検討したい。 設定変更機能を持つ(そ

                                                  • Apple A4チップやAMD Ryzenの生みの親であるジム・ケラー氏がNVIDIAのCUDAとx86アーキテクチャを「沼」と呼んで批判

                                                    AMDのAthlonやZenマイクロアーキテクチャ、Apple A4などさまざまなチップの開発に携わったアーキテクトでエンジニアのジム・ケラー氏が、X(旧Twitter)で「NVIDIAのCUDAは沼です」と批判したことが報じられています。 Jim Keller criticizes Nvidia's CUDA, x86 — 'Cuda’s a swamp, not a moat. x86 was a swamp too' | Tom's Hardware https://www.tomshardware.com/tech-industry/artificial-intelligence/jim-keller-criticizes-nvidias-cuda-and-x86-cudas-a-swamp-not-a-moat-x86-was-a-swamp-too ケラー氏の経歴は以下の記事を

                                                      Apple A4チップやAMD Ryzenの生みの親であるジム・ケラー氏がNVIDIAのCUDAとx86アーキテクチャを「沼」と呼んで批判
                                                    • 「ガベージコレクション 自動的メモリ管理を構成する理論と実装」を読んだ

                                                      最近「おれってガベージコレクションを勉強するにあたってめちゃくちゃ恵まれた環境にあるのでは?」とふと思い立ち、ベージコレクションの勉強を始めました。 ガベージコレクションの勉強を始めるにあたって、とりあえず「The Garbage Collection Handbook (first edition)」の邦訳である「ガベージコレクション 自動的メモリ管理を構成する理論と実装」を読むことにしました。 この記事では、読み終わってうれしいので、雑に感想を書きなぐっています。表記が「GC」だったり「ガベージコレクション」だったりするのは雑に書いたからです。 前提知識 ガベージコレクションの事前知識はほとんど不要で、何をしてくれるものか大まかにわかっていれば良い程度だと思います。つまり、ヒープに確保した領域を明示的に解放しなくても、何かのアルゴリズムでいい感じにやってくれる仕組み、ということを知って

                                                        「ガベージコレクション 自動的メモリ管理を構成する理論と実装」を読んだ
                                                      • 17歳の学生が独学で「どのようにCPUがプログラムを動かすのか」を調査し詳細に解説するページを作成

                                                        コンピューターの頭脳ともいえるCPUが、どのようにプログラムを実行するのかについて、17歳のエンジニアであるレクシー・マティック氏が、独学で調べた知識を解説したウェブページを公開しています。 Putting the "You" in CPU https://cpu.land/ 「プログラムを実行するとどうなるか」について疑問を抱いていたマティック氏は、独学での学習を始めたものの、OSやCPUがどのように機能するかについて詳細かつ適切に解説するサイトは見つからなかったそうです。そこでマティック氏は、「自分自身で本当に良い学習リソースを作るべきだ」と考え、解説ページの作成に取り掛かりました。 PCでプログラムを実行する際、CPUは命令を順番に実行していく必要があります。しかし、CPUプロセッサは、一度に複数のプログラムを実行することができません。そこで、OSの中核を担うカーネルが、タイマーを使

                                                          17歳の学生が独学で「どのようにCPUがプログラムを動かすのか」を調査し詳細に解説するページを作成
                                                        • Windows10の動作が重いときにする設定|高速化して軽くする方法

                                                          バックグラウンドアプリの無効化 透明効果の無効化 ディスクのクリーンアップ 仮想メモリの設定 電源オプションの変更 プロセッサの電源管理 不要なファイルの削除(tempフォルダ) 不要なファイルの削除(%temp%フォルダ) ストレージセンサーをオンにする バックグラウンドアプリの無効化 パソコンは画面を開いていなくても、アプリケーションをバックグラウンド(裏)で動作させる機能があります。裏で動作しているということは、目には見えないバックグラウンドでアプリが実行されているということです。 つまり、気づかないところでアプリが動いていて、PCのメモリ(容量)を使っているということになります。 初期設定でいくつかのアプリがバックグラウンドで自動的に実行されるようになっていますが、ほとんどが利用頻度の低いアプリケーションです。 使いたい時に必要なアプリを利用すれば問題ありませんので「バックグラウン

                                                            Windows10の動作が重いときにする設定|高速化して軽くする方法
                                                          • プロセス情報をデタラメにする攻撃「Process Herpaderping」の内部構造を紐解く | 技術者ブログ | 三井物産セキュアディレクション株式会社

                                                            早速ですが、まずは以下の図1をご覧ください。 真ん中にメッセージボックスが表示されていますが、このメッセージボックスを表示するプロセスがどこから起動しているのか、つまり、実体EXEファイルの場所がこの図からわかるでしょうか? 図 1 プロセス情報がデタラメになっている様子 図1では、Process ExplorerやProcess Hackerで見る限り、プロセス名は「こんばんは!★」(拡張子なし)となっています。各ツールで表示されたプロセスのプロパティ情報を見ると、Process Explorerでは実体の場所がExplorer.exeであるかのように見えてしまっています。 一方でProcess Hackerでは、メッセージボックスのプロセスがMicrosoftの有効なデジタル署名を持っているかのように見えており、実体の場所が「こんばんは!★」を指しているように見えます。 では該当の「こ

                                                              プロセス情報をデタラメにする攻撃「Process Herpaderping」の内部構造を紐解く | 技術者ブログ | 三井物産セキュアディレクション株式会社
                                                            • たぶんエンジニアには64GB(以上の)メモリのPCを与えた方が生産性が上がると思う件 - Qiita

                                                              会社で支給するPCのスペックについて、どういうものが良いのか、よく思案します。(僕は情シスではないのですが) 要は、エンジニアの生産性です。 最近はなんでもブラウザを利用するようになっていて、例えばクラウドを利用した開発や運用ならそのクラウドのWebページを複数開く必要があるし、システムによっては監視アプリケーションや運用に使うアプリや開発自体もWebでやる場合があると思います。 で、私のローカル環境について言うと、今使っているのは32GBメモリのPCなのですが、ブラウザって、タブごとに数十MB~数百MB(大体200~300MB, 大きいときは500MBなど)使ってて、ブラウザだけでめっちゃメモリ食うんですよね。 以下は、FirefoxでAWSの開発/ステージング/本番環境の検証や運用を1日やっていたときの、タスクマネージャでのfirefox.exeの各タブ(=プロセス)でのメモリ消費です

                                                                たぶんエンジニアには64GB(以上の)メモリのPCを与えた方が生産性が上がると思う件 - Qiita
                                                              • C言語でWasmインタプリタを実装した話

                                                                概要 公式のcore testが全て(UTF8, WAT, SIMD関連のものは除く)通るWasmインタプリタをC言語でフルスクラッチで実装した。自作Wasmランタイムで省略されがちなValidation Stageも実装した。この記事はWebAssembly Advent Calendar 2023の三日目の記事である。 目的 このWasmランタイムを実装するにあたり、「できるだけ仕様に従って実装する」ことを心掛けた。Wasmの仕様書は以下のissueが立つほど読みにくいものとなっているが、ランタイムをどのように実装すべきかが詳しく書いてあり、一応仕様書を頑張って読めばランタイムが作れるようになっている。 この自作Wasmランタイムの目的は、できるだけ仕様に従った実装を与えることで、仕様の理解を助けることである。早さや効率性よりも分かりやすさを優先しているため、実用には向かない。仕様書を

                                                                  C言語でWasmインタプリタを実装した話
                                                                • Python並行・並列処理を整理する (入門) - Qiita

                                                                  概要 大量データに関するワークロードを、モノリシックに解決する場合、並行・並列処理の知識は活用できます 但し、一般にPythonにはGILが存在するため、正しい挙動を抑えておきたい所です 内容 Pythonにおける並行処理・並列処理 プロセス = OSが管理する実行単位 (CPUコア毎) スレッド = プロセス内の軽量な実行単位 (1CPUコア内) 上記前提を踏まえると、以下となります 並行処理 = 1つのプロセスに複数のスレッドが存在します (PythonはGILにより基本1プロセス制約です) 並列処理 = 複数のプロセスを並行して進めます (複数プロセス活用できます) MMU (Memory Management Unit)に関して プロセスから参照するメモリはMMUにより制御された仮想メモリを参照します。MMUによりプロセス間ではメモリ競合は起きません (1プロセス ≒ 1CPUコア

                                                                    Python並行・並列処理を整理する (入門) - Qiita
                                                                  • リアルタイムOSとは何か、ここ最近10年の動向を概説する

                                                                    リアルタイムOSとは何か、ここ最近10年の動向を概説する:リアルタイムOS列伝(1)(1/3 ページ) IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第1回は、リアルタイムOSのここ最近10年の動向について概説する。 リアルタイムOS(RTOS)は、組み込み向けシステムにおいて、既に欠くことができない重要なコンポーネントになっている、と言うと「えー」という声も聞こえそうだが、事実そういうポジションにある。 RTOSとは何か、という話は3年ほど前にもTechFactoryで一度書かせていただいているが、要するに組み込み向けに最適化した(特にリアルタイム応答性能を重視した)軽量なOSである。 先述の記事では、以下の7つの特徴をご紹介した。 複数スレッド(タスク)の並行動作が可能 最

                                                                      リアルタイムOSとは何か、ここ最近10年の動向を概説する
                                                                    • 間接参照を巨大仮想メモリで飲み込む - Software Transactional Memo

                                                                      この記事はデータベース・システム系 Advent Calendar 2023の3日目の記事である。昨日の記事も僕でした。 間接参照を巨大仮想メモリで飲み込む メインメモリはハードディスクやSSDより容量が小さく、この問題は当面は解決の目処が立たない。 そもそも今のDRAMより速くて安くて大きいストレージが仮に発明されてもそれがDRAMに取って代わるメインメモリの立ち位置になるだけであってその下のレイヤーには依然としてそのメインメモリより安くて大きなストレージが置かれる事になる。大局的な観点ではストレージの階層構造とは経済活動の鏡像でもある。 バッファプール さて、耳にタコができるほど繰り返しているが現代のデータベースはディスクなどの永続ストレージにデータの本尊が保存され、メインメモリはそれに対する読み書きを高速化するためのデータ一時置き場としての役割を担当している。 代表的なRDBMSは3

                                                                        間接参照を巨大仮想メモリで飲み込む - Software Transactional Memo
                                                                      • 初めてのマルウェア解析

                                                                        マルウェア解析は、マルウェアを分析してどのように悪意のある振る舞いをするか、どのような攻撃技術を悪用しているかを洗い出し、インシデント対策に役立てる技術で、近年のサイバー攻撃対策に欠かせない技術です。本書は、そのマルウェア解析技術について丁寧に解説する入門書です。表層解析、動的解析、静的解析、メモリ解析などの必要な技術を、多くの研究やトレーニングの実績を持つ著者が網羅的かつ体系的に解説していきます。基礎の理解に重点を置いており、本書を読むことでマルウェア解析に必要な基礎技術をひと通り習得することができます。これからマルウェア解析を学ぶ方にも、マルウェア解析の知識を再確認したい方にもおすすめの一冊です。 はじめに 本書の想定読者 本書の構成 この本を最大限に活用するために カラー画像のダウンロード 本書の表記法 問い合わせ先 謝辞 1章 ようこそ、マルウェア解析の世界へ 1.1 マルウェアの

                                                                          初めてのマルウェア解析
                                                                        • RISC-VのCPUにメモリの内容を好き放題にできる脆弱性「GhostWrite」が見つかる、対策するとCPU性能が大幅に低下

                                                                          RISC-VのCPUのひとつに、デバイスのメモリを自由に読み取ったり書き換えたりすることができてしまう脆弱(ぜいじゃく)性の「GhostWrite」があることがわかりました。ハードウェアの設計上の問題であるため、修正パッチなどのソフトウェア的な対策を講じることはできず、対処するには性能を大幅に犠牲にしなくてはならないと指摘されています。 GhostWrite https://ghostwriteattack.com/ 今回発見された脆弱性のGhostWriteは、Alibabaの子会社である中国のメーカー・T-Headが開発しているCPUで、現行で最速のRISC-Vチップとされている「T-Head XuanTie C910」の不具合です。 GhostWriteを発見したヘルムホルツ情報セキュリティセンター(CISPA)の研究チームによると、GhostWriteの影響を受ける命令は仮想メモリ

                                                                            RISC-VのCPUにメモリの内容を好き放題にできる脆弱性「GhostWrite」が見つかる、対策するとCPU性能が大幅に低下
                                                                          • Go 1.19のメモリ周りの更新 | フューチャー技術ブログ

                                                                            Go 1.19リリース連載の6本目です。 Go 1.19では、いくつかメモリ周りの更新がありました。1つはガベージコレクタ周りのお話と、あとはメモリモデルの更新です。 ライブラリではsync/atomic.Int64など、いくつか型が追加されました。 ガベージコレクタガベージコレクタの詳細と調整の仕方についてのドキュメント が追加されました。このドキュメントはスライダーで動作の変化がみられるインタラクティブなドキュメントになっているので、ぜひご覧ください。 「GoはJavaと違って、GCの調整ポイントがほとんどなく、最初からトップスピード(オプションの選択の中で相対的に)だよ」みたいに説明されることもありましたが、そういうわけにも行かなくなったというか、ある程度知っておく必要はあるかもしれません。とはいえ、デフォルトでも十分うまくやってくれますし、そもそも即座に終了するユーティリティでは頑

                                                                              Go 1.19のメモリ周りの更新 | フューチャー技術ブログ
                                                                            • Apple端末のセキュリティチップ「Secure Enclave」はどのようにして突破されてしまったのか?

                                                                              Appleデバイスで機密データの暗号化に使用される「Secure Enclave(SEP)」にパッチ不可能な脆弱性が存在すると、中国人ハッカーグループ「Pangu」に所属するwindknown氏がMOSEC 2020にて発表しました。この脆弱性に関する情報をまとめた資料がGitHubで公開されており、仮想メモリ空間の暗号化キーの抜き出しといった脆弱性の詳細を知ることができます。 presentations/Attack_Secure_Boot_of_SEP.pdf at master · windknown/presentations · GitHub https://github.com/windknown/presentations/blob/master/Attack_Secure_Boot_of_SEP.pdf ほぼすべてのApple端末に組み込まれている「Secure Encla

                                                                                Apple端末のセキュリティチップ「Secure Enclave」はどのようにして突破されてしまったのか?
                                                                              • 飽くなき高速化への挑戦! 「EmEditor」はマルチスレッド・SIMD命令・仮想メモリをフルに使って進化/最強テキストエディター「EmEditor」開発者 江村豊氏インタビュー【特集・集中企画】

                                                                                  飽くなき高速化への挑戦! 「EmEditor」はマルチスレッド・SIMD命令・仮想メモリをフルに使って進化/最強テキストエディター「EmEditor」開発者 江村豊氏インタビュー【特集・集中企画】
                                                                                • Using Native Memory by JVM | DevelopersIO

                                                                                  はじめに こんにちは。事業開発部のこむろ@さっぽろです。 最近、諸事情から所属部署でどこにでも顔を出す人として活動しています。 今回はJVMのメモリ周りについて初めて調べました。 背景 Javaアプリケーションを利用している場合、最近ではContainerを利用してアプリケーションを起動しているところも多いかと思います。わたしの所属する事業開発部では、ECSを利用して複数のJavaアプリケーション(Spring Boot)をContainerで稼働させています。 Containerで稼働させるため一つのホストのリソースをすべて割り当てられるわけではありません。Containerには利用できるリソースにハードリミットが設けられているため、リソースの配分には少々気を使う必要があります。 今まであまり意識してチューニング等していなかったのですが(富豪的にメモリを割り当てたりしてて深く考えていなか

                                                                                    Using Native Memory by JVM | DevelopersIO