レガシーガジェット研究所

気になったことのあれこれ。

Erlang 入門

概要

1986年にスウェーデンの通信機器メーカーであるEricsson社が電話通信アプリケーションを開発する目的でErlangを開発し1998年にOSSとして公開した。

Erlangは巨大なサーバソフトウェア(メッセージキューイングやWebサーバ、分散データベースなど)などの高レベルプロトコルの実装に向いており、現在ではWhatsApp、ドワンゴ、LINEなどがErlangを採用していることを表明している。

qsort([]) -> [];
qsort([Pivot|Rest]) ->
  qsort([ X || X <- Rest, X < Pivot ])
  ++ [Pivot] ++ 
  qsort([ Y || Y <- Rest, Y >=Pivot ]).

e.g. クイックソート

続きを読む

Linux Kernel ~ ext2ファイルシステム ~

概要

「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelx86とする。

今回はrxt2のファイルシステムについて見ていく。

ext2

ext2は1994年に導入されたファイルシステムLinuxにとってネイティブのファイルシステムである。ext2の特徴としては以下のようなものが挙げられる。

  • ファイルシステム作成時に扱うファイルの平均サイズの予測からブロックサイズを1~4KBの間で選択可能。
  • ファイルシステム作成時に扱うファイル数の予測から一定サイズあたりのiノード数を選択可能。
  • ファイルの断片化を可能な限り防ぐためファイルの拡張のための隣接する領域を予め確保する。
  • シンボリックリンクの文字列が60文字以下の場合にデータブロックではなくiノードにパス名を保存する。
続きを読む

Linux Kernel ~ 仮想ファイルシステムの操作 ~

概要

「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelx86とする。

今回はプロセスの仮想ファイルシステム(VFS)の操作について見ていく。

続きを読む

Linux Kernel ~ 仮想ファイルシステムのデータ構造 ~

概要

「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelx86とする。

今回はプロセスの仮想ファイルシステム(VFS)のデータ構造について見ていく。

VFSの役割

VFS(Virtual File System)はUNIXファイルシステムの全てのシステムコールを処理し、複数種類のファイルシステムへの共通インターフェースを提供する。

続きを読む

Linux Kernel ~ プロセスアドレス空間 ~

概要

「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelx86とする。

今回はプロセスのアドレス空間について見ていく。

メモリ割り当ての指針

カーネルからメモリ要求は最優先とし即座にメモリ割り当てを行い、且つ当該処理にバグが含まれないことを前提にエラーへの対策は必要以上には行わない。

一方でユーザプロセスからのメモリ要求は緊急でないとし、リニアアドレスに対するアクセス権のみを付与し割り当ては遅延させる。実際にアクセスがあるまでページフレームの割り当てを行わず、アドレッシングエラーなども必ず補足する。

続きを読む