地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【Linux】シスパフォ本メモ 用語

https://www.amazon.co.jp/exec/obidos/ASIN/4873117909/aknow-22/

ファイルシステム

データをファイルとディレクトリに組織したもの ファイルベースインターフェイス、ファイルパーミッション、特殊ファイルタイプ(デバイス、ソケット、パイプ)、メタデータ(ファイルアクセスタイムスタンプなど)を備える

ファイルシステムキャッシュ

ファイルシステム内コンテンツをキャッシングするために使われるメインメモリ領域 ページキャッシュ:ファイルI/Oを最適化するための、ファイルページ単位のキャッシュ バッファキャッシュ:ファイルI/Oを最適化するための、ディスクブロック単位のキャッシュ。メタデータのI/Oに使われることが多い ほかにもいろいろ。

理I/O

アプリケーションがファイルシステムに対して発行するI/O要求

理I/O

ファイルシステムがディスクに直接発行するI/O要求 または Raw I/O を介して発行するI/O要求

スループット

アプリケーションとファイルシステムの間でのデータ転送速度。バイト/秒。

iノード

インデックスノード。 パーミッションタイプ、タイムスタンプ、データポインタなどのファイルシステムオブジェクトのメタデータを格納するデータ構造。

VFS

Virtual File System 異なるファイルシステムを抽象化してサポートするためのカーネルインターフェイス

ボリュームマネージャ

物理ストレージデバイスを柔軟に管理するためのソフトウェア。 物理ストレージデバイスからOSが利用可能な仮想ボリュームを作る

【Linux】mmapリーディングの開始地点あたりのメモ

概要

mmapを読もうと思ったのでその開始地点のメモ。迷子になったらここに戻ってくるように書いておく

github.com

mmapの実装

asmlinkage long sys32_mmap(struct mmap_arg_struct32 __user *arg)
{
  struct mmap_arg_struct32 a;

  if (copy_from_user(&a, arg, sizeof(a)))
    return -EFAULT;

  if (a.offset & ~PAGE_MASK)
    return -EINVAL;

  return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd,
             a.offset>>PAGE_SHIFT);
}

実際の処理はsys_mmap_pgoff()のようなので、これを見る。

SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len,
    unsigned long, prot, unsigned long, flags,
    unsigned long, fd, unsigned long, pgoff)
{
  struct file *file = NULL;
  unsigned long retval = -EBADF;

  if (!(flags & MAP_ANONYMOUS)) {
  /* 
   * ここは要するに、file構造体を取得したりとバッキングストア
   * となるファイルを扱うためのデータを準備するのが主
   * よって、略 
   */
  } else if (flags & MAP_HUGETLB) {
  /* 本当は面白そうなところだけれど、概要をつかむことを優先するため略 */
  }   
  
  flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);

  retval = vm_mmap_pgoff(file, addr, len, prot, flags, pgoff);
out_fput:
  if (file)
    fput(file);
out:
  return retval;
}

linuxjm.osdn.jp