VisualStudio 技術解説 – 低レベル

.NETおよびWindowsの低レベルレイヤーの記事を主体に扱っています。

  • CLRや.NET BCLの内層
  • Win32 APIやその内部
  • WDK (Windows Driver)
  • ユーザーモードとカーネルモード

メモリを使用する、とは

physical-full本稿では、Windows(広く一般のOSでも、基礎的な知識としては適合する)の、「メモリ使用量」の取り扱いについてまとめたものです。特に、コードからメモリを使用するとはどういうことなのかがちょっとでも明らかになれば良いかなと思っています。

技術レベル:300~400

メモリを使用する、とは


.NET非同期処理(async-await)と例外の制御

asyncexception6Taskクラスとasync-awaitを使用して非同期処理を記述する場合の、例外にまつわるあれこれをまとめました。カーネルモードから発生する例外的な事象が、どのように.NET非同期例外として伝搬するのかを解説しています。

  • 表面上は殆ど変らない
  • 現実の動作
  • タスクコンテキストとスレッドコンテキスト
  • スタックウォーク
  • 処理されない例外

技術レベル:300~400

.NET非同期処理(async-await)と例外の制御


中華タブX89Winをアレする – 1円にもならない無駄な技術 Advent Calendar 2014

中華タブを買って、クリーンインストールする趣味ネタです。デバイスドライバの抽出コードを書いています。

技術レベル:200

中華タブX89Winをアレする – 1円にもならない無駄な技術 Advent Calendar 2014


Async訪ねて3000里

「Async訪ねて3000里」は、C# 5.0で導入された非同期メソッドのDeep-Diveな記事です。.NET上で非同期メソッドを呼び出してから、Windowsのカーネルモードを経由して、デバイスにI/Oが発行され、結果が非同期で返却される過程を網羅しています。何故、スレッド並列化ではなく、非同期駆動する必要があるのかが読み取ってもらえれば幸いです。

# 注意:本稿は初心者向けではありません

技術レベル:500

目次

Async訪ねて3000里 (1): ユーザーモードのターン
Async訪ねて3000里 (2): ファイルシステム・パーティションマネージャ・物理ディスクデバイスドライバ
Async訪ねて3000里 (3): ハードウェア割り込みとDPC
Async訪ねて3000里 (4): I/Oの完了とAPC
Async訪ねて3000里 (5): TaskCompletionSourceでTaskの継続へ
Async訪ねて3000里 (6): I/O完了ポートによるワーカースレッドの運用


継続飛行

「継続」とは何か、を、自分が経験してきたソフトウェアの知見を元に考えてみるシリーズです(現在連載執筆中)。

技術レベル:200~400

継続飛行 (1) – 原点


Beachhead implements new opcode on CLR JIT

.NET Core 1.0が公開された記念に、coreclrの実装に自分で考えた新しいOpCodeを加える方法について解説しました。.NET Fringe JAPAN 2016にて登壇して発表しました。

技術レベル:500

.NET Fringe JAPAN 2016も絡めた記事はこちら