Tanaka Akira (National Institute of Advanced Industrial Science and Technology (AIST))
ディレクトリの中にある大量のファイルを高速に読み込む方法が知りたかったので、実験してみた。想定しているシチュエーションは、一つ一つのファイルは数KB程度だが数が多い、という場合である。適当な順番でアクセスすると、ランダムアクセスになってしまいとても時間がかかる。個々のファイルを読み込む順番はどうでも良く、すべてのファイルを処理することさえできればいいので、原理的にはシーケンシャルアクセスで処理できてしかるべきである。 まず、ファイルシステムについて。HDDやSSDなどのハードウェアにアクセスする際には、ファイル名などという概念はもちろん存在しない。ファイル名と実際のディスク上の対応を管理するのがファイルシステムの主な役割である。ファイルシステムは、ファイル名からそのファイルに対応するブロック番号(メモリアドレスみたいなもんだな)を調べて、そのブロック番号を指定してHDDやSSDにアクセスす
ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、Yahoo!ショッピング担当の吉野です。 今回はタイトルの通り、headコマンドとtailコマンドのソースコードを読んでいきたいと思います。 ■はじめに 皆さんご存じの通り、headコマンドはファイルの先頭からn行(バイト)を出力し、 tailコマンドはファイルの末尾からn行(バイト)を出力するコマンドです。 ほかにもパイプの入力に使ったり、[tail -f]でログファイルの出力監視に使ったりと、 UNIXを使う上では欠かせないコマンドと言えるでしょう。 headとtailは見た目の動作は似ているようですが、ソースコードの中は結構違います。 さっそく見ていきましょう。 <headのソースコード> http://www.
Last revised on May 25, 2000 UNIX & XWindow 環境における C/C++プログラミング言語の基礎とその計算物理への応用を解説します。 このホームページの古い版の偽ミラーサイトが存在するのでご注意ください。 本物のサイトは http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/ です。 前書き 推奨図書一覧 C言語とC++言語の基礎文法の初心者向け解説 (プログラム初心者を対象としたC/C++言語の入門です) 第1章 C言語とC++言語の役割 第2章 簡単な計算 第3章 ループで繰り返し計算 第4章 配列で大量データ処理 第5章 関数で計算の分担 第6章 文字列の操作 第7章 ファイルの操作 第8章 グラフィック(XWindow System利用者向け) 高校物理の計算例 (高校生を対象として初歩的な物
makeって何? † ソースファイルを分割して大規模なプログラムを作成していると、コマンドでコンパイルするのが面倒です。また、一部のソースファイルを書き換えただけなのに全部をコンパイルし直すのは時間の無駄です。 そんな問題を解決するのがmakeです。Makefileと呼ばれるテキストファイルに必要なファイルと各ファイルのコンパイルのコマンド、ファイル間の依存関係を記します。そして、“make”というコマンドを実行するだけで、自動的にコマンドを実行してコンパイルしてくれます。これだけではスクリプトと大差がないのですが、makeはMakefileに記された依存関係に基づいて更新されたファイルの内関連のあるものだけを更新することで、コンパイル時間を短くします。 makeは特定のプログラミング言語に依存したものではありません。C言語のソースファイルのコンパイルにも使えますし、Verilog-HDL
OMakeすごい。OMakeはマジですごい。 OMakeはGNU makeの代替品みたいなものなんだけど、正直なところこのツールの強力さはGNU makeと比べると失礼なくらいすごい。これのおかげで、「コード修正→ビルド→デバッグ→コード修正→・・・」のループの、ビルドにあたる作業がほぼ消え去った。 ファイルの依存関係の解析がとにかくすごい。よくあるユースケースなんかの場合、最小限の手間でほぼ完璧に依存関係を網羅して、よしなにビルドしてくれる。 とりあえず、はやみずが実際に使ってみたケースを例にとってそのすごさの一端を紹介しようと思う。 case study 論より証拠ということで、自分が OMake を試しにつかってみたケースを紹介する。C言語でスタティックライブラリを作っていて、それに加えて簡単なテストプログラムを書いている。 /include/ 以下にヘッダファイルが全部ある /sr
普通のやつらの下を行け: C でバックトレース表示 普通のやつらの下を行けの第2回として、今回は glibc の関数を使って C でバックトレース (スタックトレース) の表示を行ってみます。 バックトレースとは バックトレースとは、大ざっぱに言うと、現在の関数に至るまでの道筋です。たとえば、次の Ruby プログラムを実行すると、 1 / 0 の行で例外が発生して、バックトレースの表示とともにプログラムは異常終了します。 def foo 1 / 0 end def main foo end main この例では main から foo を呼び foo の中の 1 / 0 の部分で例外が発生しています。 % ruby divide-by-zero.rb divide-by-zero.rb:2:in `/': divided by 0 (ZeroDivisionError) from div
電子・情報工学系 追川 修一 <shui @ cs.tsukuba.ac.jp> このページは,次の URL にあります. http://www.coins.tsukuba.ac.jp/~syspro/2005/No3.html システムプログラムのホームページ(2005年度) http://www.coins.tsukuba.ac.jp/~syspro/2005/ からもリンクが張ってあります. 今日の内容 プロセスの概念:プロセスとプログラムの関係,プロセスの構造,機能,属性,生成,パイプ プロセスの操作:コマンド,システムコール,ライブラリ関数 プロセスの概念と機能 プログラムとプロセス プログラムは,CPUが実行できる機械語命令とそれにより処理されるデータの集合(実行形式,ロードモジュール)がファイルに格納されたものである. 他に,ヘッダと呼ばれる部分には機械語命令やデータなどの各
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く