日本アニメ初の快挙!海外アニメ賞を受賞した『スキップとローファー』海外ライセンス部長&プロデューサーが語る、奮闘の舞台裏
日本アニメ初の快挙!海外アニメ賞を受賞した『スキップとローファー』海外ライセンス部長&プロデューサーが語る、奮闘の舞台裏
調べ方 /proc/[pid]/smaps で KernelPageSize がデフォルトの 4kB 以外のプロセスを探す。 調べ方の例 /proc/[pid]/smaps で KernelPageSize が 4 kB 以外のプロセスを探す。 [root@yazekats-linux ~]# perl -lane '/KernelPageSize/ and $F[1]!=4 and print qq/$ARGV\t$_/' /proc/*/smaps /proc/3834/smaps KernelPageSize: 2048 kB PID:3834 のプロセス名を調べる。 [root@yazekats-linux ~]# ps -fp 3834 UID PID PPID C STIME TTY TIME CMD root 3834 3832 0 13:44 pts/0 00:00:01
ユークエスト株式会社は2021年10月1日をもちまして、 株式会社東光高岳に吸収合併を致しました。 Webサイトは下記のURLに移転しました。 https://uquest.tktk.co.jp/ ※5秒後に移転先にジャンプします。
Linux プログラミング言語 malloc(3)のメモリ管理構造 2007/11/30 技術本部 クラウド基盤エキスパート 角馬 文彦 malloc()といえばC言語ではお馴染みのライブラリで、最も良く使用されるライブラリの一つです。しかしその分だけ何らかの不具合を経験した人も多いのではないでしょうか。本書ではmalloc()、free()で確保、解放されるメモリリソースが内部的にどのように管理されているかを説明していきます。mallocライブラリの仕様を理解する事で、ライブラリ使用時に何らかの不具合が発生した際の手助けになればと思います。 ここではLinuxディストリビューションで標準的に使用されているglibcのmallocライブラリを扱います。今回の調査では次の環境を使用しています。 ディストリビューション :Debian sarge パッケージバージョン :glibc-2.3.
令和からの働き方について 元「傲慢SE日記」で、しばらく放置していました。 2020年からはこれからの働き方などについて書いて行こうかと思います。 本カテゴリーは手続き型言語になれている人がどうやったらオブジェクト指向を理解できるのかを考えて書いている記事です。 多少の言語知識があることを前提に進めます。 C#やJava等の言語では肝となる部分です。 この概念が分からないとガベージコレクションの概念が分かりません。 そして、この概念を持っているとオブジェクト指向の理解が早まります。 さて、スタック領域は皆さん知っているはずです。 特にC言語を使っている方はお手の物のはずです。 なぜなら、 普段使っている領域 ですから。 まぁ、順を追って一つずつ解決していきましょう。 まず。ポインタの概念からゆっくりと解決していきましょう。 int i = 0; この書式はint型のiを定義して0を入れてい
前回までの内容 これまでで、 物理メモリを4KBを1つの単位として管理する 4KBに分けられた物理メモリをビットマップで管理する。0がフリーなブロック、1が割り当て済みブロック 管理するビットマップはカーネルの直ぐ後のアドレスに配置しておく BIOSのINT 0x15命令で取得したメモリマップ情報に従ってビットマップを初期化する ビットマップを操作する関数と、物理メモリの割り当てる関数、解放する関数を作りました ことがわかりました。それではカーネルを0から開発していきましょう! 今回はページングついて説明します 物理メモリ管理の限界 前回物理メモリの割り当て、解放について見てきましたが、 物理メモリを管理するだけでは困った問題が起きてきます たくさんのプログラムをプロセスとして動かすといった場合に、 全てのプログラムをメモリ上にロードできない場合があります 各プロセスは各々ファイルをオープ
トランスレーション・ルックアサイド・バッファ(英: Translation Lookaside Buffer、TLB)とは、メモリ管理ユニット内のある種のキャッシュであり、仮想アドレスから物理アドレスへの変換の高速化を図るものである。こんにちの仮想記憶をサポートするマイクロプロセッサは、仮想空間と物理空間のマッピングにTLBを利用しているのがほとんどである。 TLBは通常、連想メモリ (CAM) で実装されている。CPUがメモリ空間にアクセスする際、検索キーとして仮想アドレスを使い、TLB上にそのアドレスに対応するエントリがあれば、検索結果として対応する物理アドレスが返る。これを「TLBヒット」と呼ぶ。要求したアドレスがTLB内にない場合は「TLBミス」であり、アドレス変換のためにページテーブルを辿っていかなければならない。これを「ページウォーク」と呼ぶ。ページウォークは複数個所のメモリの
mmapの基本的な動作はファイルをメモリにマップすることですが、mmap()を実行したときにいきなりファイルがメモリにコピーされるわけではありません。 mmap()を実行するとアドレスが返されますが、このときこのメモリ番地は物理メモリ上に乗っていません。 だから、この番地をアクセスするとページフォルトが発生します。このページフォルトを受けて、はじめてデータがファイル(ディスク)から物理メモリにコピーされます。(なお、もし元々このファイルがファイルキャッシュに乗っている場合は、このファイルキッシュのアドレスがそのまま返されます) mmapされた領域に書き込まれたデータは、適宜ディスクに書き戻されます。 なお、ファイルの一部だけがアクセスされたら、その一部だけをメモリに乗せればよいです。また、物理メモリが足りなくなったら、あまりアクセスされていないページはページアウトさせます。 この「ページフ
ユークエスト株式会社は2021年10月1日をもちまして、 株式会社東光高岳に吸収合併を致しました。 Webサイトは下記のURLに移転しました。 https://uquest.tktk.co.jp/ ※5秒後に移転先にジャンプします。
Headerを解析するために、内容をダンプして値を調べていたのでは日が暮れてしまう。世の中には、Headerを解析して見やすい形に整形してくれるobjdumpとreadelfコマンドという便利なツールがある。これらのツールは、OSインストール時(少なくともBSD系のOSでは)には、既にインストールされているので、新たにインストールせずともお手軽に使える。 bjdumpコマンドは、object fileの内容をダンプしたり、アセンブラのニーモニックに変換してくれたりする。それ以外にも、object fileのHeaderを読んで画面上に表示する機能もある。ELF形式だけでなく、aout形式のobject formatにも対応している。 頻繁に使われるオプションとして次のものが挙げられる -x : 全てのHeader内容を表示する -d : 実行可能 sectionの内容をassemblerす
Linux をベースとするオペレーティングシステムは仮想メモリシステムを使用します。 ユーザー領域のアプリケーションによって参照されるアドレスはすべて物理的なアドレスに変換されなければなりません。 これは基礎となるコンピューターシステム内のアドレス変換ハードウェアとページテーブルの組み合わせによって行われます。 プログラムと実際のメモリ間に変換メカニズムを持たせることにより得られる結果のひとつとして、 オペレーティングシステムが必要なときにページを流用できることです。 以前に使用したページテーブルエントリに無効マークを付けることでこれを行わせるため、 メモリに対する負担が通常通りであってもオペレーティングシステムに任意のアプリケーションからページを収集して別のアプリケーションにそれを与えることができます。 これは決定論的な動作を必要とするようなシステムの場合には悪影響を及ぼす場合があります
NUMA(英: Non-Uniform Memory Access)とは、共有メモリ型マルチプロセッサコンピュータシステムのアーキテクチャのひとつで、複数プロセッサが共有するメインメモリへのアクセスコストが、メモリ領域とプロセッサに依存して均一でないアーキテクチャである。日本語では「不均一メモリアクセス」や「不均等メモリアクセス」と訳される[1][2]。 定義[編集] プロセッサとメモリの対(これをノードと呼ぶ)が複数存在し、それらをインターコネクト(その詳細は問わない)で接続したものを学術的にはNUMAの定義としている。ただし共有メモリ型であるので各プロセッサが全ノードのメモリを利用可能である必要があり、各ノードのメモリを全プロセッサに共通の物理アドレス空間にマップできることが要件となる。あるプロセッサから見て同一ノードのメモリを「ローカル」メモリ、他ノードのメモリを「リモート」メモリと
Linux上で任意のファイルがページキャッシュに乗っているかどうか調べるCで書かれたプログラムを見つけたので、コンパイルして実行してみた。 Linux上のとあるファイルがページキャッシュに乗っているかどうかを調べたいなーと思ってGoogle先生にご相談したところ、こんなコマンドを教えてくれた。 ファイルをメモリにマップして、mincore(2)でページごとにRAMに存在するかどうかをチェックしているらしい。 mmapしても即メモリにロードされるわけではないのかぁ。 Cの部分だけ抜き出して、単体で動かしてみた。 #include <errno.h> /* errno */ #include <fcntl.h> /* fcntl, open */ #include <stdio.h> /* perror, fprintf, stderr, printf */ #include <stdlib.
JavaScript is disabled on your browser. Please enable JavaScript to use correctly mesosadmin frontend Please login Login Password Forgot your personal password ? We can remind you
All of Percona’s open-source software products, in one place, to download as much or as little as you need.
1.はじめに プログラミング言語とはシステム化する対象物を抽象化し、コンピュータで処理可能なコードを記述するために用いる人工言語である。プログラミング言語はコンピュータの機械語と一対一の対応をもったアセンブラから始まり、コンパイラを用いて機械語に翻訳することを前提としたコンパイラ言語、インタプリタと呼ばれるプログラムがソースコードを解釈し実行するスクリプト言語と、記述できる抽象度を高める方向へと進化してきた。 プログラミング言語はその存在理由から、より抽象度の高い記述が行えること、すばやい開発を行える事が求められる。抽象度の高い記述とは、プログラムがどういう処理を行うか(HOW)ではなく何の処理を行うか(WHAT)を記述しやすい構文、機能を持っていることを、すばやい開発とは記述性の高さ、コードの密度の高さ、バグの発生しにくい構文、機能を持っていることをさす。 この抽象度の高い記述、すばやい
Linux/プロセス管理 ./同期? 導入 単純なシェルのコードを次に示す. while (1) { display_prompt(); read_command(command, params); pid = fork(); if (pid != 0) { waitpid(-1, &status, 0); // parent process } else { execve(command, params, o); // child process } } fork と exec はそれぞれ何をやっているのか? (まずは各システムコールの外部仕様を知ること!) 課題 プロセス構造体にはどんなメンバがあるか プロセスに対するイベントとプロセスの一生(プロセスの状態遷移)についてまとめる fork(2)のコードをできるだけ追ってみる init プロセスはどうやって生まれるか.カーネルモードから
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く